gpt4 book ai didi

sparql - 两个资源之间的路径

转载 作者:行者123 更新时间:2023-12-02 09:53:53 25 4
gpt4 key购买 nike

是否可以通过 SPARQL 查询计算连接两个实例的边数?我想找到一条路。

最佳答案

您可以使用 SPARQL 的属性路径和聚合函数来计算唯一路径中的边数。例如,对于这样的数据,其中包含我们关心的两条路径(ac 有两条边,以及 d>g 具有三个边缘):

@prefix : <https://stackoverflow.com/questions/19587520/sparql-path-between-two-instance/> .

:a :p :b . # a to c is a path of length 2
:b :p :c .

:d :p :e . # d to g is a path of length 3
:e :p :f .
:f :p :g .

您可以使用如下查询。请注意,我使用了特定属性 :p,而不是变量。这是必要的,因为9.1 Property Path Syntax SPARQL 1.1 规范不允许属性路径中存在变量。

prefix : <https://stackoverflow.com/questions/19587520/sparql-path-between-two-instance/>

select ?start ?end (count(?mid) as ?length)
where {
values (?start ?end) { (:a :c) (:d :g) }
?start :p+ ?mid .
?mid :p* ?end .
}
group by ?start ?end

并得到如下结果:

$ sparql --query query.rq --data data.n3
------------------------
| start | end | length |
========================
| :d | :g | 3 |
| :a | :c | 2 |
------------------------

有关此处发生的情况的更完整描述可以在以下位置找到:

基本的想法是,如果你有一条从 ?start?end 的路径,那么你也有一堆不同的值?mid 的路径,从 ?start?mid 的路径以及从 ?mid 的路径?结束。您可以为 ?mid 选择的不同值的数量(如果您允许其中一个端点,而不允许另一个端点)正是路径的长度。 p>

关于sparql - 两个资源之间的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19587520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com