java - 使用 OWL Anonymous Annotated Target 读取注释

标签 java jena owl

我正在使用 JENA 读取本体中公理中定义的注释属性。 例如,我有这个人及其附加公理

      <owl:NamedIndividual rdf:about="http://www.co-ode.org/ontologies/pizza/pizza.owl#firstPizza">
    <rdf:type rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#Pizza"/>
    <hasCountryOfOrigin>
        <Country>
            <hasCountryOfOrigin rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#Italy"/>
        </Country>
    </hasCountryOfOrigin>
</owl:NamedIndividual>
<owl:Axiom>
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string">123</owl:versionInfo>
    <owl:annotatedSource rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#firstPizza"/>
    <owl:annotatedProperty rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#hasCountryOfOrigin"/>
    <owl:annotatedTarget>
        <Country>
            <hasCountryOfOrigin rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#Italy"/>
        </Country>
    </owl:annotatedTarget>
</owl:Axiom>

这里我们对个体(firstPizza)和匿名个体之间的关系(第一个hasCountryOfOrigin)进行了注释。我能够读取公理并将它们解析为我自己的自定义数据结构。我的问题是:我找不到一种方法来判断firstPizaa中的匿名个体与公理中的匿名个体是同一个人。 JENA 为每个人提供了不同的 id。我如何判断它们是否相等?

最佳答案

如果这是您获得的输入,则您无法推断这两个节点是作者意图中的同一节点 - 解析规则表明它们应该是两个不同的节点。事实上,它们对于您所看到的属性具有相同的值,这一事实可能并不相关。

如果您要生成此输出,您应该能够在创建个体时指定相同的节点 ID。这应该会在空白个体上产生 rdf:nodeid 属性,然后解析器会将其解释为同一个体。

关于java - 使用 OWL Anonymous Annotated Target 读取注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41567043/

相关文章:

java - 如何将 ArrayList 读入 arg 构造函数

rdf - 使用 Jena API 构建删除资源的方法

rdf - 什么时候应该使用语义网技术?

rdf - DatatypeProperty、ObjectProperty 和 FunctionalProperty 之间有什么区别,我应该在什么时候使用它们?

rdf - 学习RDF/OWL的最佳方法是什么?

Java 数组 (java.lang.NullPointerException)

JavaFX 的东西不会引用

java - 如何在 HttpServlet、HttpServletRequest 中设置默认字符编码?

Java - Jena API - 输出文件

taxonomy - 本体中的相关类