所以本质上你有一些 URI,例如http://example.org/foo
在一些数据中找到,你想尝试加载更多关于 RDF 的数据,但你不知道 URI 是否以 Jena 支持的格式提供数据?
为了找出可用的数据格式,您需要GET
手动向 URI 发出 HTTP 请求,传递以 RDF 为中心的Accept
标头(WebContent.defaultGraphAcceptHeader
提供 Jena 将用于请求的标头)。然后,您可以检查Content-Type
远程服务器返回的内容。
一旦你有了这个,你可以使用它来检查解析器,如下所示:
Lang lang = RDFLanguages.contentTypeToLang(contentType);
if (lang != null) {
// Language is known, is there an RDF parser for it?
ReaderRIOTFactory parserFactory = RDFParserRegistry.getFactory(lang);
if (parserFactory != null) {
// Parser registered
// Read your model
}
}
请注意,您可能希望直接从InputStream
您的GET
请求中读取模型,就好像您只是model.read()
对 URI 执行操作一样,您将强制 Jena 再次下载内容。
由于这种方法要求您无论如何都向远程资源发出 HTTP 请求,因此实际上只尝试一个model.read()
不管catch
并记录/忽略发生的错误可能会更有效。