【问题标题】:Retrieving all the ancestors of a rdf:Class检索 rdf:Class 的所有祖先
【发布时间】:2009-09-22 07:47:55
【问题描述】:

想象以下分类法(无环图和有向图):

<my:Eukaryota> <rdfs:subClassOf> <my:Organism>.
<my:Mammal> <rdfs:subClassOf> <my:Eukaryota>.
<my:Primate> <rdfs:subClassOf> <my:Mammal>.
<my:HomoSapiens> <rdfs:subClassOf> <my:Primate>.
<my:Bacteria> <rdfs:subClassOf> <my:Organism>.
<my:Escherichia> <rdfs:subClassOf> <my:Bacteria>.

1) 是否可以使用 Jena OWL API 检查给定资源(例如 HomoSapiens)是否是“哺乳动物”的子类,而无需递归检索所有父节点?

2) 与SPARQL 相同的问题。

谢谢

【问题讨论】:

    标签: tree rdf semantic-web sparql jena


    【解决方案1】:

    如果您已经在使用 Jena,您可以使用 Pellet 的 SPARQL-DL query engine,它应该可以让您以本体感知的方式查询个人。

    或者,您可以使用 Jena 的 InfModel 代替 Model 接口,将推理器(和本体)附加到它,然后运行 ​​RobV 提及的查询。如果你愿意,你可以使用Pellet's reasoner。如果您只想进行推理,则无需使用OntModel

    【讨论】:

      【解决方案2】:

      1) 没有太多使用 Jena,但它的 OntTools 类似乎包含最低共同祖先的功能。如果智人与哺乳动物最不共同的祖先是哺乳动物,那么智人就是哺乳动物。虽然它在后台使用递归 subClassOf 检索。

      2) 在一般情况下,不,SPARQL 不支持任意深度树遍历。但是如果你知道 subClassOf 树的最大深度,那么你可以构造一个类似的查询

      ASK {
        OPTIONAL {
          :HomoSapiens rdfs:subClassOf :Mammal
        }
        OPTIONAL {
          :HomoSapiens rdfs:subClassOf ?c .
          ?c rdfs:subClassOf :Mammal
        }
        OPTIONAL {
          :HomoSapiens rdfs:subClassOf ?c1 .
          ?c1 rdfs:subClassOf ?c2 .
          ?c2 rdfs:subClassOf :Mammal
        }
      
        # ... add
      }
      

      【讨论】:

        【解决方案3】:

        laalto 是对的,几乎所有语义 Web 库都将通过递归 subClassOf 检索来实现。解决这个问题的唯一方法是拥有一些推理/推理引擎,当原始图被解析时,它会向图中添加额外的三元组

        例如,它会自动添加以下内容:

        <my:Eukaryota> <rdf:type> <my:Organism>.
        <my:Mammal> <rdf:type> <my:Organism>.
        <my:Mammal> <rdf:type> <my:Eukaryota>.
        <my:Primate> <rdfs:type> <my:Organism>.
        <my:Primate> <rdfs:type> <my:Eukaryota>.
        <my:Primate> <rdfs:type> <my:Mammal>.
        # etc...
        

        你在耶拿是怎么做到的我不确定,知道耶拿的其他人必须回答这个问题。

        至于 SPARQL,laalto 再次完全正确,但在某些情况下,如果您查询的 Triple Store 和关联的 SPARQL 端点具有一些推理能力,您可能能够执行如下简单查询

        PREFIX my: <http://yournamespace.com>
        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
        ASK { my:HomoSapiens rdf:type my:Mammal }
        

        【讨论】:

          【解决方案4】:

          SPARQL 1.1 具有任意深度图遍历。可以用于此。在BioStar查看相关问题

          问{ :HomoSapiens rdfs:subClassOf+ :哺乳动物 }

          【讨论】:

            猜你喜欢
            • 2011-07-23
            • 2014-01-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-10
            • 1970-01-01
            相关资源
            最近更新 更多