从端点

时间:2018-02-20 12:51:39

标签: rdf semantic-web ontology

每个人,

一个简单的问题:是否可以检索端点的整个数据集(作为Turtle或XML)?

我尝试了一些事情,例如从SPARQL查询中下载整个数据但连接断开,如果没有中断,数据格式不正确(这是正常的,结果而不是原始数据)数据)。我在Python中尝试过感谢RDFlib,还要感谢Linux工具CUrl

我浏览网页找到一些有趣的东西,我发现:如果放入数据,我需要手动下载数据(比如带有转储的DBpedia)。我还发现了一些有效但无法检索整个数据的软件(它们只检索资源,如http://dbpedia.org/resource/ 某些)。

如果可以,我会很高兴听到那个。实际上,如果端点是最新的,则转储不一定。

编辑:

举个例子,我可以说这个命令行有效: curl -L -H "Accept:text/turtle" http://dbpedia.org/resource/Paris有效(至少在Linux发行版上)! 我想要的是,但对于整个DBpedia数据。 (在我的实例中,它显然不是dbpedia,我不想下载20GB的数据!)

克莱门特

2 个答案:

答案 0 :(得分:0)

我是SPARQL的新手,但理论上你可以使用此查询从端点获取所有三元组:

SELECT * WHERE { ?s ?p ?o . } 
LIMIT 100

我在DBpedia https://dbpedia.org/sparql中尝试了这个并且它有效,尽管您应该使用LIMIT将结果保持在合理的大小(即使您不使用LIMIT,DBpedia也有内部限制)端点以防止服务器过载)。在实践中可能有数百万的三元组,所以可能只想使用这种查询来更好地理解数据。

答案 1 :(得分:0)

我发现了如何做,在Python中:

from SPARQLWrapper import SPARQLWrapper,TURTLE

query = "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }"
sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery(query)
sparql.setTimeout(0)
sparql.setReturnFormat(TURTLE)
results = sparql.query().convert()
#print(results)
file = open("output.ttl", "wb")
file.write(results)
file.flush()
file.close()

未设置限制且它将失败。实际上,DBpedia的端点设置为120秒的执行超时。但是如果你发现一个超时适合你或没有超时的端点,这段代码就可以了。如果您在SPARQL查询结束时设置了限制,例如query = "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } LIMIT 100"

,它也会起作用