我的本地计算机上有一个Sparql端点(openrdf sesame)。我能够在json中获取查询结果(6)(使用sparql-client节点模块)。现在,我需要将这个json转换为json-ld,以便我可以轻松地在jade文件中显示它。如何在我的node.js应用程序中不使用rdfstore-js的情况下执行此操作?我确实读过有关jsonld节点模块的内容。 json数据非常庞大,所以我无法为它指定上下文。
rdfstore-js的问题: 由于端点位于我的本地计算机上,因此我面临跨域问题。因此,我尝试将数据从远程sparql端点加载到存储中,但它不起作用。 https://github.com/antoniogarrote/rdfstore-js/issues/20
或者,我愿意接受我可以在没有json-ld的情况下显示数据的建议。
编辑:在阅读Gregg的建议后,我尝试使用CONSTRUCT查询。但是,芝麻服务器 以text / plain的形式返回查询的响应。我通过为json-ld提供accept头来尝试内容协商。但它会失败 - 给我'找不到可接受的文件格式'。
谢谢!
我现在正在使用http nodejs模块,如下所示。我得到的回复是text / plain。有没有办法将纯文本转换为json-ld?
var queryString = syllPrefix+" CONSTRUCT { ?uri ?p ?o } where { ?uri a syll:Person . ?uri ?p ?o}";
var encodedquerystring = encodeURIComponent(queryString);
var options = {
host: 'localhost',
port: 8080,
path: '/openrdf-sesame/repositories/myrepo?query=' +encodedquerystring,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/plain',
},
};
var req = http.get(options, function(res) {
// console.log("Got response: " + res.statusCode);
// console.log('HEADERS: ' + JSON.stringify(res.headers));
var data = "";
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
console.log (data);
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
req.end();
答案 0 :(得分:4)
要从sparql-client(至少是Ruby版本)获取JSON-LD,请使用CONSTRUCT或DESCRIBE而不是SELECT或ASK。如果你直接使用,你可以将结果图序列化为JSON-LD(在支持它的平台上,如Python,Ruby或Java),或者如果它是远程连接,HTTP服务应该允许你进行内容协商使用application / ld + json进行结果。
将SELECT或ASK转换为JSON-LD更成问题,并且需要结果集词汇表。 application / sparql + json不容易直接解释为
答案 1 :(得分:4)
Sesame不支持开箱即用的JSON-LD格式。您需要在现有的Sesame安装中安装与Sesame兼容的JSON-LD编写器库(例如jsonld-java)。
要做到这一点,请获取jsonld-java
和jsonld-java-sesame
jar文件及其依赖项(遗憾的是,这是一项繁琐的工作,因为您需要包含多个第三方依赖项,例如Apache库和杰克逊,但你可以从Maven Central下载所有内容并将它们放入Tomcat内的Sesame部署目录中。通常,此目录应类似于[TOMCAT_DIR]/webapps/openrdf-sesame/WEB-INF/lib
。完成此操作后,您需要重新启动Tomcat for Sesame才能识别新编写器。
完成此操作后,提供正确的Accept标头(媒体类型application/ld+json
)可以获得图表查询的JSON-LD结果。
或者,您可以尝试使用RDF 1.1 JSON Alternate Serialization格式,这不是像JSON-LD那样的标准,但Sesame支持 。媒体类型application/rdf+json
。