繁体   English   中英

测量RDF / OWL图中类之间的距离

[英]Measuring distances among classes in RDF/OWL graphs

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

例如,假设我有天文学课程和望远镜课程的本体论。 两者之间存在联系,但它不是直接链接。 天文学有一个名为Science的父类,而Telescope有一个名为Optical Instrument的父类,它属于名为Instrumentation的父类,它与一个名为Empirical Science的类有关,该类最终属于一个名为Science的类。

所以Telescope和Astronomy之间存在间接联系,我想找出从另一个类开始到达一个类所需的步骤数。

是否有一个简单的SPARQL查询可以解决这个问题? 或者有更好的方法来完成这项工作? 或者不可能使用语义Web范例找到它?

任何提示都将非常感激。

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

所以你可以这样做:

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

语法非常像正则表达式,所以你可以做替代,限制基数等

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

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

既然你明确提到你正在讨论类并且它们将在同一个本体中,那么可以安全地假设它们将始终是连接的(因为最终它们都将是“Thing”的子类,对吧?)。 另一方面,我在括号中提到的路径(Class1 - > ... - > Thing < - ... < - Class2)是一个微不足道的路径,所以我假设你想找到...所有现有的两个类之间的路径,换句话说,两个顶点之间的所有现有路径。 真的吗? 或者你在寻找最短的路径? 你的问题在这方面不是很清楚,你能澄清一下吗?

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

您还可以找到以下项目的源代码非常有用:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM