我的本地机器上有一个Sparql端点(Openrdf sesame)。我能够在json (使用sparql-客户机节点模块)中获得查询(6)的结果。现在,我需要把这个json转换成json-ld,这样我就可以很容易地将它显示在玉器文件中。在我的node.js应用程序中不使用rdfstore-js,我如何做到这一点?我确实读过关于jsonld节点模块的文章。json数据相当庞大,因此我无法为它指定上下文。
rdfstore-js的问题:因为端点在我的本地机器上,所以我面临跨域问题。因此,我试图将数据从远程sparql端点加载到存储中,但它无法工作。https://github.com/antoniogarrote/rdfstore-js/issues/20
或者,我愿意接受一些建议,我可以不用json-ld来显示数据。
编辑:在阅读了Gregg的建议后,我尝试使用构造查询。但是,sesame服务器以文本/纯文本的形式返回查询的响应。我试着进行内容协商,给出了json-ld的接受头。但是它会失败--给我“找不到可接受的文件格式”。
谢谢!
我现在正在使用模块,如下所示。我得到的回复是文本/普通的。有没有办法将纯文本转换成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();发布于 2014-02-24 11:23:29
Sesame不支持JSON格式。您需要在现有的Sesame安装中安装一个与Sesame兼容的JSON写入器库(如jsonld-java)。
为此,获取jsonld-java和jsonld-java-sesame jar文件以及它们的依赖项(不幸的是,这有点麻烦,因为您还需要包含几个第三方依赖项,比如Apache和Jackson --但您可以从Maven Central下载所有内容),并将它们放到Tomcat中的芝麻部署目录中。通常,这个目录应该类似于[TOMCAT_DIR]/webapps/openrdf-sesame/WEB-INF/lib。完成此操作后,需要重新启动Tomcat以使Sesame识别新的作者。
一旦完成,提供正确的Accept (媒体类型application/ld+json)应该可以在图形查询中获得JSON结果。
或者,您可以尝试使用RDF1.1JSON替代序列化格式,这并不是真正像JSON那样的标准,而是由Sesame支持的。媒体类型application/rdf+json。
发布于 2014-02-22 21:47:55
要从sparql(至少是Ruby版本)获得JSON,请使用构造或描述,而不是选择或询问。如果直接使用,则可以将生成的图形序列化为JSON-LD (在支持此功能的平台上,如Python、Ruby或Java),或者如果是远程连接,HTTP服务应该允许您使用application/ld+json对结果进行内容协商。
将SELECT或ASK转换为JSON更有问题,并且需要一个结果集词汇表。应用程序/sparql+json不易被直接解释为
https://stackoverflow.com/questions/21960492
复制相似问题