Sparql 在图中查找所有连接的 URI
Sparql to find all connected URIs in a graph
假设我有这个数据:
<http://foo/toast> <veg:two> <http://foo/id_A> .
<http://foo/apple> <veg:one> <http://foo/id_A> .
<http://foo/banana> <veg:one> <http://foo/id_A> .
<http://foo/banana> <veg:two> <http://foo/id_B> .
<http://foo/mango> <veg:one> <http://foo/id_B> .
我将如何使用 URI http://foo/apple 查询该数据,以获取连接到 <http://foo/apple> <veg:one>
连接到的同一对象的任何资源。喜欢 <http://foo/apple> <veg:one> <http://foo/id_A>
我希望查询 return:
<http://foo/toast> , <http://foo/banana> , <http://foo/mango>
我试过这样的查询,但没有成功:
SELECT * WHERE{
<http://foo/apple> ?p ?id .
?fr (<veg:one>)*/(<veg:two>)* ?otherId .
}
我不确定如何将 属性 路径连接回 ?id 。
我应该用反向路径 UNION 查询吗?这似乎有点矫枉过正,可能还有更简单的方法
我可以创建一个查询来取回吐司和香蕉 URI,但不能取回芒果 URI
谢谢!
如果我理解你的话,听起来你想要的资源路径以 veg:one 或 veg:two 开头,并按照 veg:one 或 [=14] 以苹果 ID 结尾=] 再次向后和向前。如果这是正确的,那么它看起来像
#-- [[ fruit -> id ]/[ id -> fruit ]]*
:apple ((veg:one|veg:two)/^(veg:one|veg:two))* ?other .
假设我有这个数据:
<http://foo/toast> <veg:two> <http://foo/id_A> .
<http://foo/apple> <veg:one> <http://foo/id_A> .
<http://foo/banana> <veg:one> <http://foo/id_A> .
<http://foo/banana> <veg:two> <http://foo/id_B> .
<http://foo/mango> <veg:one> <http://foo/id_B> .
我将如何使用 URI http://foo/apple 查询该数据,以获取连接到 <http://foo/apple> <veg:one>
连接到的同一对象的任何资源。喜欢 <http://foo/apple> <veg:one> <http://foo/id_A>
我希望查询 return:
<http://foo/toast> , <http://foo/banana> , <http://foo/mango>
我试过这样的查询,但没有成功:
SELECT * WHERE{
<http://foo/apple> ?p ?id .
?fr (<veg:one>)*/(<veg:two>)* ?otherId .
}
我不确定如何将 属性 路径连接回 ?id 。 我应该用反向路径 UNION 查询吗?这似乎有点矫枉过正,可能还有更简单的方法
我可以创建一个查询来取回吐司和香蕉 URI,但不能取回芒果 URI
谢谢!
如果我理解你的话,听起来你想要的资源路径以 veg:one 或 veg:two 开头,并按照 veg:one 或 [=14] 以苹果 ID 结尾=] 再次向后和向前。如果这是正确的,那么它看起来像
#-- [[ fruit -> id ]/[ id -> fruit ]]*
:apple ((veg:one|veg:two)/^(veg:one|veg:two))* ?other .