我有一堆资源URI,我需要与每个资源相关的属性值。对于单个资源,比如<http://my.url/res#resourceUri>
,我可以编写此查询:
PREFIX v: <http://my.url/res#>
SELECT ?name
WHERE {
<http://my.url/res#resourceUri> a v:t;
rdfs:label ?name .
}
对于多种资源,我可以使用 UNION
,如下所示:
PREFIX v: <http://my.url/res#>
SELECT ?name
WHERE {
{ <http://my.url/res#resourceUri> a v:t; rdfs:label ?name } UNION
{ <http://my.url/res#anotherResource> a v:t; rdfs:label ?name }
}
有没有办法编写第二个查询的更短,更精简的版本?
答案 0 :(得分:3)
您可以使用values。您的示例将写为
PREFIX v: <http://my.url/res#>
SELECT ?resource ?name WHERE {
values ?resource { <http://my.url/res#resourceUri>
<http://my.url/res#anotherResource> }
?resource a v:t;
rdfs:label ?name
}
问题不同,但how to use Union/or in sparql path with arbitrary length?的答案是相似的。