考虑具有单个头部变量q1
的SPARQL查询?y
,即具有结果集q1(?y) :- some pattern
的{{1}}。
问题:
鉴于res(q1)
中的具体值vi
,我想根据特定的总订单函数确定res(q1)
中的下一个值vi+1
(例如{{1}对于整数值)。
示例:
考虑针对DBpedia SPARQL endpoint提出以下问题。
res(q1)
这将导致
现在给出值<
,然后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
,从结果中可以看出。
我唯一想做的就是使用外部编程代码段;获取有序SPARQL查询结果列表(使用vi = 10
),转到vi+1 = 12
,然后检索下一个应该为ORDER BY
的值。
问题:
是否有任何解决方法可以在SPARQL中表达这一点而无需编码,(如果vi
在查询中是固定值,则没问题)?
答案 0 :(得分:2)
如果可以假设您事先了解ORDER BY [Name] ASC
,则可以使用过滤器和限制来仅检索vi
vi+1
上面的查询会产生一个值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
filter(?y > 10)
}
order by ?y
LIMIT 1