У меня есть онтология, написанная на OWL/RDF (с использованием Protege). Эта онтология уже заполнена некоторыми индивидуумами для каждой концепции. Я портировал его на python, используя пакеты rdflib и FuXi. И я могу успешно разобрать свою онтологию и поместить в граф. Теперь единственное, что мне нужно сделать, это распечатать всех людей для каждой концепции. Кто-нибудь знает, как я могу это сделать?
распечатка отдельных лиц для каждой концепции в онтологии с использованием rdflib
Ответы (1)
Когда вы говорите всех людей для каждой концепции, я думаю, вы имеете в виду all the resources of rdf:type an specific class
. С rdflib
вы можете легко сделать это, пройдя по графу:
from rdflib import Graph
from rdflib import URIRef
g = Graph()
g.parse("ontology.owl")
aClass = URIRef("http://www.someuri.org/for/your/class")
rdftype = URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
for triple in g.triples((None,rdfType,aClass)):
print triple
(None,rdfType,aClass)
представляет собой ограничение для повторения графа g
. Установив любой из трех элементов тройки, вы ограничиваете себя любой комбинацией подлежащего, сказуемого или дополнения. В этом случае мы ограничиваемся только предикатом rdftype
и объектом aClass
.
Если вы хотите, чтобы все участники и все классы вы могли сделать:
for triple in g.triples((None,rdfType,None)):
print triple
В этом случае мы оставляем объект несвязанным для захвата любого класса OWL.
person
Manuel Salvadores
schedule
09.03.2011
@Hossein посмотри новую версию кода. Код, который я разместил ранее, работает только с последней версией rdlib, эта новая версия должна работать для вас. В противном случае дайте мне знать, какую версию Python и rdflib вы используете.
- person Manuel Salvadores; 09.03.2011