Как я могу использовать 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);