Java 如何从dbpedia链接或URL检索XML/RDF数据?

Java 如何从dbpedia链接或URL检索XML/RDF数据?,java,xml,rdf,semantic-web,Java,Xml,Rdf,Semantic Web,最近我一直在努力学习语义网。对于一个项目,我需要从给定的dbPedia链接检索数据。例如。但是当使用java.net.URLConnection检索数据时,我得到了html数据。如何从同一链接获取xml?我知道每个dbpedia页面都有下载XML的链接,但这不是我想要做的。提前感谢。请注意,资源的URI实际上是(使用资源,而不是页面)。理想情况下,您可以使用application/rdf+xml的Accept头请求该URI,并获取资源的rdf/xml表示。这就是BBC发布数据的方式(例如,请参阅

最近我一直在努力学习语义网。对于一个项目,我需要从给定的dbPedia链接检索数据。例如。但是当使用java.net.URLConnection检索数据时,我得到了html数据。如何从同一链接获取xml?我知道每个dbpedia页面都有下载XML的链接,但这不是我想要做的。提前感谢。

请注意,资源的URI实际上是(使用资源,而不是页面)。理想情况下,您可以使用application/rdf+xml的Accept头请求该URI,并获取资源的rdf/xml表示。这就是BBC发布数据的方式(例如,请参阅),但DBpedia没有这样做。即使您请求application/rdf+xml,最终也会得到重定向。您可以查看是否尝试使用HTTP客户端。例如,在Chrome中使用高级Rest客户端,我们得到了303重定向:

在web浏览器中,303 See Other响应代码会将您重定向到页面版本。理想情况下,您可以请求资源URI,并将accept头设置为application/rdf+xml,然后获取数据,但DBpedia的位置不太合适

因此,这意味着最简单的方法是注意,在的底部有一些带有下载链接的文本:

RDF()


最后一个链接的URL为。因此,您可以通过将页面资源更改为数据,并将.RDF附加到URL的末尾来获取RDF/XML。它不是最ReSTful的解决方案,但似乎是可用的。

从dbpedia访问数据的好方法是通过
Sparql
。您可以使用ApacheJena对

运行
sparql
查询,为什么您希望从这个URL获得另一种格式?您是否可以请求一个不同的URL(如果
http://dbpedia.org/page/Berlin
)?可能我错了,但是如果我需要从谓词URI(可能与dbpedia不同)获取数据,那么转换(将“page”更改为“data”,并在末尾附加.rdf)会怎样在某些答案中解释可能不起作用。@user3708999不清楚您在上一次评论中的意思。“需要从谓词URI获取数据”是什么意思?谢谢你的建议。但这不是我正在寻找的解决办法,事实上,这只是一种解决办法。我想要一些可以改变HTTP头
Accept:text/html的东西;q=0.5,应用程序/rdf+xml
通过UrlConnection。因此,我会自动重定向到RDF资源,而不是HTML@user3708999我明白,但有两个问题。1.URL实际上需要是dbpedia.org/resource/Berlin,而不是…/page/Berlin,因为这是实际的资源。2.虽然这将是最ReSTful的解决方案,而且这是一些提供商所做的(例如,BBC,请参阅更新以回答),但DBpedia并没有做到这一点。仅仅更改Accept标头并不能获得所需的数据。@user3708999我已更新了我的答案,以表明即使更改Accept标头,也无法获得所需的数据。我明白了。我没有意识到这一点。多谢各位much@user3708999相信我,我真的希望DBpedia能够更好地访问它的一些数据。看到如此多的语义网原则在起作用,然后又有如此多的原则被完全忽略,真是令人沮丧。