创建的资源中三元组的 SPARQL CONSTRUCT 命令顺序

问题描述 投票:0回答:2

我的 SPARQL 代码来自 Learning SPARQL 书:

Contruct
{ 
?s dm:problem dm:prob29 . 
 dm:prob29 rdfs:label "Location value must be a URI." . 

}

WHERE
{
  ?s dm:location ?city .
  FILTER (!(isURI(?city)))
}

-- 创建一个如下文件:

dm:prob29  rdfs:label  "Location value must be a URI." .

d:item693  dm:problem  dm:prob29 .enter

为什么他首先创建

"Location value must be URI"
三重,而在
Contruct
命令中
dm:prob29
等首先显示?我不太确定这是如何工作的?

sparql
2个回答
1
投票

此类三元组的顺序是任意的,在

CONSTRUCT
查询输出的上下文中没有重要性或意义。


0
投票

虽然 @TallTed 是对的,RDF 图中的三元组顺序没有意义,但能够对它们进行排序仍然非常有用 - 例如在文本编辑器中比较两个图表。一种方法是使用 ntriples 作为序列化:

  1. 运行您的 SPARQL 构造查询
  2. 选择 ntriples 作为序列化格式(如果 SPARQL 编辑器提供)...
  3. 或使用类似
    riot --output=NTRIPLES a.ttl > a.nt
  4. 之类的东西将TTL或类似的n三元组转换
  5. 对 n 三元组进行排序:例如
    sort a.nt > a-sorted.nt
© www.soinside.com 2019 - 2024. All rights reserved.