假设我需要从维基百科获取有关所有山脉的内容。我的目标是显示初始段落和相应文章中的图像(例如罗莎山 and 文森特金字塔.
我开始了解 dbpedia,并通过一些研究发现它直接提供对 wiki 数据库的实时查询。
我有两个问题:
1 - 我发现很难如何表达我的查询。我不能玩iSPARQL。我尝试执行以下查询,但它抛出错误,指出 xml 无效。
SELECT DISTINCT ?Mountain FROM <http://dbpedia.org> WHERE {
[] rdf:type ?Mountain
}
2 - 我的要求是仅显示至少有 1 张图像的山脉(我也需要显示该图像)。现在我上面列出的都有图像,但我怎么确定呢?另外,查看这两个示例,我发现 wiki 文章中的许多字段有所不同 - 因此对于将来的扩展,获取它们可能非常困难。
我只是想拒绝那些没有足够数据或描述的。
如何根据现有图片过滤出山脉?
UPDATE:
我更正后的查询解决了我的第一个问题:
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 .
}
您还可以使用其查询 dbpediaSPARQL端点(没有 iSPARQL 那么花哨)。要了解有关要编写哪些查询的更多信息,请查看DBpedia 的数据集页面。那里的例子展示了如何根据维基百科类别选择页面。要选择资源中的维基百科山脉类别,您可以使用以下查询:
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 结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)