在单个sparql查询中获取多个uri的标签

1 sparql

如果我们有一组URI,我们如何在一个SPARQL QUERY中获得所有标签的标签?

即。给定uri1,uri2,uri3 ...我们想要查询给我们

uri1标签1

uri2标签2

uri3标签3

虽然我们可以发出单独的查询来获取每个uri的标签,但理想情况下,我们还是希望避免提出大量请求。

我试图从构造,联合和子查询方面进行思考,但收效甚微。

谢谢!

cyg*_*gri 5

您没有说标签在RDF数据中是如何表达的,所以我假设它们通过rdfs:label属性连接到URI 。那么查询就是这样的:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?uri ?label { ?uri rdfs:label ?label }
Run Code Online (Sandbox Code Playgroud)

如果只需要特定URI的标签,则可以通过过滤?uri变量来实现:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?uri ?label {
    ?uri rdfs:label ?label
    FILTER (?uri = ex:resource1 || ?uri = ex:resource2 || ?uri = ex:resource3)
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您的商店支持SPARQL 1.1:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?uri ?label {
    ?uri rdfs:label ?label
    FILTER (?uri IN (ex:resource1, ex:resource2, ex:resource3))
}
Run Code Online (Sandbox Code Playgroud)

  • 在SPARQL 1.1中略胜一筹:FILTER(?uri IN(ex:resource1,ex:resource2,ex:resource3)) (2认同)