4

我是 opendata 的新手,需要一些帮助。维基百科在这个 url 中有他们的 sparql 端点:http://dbpedia.org/sparql 现在 我需要编写 web 服务来从 dbpedia 获取一些 rdf 文件。我应该向这个端点发送什么来获取 rdf 文件?

4

3 回答 3

9

发送一个CONSTRUCT查询。一个小例子:

CONSTRUCT { ?s ?p ?o }
WHERE { ?s ?p ?o }
LIMIT 10

WHERE 子句的工作方式与 SELECT 类似,只是值填充了 CONSTRUCT 块作为一种模板。它非常灵活——您可以像这里一样复制语句,也可以将它们转换成完全不同的形状。

于 2012-03-08T22:22:59.443 回答
4

丹尼回答的是正确的通用答案。但是我不建议你对外部服务执行这样的查询,因为预计得到结果的时间;在具体资源上进行

但是当然,如​​果您想直接执行此操作而无需手动保存查询结果,例如使用 Python,代码将如下所示:

from SPARQLWrapper import SPARQLWrapper, XML

uri = "http://dbpedia.org/resource/Asturias"
query = "CONSTRUCT { <%s> ?p ?o } WHERE { <%s> ?p ?o }" % (uri, uri)

sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery(query)
sparql.setReturnFormat(XML)
results = sparql.query().convert()

file = open("output.rdf", "w")
results.serialize(destination=file, format="xml")
file.flush()
file.close()

当然,这几乎可以用任何编程语言来完成,如您所愿。

于 2012-07-17T10:37:38.087 回答
2

我想推荐您阅读 Bob DuCharme 的“Learning SPARQL”一书。它还涵盖了一些使用 DBPedia 端点的示例。

PS:这不是维基百科的 SPARQL 端点——它是 DBPedia SPARQL 端点(维基百科本身不提供自己的 SPARQL 端点 ATM)。但是,DBPedia 数据依赖于 Wikipedia 数据;)

于 2012-03-09T19:01:55.597 回答