假设我有以下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)
可能吗?
如何检索两个节点之间的路径长度?例如,给定组织层次结构,如何确定父组织和后代组织分离的距离?请考虑以下方案:
OrgA -hasSubOrganization-> OrgB, OrgC
这是一个非常简单的情况,我希望得到一个实体的所有直接子组织.因此路径长度为1.
OrgA -> OrgB -> OrgC
或一般情况
OrgA -> OrgB - - - - - - - - OrgZ
Run Code Online (Sandbox Code Playgroud)我想以递归方式遍历图表,并通过该hasSubOrganization属性查找属于另一个组织的每个组织.为了让所有子组织递归,我可以使用属性路径,例如+运算符:
OrgA hasSubOrganization+ ?subOrg
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有子组织,直到叶节点.但我的最终目标是构建组织层次结构,但有关"节点/步骤/级别/跳过子组织的数量"的信息将丢失.这意味着我无法为可视化重新创建组织结构.
除了子组织的名称之外,我如何捕获"节点数"信息?