使用rdflib为本体中的每个概念打印个体
我有一个用OWL/RDF写的本体(ontology),是用Protege这个工具做的。这个本体里已经填充了一些每个概念的实例(individuals)。我把它转移到了Python中,使用了rdflib和FuXi这两个包。现在我可以成功地解析我的本体,并把它放进一个图形里。现在我唯一需要做的就是把每个概念的所有实例打印出来。有没有人知道我该怎么做?
1 个回答
4
当你提到每个概念的所有个体时,我猜你的意思是 所有 rdf:type 的特定类的资源
。使用 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 类。