【发布时间】:2017-05-21 20:43:10
【问题描述】:
考虑一个 SPARQL 查询 q1 与单个头变量 ?y,即具有结果集 res(q1) 的 q1(?y) :- some pattern。
问题:
给定res(q1) 中的具体值vi,我想根据特定的总顺序函数(例如< 用于整数值)确定res(q1) 中的下一个值vi+1。
示例:
考虑对DBpedia SPARQL endpoint 提出以下查询。
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
select ?y where {
?x <http://dbpedia.org/ontology/wikiPageID> ?y
}
order by ?y
LIMIT 10
这将导致
现在给定值vi = 10,然后是vi+1 = 12,从结果中可以看出。
在我看来,这样做的唯一方法是使用外部编程 sn-p;获取有序 SPARQL 查询结果列表(使用ORDER BY),转到vi,然后检索应该是vi+1 的下一个值。
问题:
是否有任何解决方法可以在 SPARQL 中表达这一点而无需编码(如果 vi 是查询中的固定值,则没问题)?
【问题讨论】:
-
如果结果集是
9, 10, 10, 11怎么办? -
实际上,在我的情况下,情况并非如此。我选择不同的值。