распечатка отдельных лиц для каждой концепции в онтологии с использованием rdflib

У меня есть онтология, написанная на OWL/RDF (с использованием Protege). Эта онтология уже заполнена некоторыми индивидуумами для каждой концепции. Я портировал его на python, используя пакеты rdflib и FuXi. И я могу успешно разобрать свою онтологию и поместить в граф. Теперь единственное, что мне нужно сделать, это распечатать всех людей для каждой концепции. Кто-нибудь знает, как я могу это сделать?


person Hossein    schedule 09.03.2011    source источник


Ответы (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
comment
@Hossein посмотри новую версию кода. Код, который я разместил ранее, работает только с последней версией rdlib, эта новая версия должна работать для вас. В противном случае дайте мне знать, какую версию Python и rdflib вы используете. - person Manuel Salvadores; 09.03.2011