Как я могу использовать HasPropertyValueSelector в моем проекте? - PullRequest
0 голосов
/ 23 января 2019

Я новичок в 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 Ответ

0 голосов
/ 23 января 2019

Единственный шаг, который вам не хватает - это определить свои пространства имен, прежде чем создавать 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);
...