大家,
一个简单的问题是:是否可以检索 endpoints 的整个数据集(作为Turtle或XML)?
我尝试过一些事情,例如从SPARQL查询下载整个数据,但连接断开,如果没有中断,数据格式不正确(这是正常的,它是结果,而不是原始数据) . 我在Python中尝试过感谢RDFlib,并感谢Linux工具CUrl
我在网上浏览以找到一些有趣的东西,我发现:如果放入数据,我需要手动下载数据(比如带有转储的DBpedia) . 我还发现了一些有效但无法检索整个数据的软件(它们只检索资源,比如http://dbpedia.org/resource/) .
如果可以的话,我会很高兴听到那个 . 实际上,如果 endpoints 是最新的,则转储不一定是 .
EDIT :
举个例子,我可以说这个命令行有效: curl -L -H "Accept:text/turtle" http://dbpedia.org/resource/Paris
有效(至少在Linux发行版上)! What I want 就是这样,但对于整个DBpedia数据 . (在我的实例中,'s not dbpedia obviously, I don'想要下载20GB的数据!)
克莱门特
2 回答
我是SPARQL的新手,但 in theory 您可以使用此查询从 endpoints 获取所有三元组:
我在DBpedia https://dbpedia.org/sparql中尝试了这个并且它可以工作,虽然您应该使用LIMIT将结果保持在合理的大小(即使您不使用LIMIT,DBpedia endpoints 也有内部限制以防止服务器过载) . 在实践中可能有数百万的三元组,所以可能只想使用这种查询来更好地理解数据 .
我发现了如何做,在Python中:
没有设置限制,并且 it'll fail 在那里 . 实际上,DBpedia的 endpoints 设置为120秒的执行超时 . 但是如果你发现一个超时适合你或没有超时的 endpoints ,这段代码就可以了 . 如果在SPARQL查询结束时设置限制,它也可以工作,如
query = "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } LIMIT 100"