目前我正在为我对sparql端点提出单一请求的每个实体做一些事情来获取它的所有链接,例如
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
}
我想提高效率,我想知道是否有办法通过一个请求获取多个实体的链接。我扔了一些东西,但这给了我一个包含所有链接的大清单。
SELECT * WHERE {
{<http://dbpedia.org/resource/San_Francisco> rdf:type ?link}
UNION
{<http://dbpedia.org/resource/Silicon_Valley> rdf:type ?link}
}
我可以以某种方式获取链接,因此我可以确定它们属于哪个实体吗?
答案 0 :(得分:2)
使用 SPARQL 1.1 values
关键字,您可以更简洁一点:
SELECT *
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
}
你想要一个独特的清单吗?也许对列表进行排序并添加英文标签(如果有的话)?
SELECT DISTINCT ?link ?llab
WHERE
{ VALUES ?entity { <http://dbpedia.org/resource/San_Francisco>
<http://dbpedia.org/resource/Silicon_Valley> }
?entity rdf:type ?link
OPTIONAL
{ ?link rdfs:label ?llab
FILTER ( lang(?llab) = "en" )
}
}
ORDER BY ?link