使用rdflib为本体中的每个概念打印出个人

时间:2011-03-09 14:17:20

标签: python rdf semantic-web ontology rdflib

我有用OWL / RDF编写的本体(使用Protege)。这个本体已经填充了每个概念的一些个体。我使用rdflib和FuXi包将它移植到python中。我可以成功地解析我的Ontology并输入图表。现在我唯一需要做的就是打印出每个概念的所有个体。有谁知道我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

当你说出每个概念的所有个体时,我猜你的意思是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类。