gpt4 book ai didi

node.js - 将远程 sparql 端点 json 结果转换为 JSON-LD

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:48 24 4
gpt4 key购买 nike

我的本​​地机器上有一个 Sparql Endpoint(openrdf sesame)。我能够在 json 中获得查询(6)的结果(使用 sparql-client Node 模块)。现在,我需要将这个 json 转换为 json-ld,以便我可以轻松地在 jade 文件中显示它。如果不在我的 node.js 应用程序中使用 rdfstore-js,我该如何做到这一点?我确实读过 jsonld Node 模块。 json 数据非常大,所以我无法为其指定上下文。

rdfstore-js 的问题:由于端点在我的本地机器上,我面临着跨域问题。因此,我尝试将数据从远程 sparql 端点加载到存储中,但它不起作用。 https://github.com/antoniogarrote/rdfstore-js/issues/20

或者,我愿意接受可以在没有 json-ld 的情况下显示数据的建议。

编辑:阅读 Gregg 的建议后,我尝试使用 CONSTRUCT 查询。然而,芝麻服务器以文本/纯文本形式返回查询响应。我通过为 json-ld 提供接受 header 来尝试内容协商。但它会失败 - 给我“找不到可接受的文件格式”。

谢谢!


我现在正在使用 http nodejs 模块,如下所示。我得到的回复是文本/纯文本。有没有办法将纯文本转换为 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();

最佳答案

Sesame 不支持开箱即用的 JSON-LD 格式。您需要将与 Sesame 兼容的 JSON-LD 编写器库(例如 jsonld-java )安装到您现有的 Sesame 安装中。

为此,获取 jsonld-javajsonld-java-sesame jar 文件及其依赖项(不幸的是,这有点麻烦,因为您需要包括几个第三方依赖项,例如 Apache 库和 Jackson,以及 - 但您可以从 Maven Central 下载所有内容)并将它们放入 Tomcat 内的 Sesame 部署目录中。通常这个目录应该类似于 [TOMCAT_DIR]/webapps/openrdf-sesame/WEB-INF/lib。完成此操作后,您将需要重新启动 Tomcat for Sesame 以识别新编写器。

完成此操作后,提供正确的 Accept header (媒体类型 application/ld+json)应该会在图形查询中获得 JSON-LD 结果。

或者,您可以尝试使用 RDF 1.1 JSON Alternate Serialization格式,这并不是像 JSON-LD 这样的真正标准,但 受 Sesame 支持。媒体类型application/rdf+json.

关于node.js - 将远程 sparql 端点 json 结果转换为 JSON-LD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com