使用 URI 查询资源
Query for resources using their URIs
我有一堆资源 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 }
}
有没有办法编写第二个查询的更短、更精简的版本?
您可以为此使用 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
}
问题不同,但的答案是相似的。
我有一堆资源 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 }
}
有没有办法编写第二个查询的更短、更精简的版本?
您可以为此使用 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
}
问题不同,但