相关疑难解决方法(0)

是否可以在SPARQL中的RDF集合中获取元素的位置?

假设我有以下Turtle声明:

@prefix : <http://example.org#> .

:ls :list (:a :b :c)
Run Code Online (Sandbox Code Playgroud)

有没有办法获得集合中元素的位置?

例如,使用此查询:

PREFIX :     <http://example.org#>
PREFIX rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT ?elem WHERE {
 ?x :list ?ls .
 ?ls rdf:rest*/rdf:first ?elem .
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

--------
| elem |
========
| :a   |
| :b   |
| :c   |
--------
Run Code Online (Sandbox Code Playgroud)

但我想要一个查询来获取:

--------------
| elem | pos |
==============
| :a   |  0  |
| :b   |  1  |
| :c   |  2  |
--------------
Run Code Online (Sandbox Code Playgroud)

可能吗?

rdf sparql

22
推荐指数
2
解决办法
3935
查看次数

计算节点之间的路径长度?

如何检索两个节点之间的路径长度?例如,给定组织层次结构,如何确定父组织和后代组织分离的距离?请考虑以下方案:

  1. OrgA -hasSubOrganization-> OrgB, OrgC

    这是一个非常简单的情况,我希望得到一个实体的所有直接子组织.因此路径长度为1.

  2. OrgA -> OrgB -> OrgC

    或一般情况

    OrgA -> OrgB - - - - - - - - OrgZ
    
    Run Code Online (Sandbox Code Playgroud)

我想以递归方式遍历图表,并通过该hasSubOrganization属性查找属于另一个组织的每个组织.为了让所有子组织递归,我可以使用属性路径,例如+运算符:

OrgA hasSubOrganization+ ?subOrg
Run Code Online (Sandbox Code Playgroud)

这将为我提供所有子组织,直到叶节点.但我的最终目标是构建组织层次结构,但有关"节点/步骤/级别/跳过子组织的数量"的信息将丢失.这意味着我无法为可视化重新创建组织结构.

除了子组织的名称之外,我如何捕获"节点数"信息?

rdf sparql jena

9
推荐指数
1
解决办法
4071
查看次数

查找属性路径中的所有步骤

我是SPARQL的新手,我正在尝试创建一个属性路径查询,它将沿路径吐出每个中间步骤.到目前为止我有这个:

select ?object
where {
  <subjectURI> <isRelatedTo>+ ?object .
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个列表,列出了我的主题URI在整个路径中的所有关系,无论关系有多远(如果我错了,请纠正我).

但是,我想看看关系是如何组织起来的.就像是:

<subjectURI> <isRelatedTo> <object1>
<object1> <isRelatedTo> <object2>
<object2> <isRelatedTo> <object3>
Run Code Online (Sandbox Code Playgroud)

等等......这可能吗?

rdf sparql

6
推荐指数
2
解决办法
2187
查看次数

SPARQL:两个节点之间有路径吗?

是否存在一种良好的SPARQL查询,如果两个给定节点连接在单个/多个SPARQL端点上,我们可以回答这个问题吗?

假设我想检查两个节点

<http://wiktionary.dbpedia.org/resource/dog>
Run Code Online (Sandbox Code Playgroud)

<http://dbpedia.org/resource/Dog>
Run Code Online (Sandbox Code Playgroud)

连接了.如果是的话,我会对这条路感兴趣.

通过猜测我已经知道它们是通过标签连接的,所以像这样的查询返回长度为3的路径:

SELECT * WHERE {
  <http://wiktionary.dbpedia.org/resource/dog> ?p1 ?n1. 
  # SERVICE <http://dbpedia.org/sparql> {
    <http://dbpedia.org/resource/Dog> ?p2 ?n1 .
  # }
}
Run Code Online (Sandbox Code Playgroud)

试试自己

现在如果我还没有想法并希望自动完成并且任意长度和方向怎么办?

我知道SPARQL 1.1的属性路径,但它们似乎只适用于已知属性(http://www.w3.org/TR/sparql11-query/#propertypaths):

变量不能用作路径本身的一部分,只能用作结尾.

此外,我想要允许任何路径,因此路径上的谓词可能会改变.

我当前(因为我觉得很荒谬)的方法是查询所有可能的长度k达到极限的路径n.

倾倒不是我的选择,因为它有数十亿的三元组...我想使用SPARQL!

sparql

3
推荐指数
1
解决办法
2710
查看次数

标签 统计

sparql ×4

rdf ×3

jena ×1