1

假设我需要从维基百科中获取有关所有山脉的内容。我的目标是显示初始段落,以及相应文章中的图片(例如Monte RosaVincent Pyramid

我开始了解 dbpedia,并通过一些研究发现它直接提供对 wiki 数据库的实时查询。

我有两个问题:

1 - 我发现很难制定我的查询。我不能玩iSPARQL。我尝试了以下查询,但它抛出错误,说无效的 xml。

SELECT DISTINCT ?Mountain FROM <http://dbpedia.org> WHERE {
  [] rdf:type ?Mountain 
}

2 - 我的要求是只显示至少有 1 张图片的山脉(我也需要显示这张图片)。现在我上面列出的那些都有图像,但我怎么能确定呢?此外,查看这两个示例,我发现 wiki 文章中有许多不同的字段 - 因此对于未来的扩展,获取它们可能非常困难。

我只是想拒绝那些没有足够数据或描述的人。

如何根据现有图片过滤掉山脉?

更新:

我更正的查询,解决了我的第一个问题:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?name ?description
WHERE {
?name rdf:type <http://dbpedia.org/ontology/Mountain>;
dbpedia-owl:abstract ?description .
}
4

1 回答 1

3

您还可以使用它的SPARQL 端点查询 dbpedia (不如 iSPARQL)。要了解有关要编写哪些查询的更多信息,请查看DBpedia 的数据集页面。那里的示例展示了如何根据 Wikipedia 类别选择页面。要选择Wikipedia Mountains 类别中的资源,您可以使用以下查询:

select ?mountain where {
  ?mountain a dbpedia-owl:Mountain .
}

SPARQL 结果

一旦您掌握了其中一些链接,您就可以在网络浏览器中查看它们并查看与它们关联的数据。例如,珠穆朗玛峰的页面显示了许多属性。要将结果限制在具有图像的页面,您可能对dbpedia-owl:thumbnail属性感兴趣,或者可能更好foaf:depiction。对于介绍性段落,您可能需要类似dbpedia-owl:abstract. 使用这些,我们可以增强以前的查询。以下查询在 Stratovolcanoes 类别中查找带有摘要和描述的事物。由于 StackOverflow 是一个英文网站,我将摘要限制为英文。

select * where {
  ?mountain a dbpedia-owl:Mountain ;
            dbpedia-owl:abstract ?abstract ;
            foaf:depiction ?depiction .
  FILTER(langMatches(lang(?abstract),"EN"))
}
LIMIT 10

SPARQL 结果

于 2013-05-23T18:50:50.140 回答