【问题标题】:Measuring distances among classes in RDF/OWL graphs在 RDF/OWL 图中测量类之间的距离
【发布时间】:2011-10-25 14:30:43
【问题描述】:

也许有人可以给我一个提示。是否可以测量属于同一本体的 2 个概念/类之间的距离?

例如,假设我有一个本体 天文课和望远镜课。两者之间有联系,但不是直接联系。 Astronomy 有一个父类叫 Science,Telescope 有一个父类叫 Optical Instrument,它属于它的父类 Instrumentation,它与一个叫 Empirical Science 的类相关,最后属于一个叫 Science 的类。

因此望远镜和天文学之间存在间接联系,我想找出从另一类开始到达一类所需的步数。

是否有一个简单的 SPARQL 查询可以解决这个问题?还是有更好的方法来完成这项工作?还是无法使用语义 Web 范式找出答案?

任何提示将不胜感激。

【问题讨论】:

    标签: graph rdf semantic-web sparql ontology


    【解决方案1】:

    SPARQL 提供了在图中搜索任意长度路径的能力,但没有机制告诉您该路径的长度。

    所以你可以这样做:

    SELECT * WHERE { ?s ex:property+ ?o }
    

    语法与正则表达式非常相似,因此您可以进行替代、限制基数等

    【讨论】:

      【解决方案2】:

      据我了解,SPARQL 不包含任何能够测量任意长度的间接链接的递归构造。您可以做的最好的事情是准备一组查询 distance_1(a, b), distance_2(a, b)... 以检查两个概念之间的特定距离。

      另一种选择是使用非 SPARQL 技术发现此信息,例如使用 RDFlib 在 Python 中编写图遍历算法。

      【讨论】:

        【解决方案3】:

        由于您明确提到您正在谈论类并且它们将位于同一本体中,因此可以安全地假设它们将始终连接(因为最终两者都将是“事物”的子类,对吗?)。另一方面,我在括号中提到的路径 (Class1 -> ... -> Thing

        据我所知,没有简单的 SPARQL 构造可以列出类之间的所有路径或最短路径。但是有些语义网三元存储自带图遍历算法,例如广度优先搜索或深度优先搜索,请参考:

        您可能还会发现以下项目的源代码非常有用:

        【讨论】:

          猜你喜欢
          • 2012-01-27
          • 2013-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-27
          • 2020-01-18
          • 1970-01-01
          相关资源
          最近更新 更多