Как я могу использовать HasPropertyValueSelector в моем проекте?

Я новичок в dotNetRDF, и у меня есть проблема, может быть, пространства имен или рамки.

Хотя я добавляю пространства имен в свой проект, следующий код не работает.

Системе выдана ошибка, что пространство имен не найдено.

HasPropertyValueSelector sel = new HasPropertyValueSelector(rdfType, carnivore);

Все коды приведены ниже;

using System;
using System.Collections.Generic;
using VDS.RDF;
using VDS.RDF.Parsing;
using VDS.RDF.Query;
        static void Main(string[] args)
        {
            Graph g = new Graph();
            UriLoader.Load(g, new Uri("http://example.org/animals"));
            IUriNode rdfType = g.CreateUriNode("rdf:type");
            IUriNode carnivore = g.CreateUriNode("ex:Carnivore");

           ***HasPropertyValueSelector sel = new HasPropertyValueSelector(rdfType, carnivore);***
           IEnumerable<Triple> carnivores = g.GetTriples(sel);

            Graph ourlist = new Graph();
            ourlist.NamespaceMap.AddNamespace("ex", new Uri("http://example.org/"));

            IUriNode rdfType2 = ourlist.CreateUriNode("rdf:type");
            IUriNode animal = ourlist.CreateUriNode("ex:Animal");

            foreach (Triple t in carnivores)
            {

               ourlist.Assert(new Triple(Tools.CopyNode(t.Subject, ourlist), rdfType2, animal));
            }
        }
    }
}

1 ответ

Единственный шаг, который вам не хватает - это определить свои пространства имен, прежде чем создавать узлы URI, которые их используют. Это делается с помощью NamespaceMapper, который находится в интерфейсе IGraph. Вы можете прочитать больше об этом здесь, но простой пример будет:

IGraph g = new Graph();

//Define the Namespaces we want to use
g.NamespaceMap.AddNamespace("rdf", new Uri("http://www.w3.org/1999/02/22-rdf-syntax-ns#"));
g.NamespaceMap.AddNamespace("ex", new Uri("http://example.org/"));

//Define the same Triple as the previous example
UriNode rdfType = g.CreateUriNode("rdf:type");
UriNode exCarnivore = g.CreateUriNode("ex:Carnivore");

var carnivores = g.GetTriplesWithPredicateObject(rdfType, exCarnivore);
Другие вопросы по тегам