gpt4 book ai didi

neo4j - SPARQL中的任意路径长度查询

转载 作者:行者123 更新时间:2023-12-04 17:35:10 26 4
gpt4 key购买 nike

是否可以在 SPARQL 中进行任意长度的路径查询。假设我有一个 Neo4j 商店,它有一个只代表 PARENT_OF 关系的图(例如考虑一个家谱)。获取一个人的所有祖先的密码查询看起来像

start n (some node from index query) match n<-[:PARENT_OF*]-k return k

如果这个新存储被表示为一个基于 RDF 的三元组存储,这个查询在 SPARQL 中会是什么样子。这甚至可能吗。

最佳答案

如果你有这样的数据:

@prefix : <http://stackoverflow.com/q/22210295/1281433/> .

:a :parentOf :b .
:b :parentOf :c .
:c :parentOf :d .

那么你可以使用这样的查询,使用 SPARQL 1.1 的 property paths :

prefix : <http://stackoverflow.com/q/22210295/1281433/>

select ?ancestor ?descendent where {
?ancestor :parentOf+ ?descendent
}

得到这样的结果:

-------------------------
| ancestor | descendent |
=========================
| :a | :b |
| :a | :c |
| :a | :d |
| :b | :c |
| :b | :d |
| :c | :d |
-------------------------

请注意,使用 *允许该关系出现零次,并将每个节点与其自身相关联。如果你想让每件事都成为它自己的祖先,那么你可以替换 +*在我的查询中。

关于neo4j - SPARQL中的任意路径长度查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210295/

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