如何查询多个实体的特定 DBpedia Resource/Page?
How to query a particular DBpedia Resource/Page for multiple entities?
我有许多 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 工作。
另外,有没有比我现在的方法更好的查询方式?
当然可以将它们组合起来,简单的方法就是将两个 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')
}
我有许多 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 工作。
另外,有没有比我现在的方法更好的查询方式?
当然可以将它们组合起来,简单的方法就是将两个 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')
}