我有许多DBpedia页面的链接,如:
http://dbpedia.org/resource/Harry_Potter
http://dbpedia.org/resource/Twilight_(series)
http://dbpedia.org/resource/Bible
http://dbpedia.org/resource/Manga
我想为每一个获取抽象和缩略图实体。
我可以使用以下方式单独获取它们:
对于摘要:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX res: <http://dbpedia.org/resource/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label
WHERE { <http://dbpedia.org/resource/Harry_Potter>
dbo:abstract ?label . FILTER (lang(?label) = \'en\')}
缩略图:
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX res: <http://dbpedia.org/resource/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?thumbnail
WHERE { <http://dbpedia.org/resource/Harry_Potter>
dbo:thumbnail ?thumbnail}
是否可以将上述两个查询合并为一个查询。我是SPARQL的新手,无法让it工作。
此外,有没有比我目前的方法更好的查询方式?
答案 0 :(得分:3)
当然可以将它们组合起来,这样做的简单方法就是连接两个WHERE
的主体并相应地调整SELECT
:
SELECT ?label ?thumbnail
WHERE {
<http://dbpedia.org/resource/Harry_Potter> dbo:abstract ?label .
FILTER (lang(?label) = 'en')
<http://dbpedia.org/resource/Harry_Potter> dbo:thumbnail ?thumbnail .
}
如果您想要更简洁,可以使用;
将两个三元组合并为同一主题:
SELECT ?label ?thumbnail
WHERE {
<http://dbpedia.org/resource/Harry_Potter>
dbo:abstract ?label ;
dbo:thumbnail ?thumbnail .
FILTER (lang(?label) = 'en')
}
由于您定义了res:
前缀,因此您可以使用它来缩短URI:
SELECT ?label ?thumbnail
WHERE {
res:Harry_Potter
dbo:abstract ?label ;
dbo:thumbnail ?thumbnail .
FILTER (lang(?label) = 'en')
}