nodes - 计算节点之间的路径长度(具有未知的边)?

标签 nodes rdf sparql

问题是如何在不知道边类型的情况下使用 sparql 查询计算三重存储 (RDF) 中两个节点(概念)之间的距离。本质上,就是使用Dijkstras_algorithm 找到三重存储中两个概念之间的较短路径。

如果我们知道egde的类型,就有可能: Calculate length of path between nodes?

另一种解决方案是使用类距离(如果概念不是从主类扩展而来,则不起作用): Measuring distances among classes in RDF/OWL graphs

示例:

找出 http://bioinformatics.ua.pt/coeus/resource/uniprot_P01008 之间较短的距离和 http://bioinformatics.ua.pt/coeus/resource/go_GO:0005576

最佳答案

您可以使用 Calculate length of path between nodes? 中使用的相同技术,但您需要使用通配符而不是特定属性。图案(<>|!<>)是一个通配符,因为每个属性都是 <>或者它不是。您还可以使用(:|!:) ,但这只有在您有 : 时才有效。已定义前缀。 (<>|!<>)永远会起作用。这是一个例子:

@prefix : <urn:ex:>

:a :p :b .
:b :q :c .
:c :r :d .
:d :s :e .
prefix : <urn:ex:>

select ?start ?end (count(?mid) as ?length) {
  ?start (<>|!<>)* ?mid .
  ?mid (<>|!<>)+ ?end .
}
group by ?start ?end
------------------------
| start | end | length |
========================
| :a    | :b  | 1      |
| :a    | :c  | 2      |
| :a    | :d  | 3      |
| :a    | :e  | 4      |
| :b    | :c  | 1      |
| :b    | :d  | 2      |
| :b    | :e  | 3      |
| :c    | :d  | 1      |
| :c    | :e  | 2      |
| :d    | :e  | 1      |
------------------------

关于nodes - 计算节点之间的路径长度(具有未知的边)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048247/

相关文章:

java - ExecuteBatch() 未更新

xml - 获取 xml :lang attribute with a sparql request

sparql - DELETE/INSERT 操作可用于删除包含空白节点的三元组 : how?

ruby-on-rails - Ruby (on Rails) 支持 Web 服务组合和 OWLS?

sparql - 维基数据导入 virtuoso

c - 在循环列表中添加节点

r - 如何控制ggraph中的节点颜色?

java - 用于访问列表的所有节点的循环条件

rdf - RDF中具体化的解释

sparql - 如何使用SPARQL查找图中的叶节点?