【问题标题】:printing out individuals for each concept in an ontology using rdflib使用 rdflib 为本体中的每个概念打印出个体
【发布时间】:2025-12-16 15:40:01
【问题描述】:

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

【问题讨论】:

    标签: python rdf semantic-web ontology 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 类。

    【讨论】:

    • @Hossein 查看新版本的代码。我之前发布的代码只适用于最新版本的rdlib,这个新版本应该适合你。否则,请告诉我您正在运行哪个版本的 Python 和 rdflib。