我是opendata的新手,需要一些帮助。维基百科在这个网址中有他们的sparql端点: http://dbpedia.org/sparql 现在我需要编写webservice来从dbpedia获取一些rdf文件。我应该向此端点发送什么来获取rdf文件?
答案 0 :(得分:9)
发送CONSTRUCT个查询。一个小例子:
CONSTRUCT { ?s ?p ?o }
WHERE { ?s ?p ?o }
LIMIT 10
WHERE子句的工作原理与SELECT类似,只是值将CONSTRUCT块填充为一种模板。它非常灵活 - 您可以将语句复制到此处,也可以将它们转换为完全不同的形状。
答案 1 :(得分:4)
Danny回答的是正确的通用答案。但是我不建议你对外部服务进行这样的查询,因为预计会得到结果的时间;通过具体资源来做这件事
但是当然如果您想直接执行此操作而无需手动保存查询结果,例如使用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()
当然,这可以使用几乎任何编程语言来完成,如您所愿。
答案 2 :(得分:2)
我想建议你阅读Bob DuCharme的"Learning SPARQL"书。它还介绍了一些使用DBPedia端点的示例。
PS:这不是维基百科的SPARQL端点 - 它是DBPedia SPARQL端点(维基百科本身不提供自己的SPARQL端点ATM)。但是,DBPedia数据依赖于维基百科数据;)