node.js - Marklogic Node.js API : How to get the document where an embedded triple lives?

标签 node.js sparql marklogic

我尝试插入以下测试文档:

db.documents.write(
    {
        uri: "/test/doc1.json",
        contentType: "application/json",
        collections: "test",
        content: {
            name : "Peter",
            hobby: "Sleeping",
            other: "Some other info",
            "triple": {
                "subject": {   
                    "datatype": "http://example.com/name/",  
                    "value": "Peter"   
                },   
                "predicate": {     
                    "datatype": "http://example.com/relation/",  
                    "value": "livesin"   
                },   
                "object": {     
                    "datatype": "http://example.com/location/",  
                    "value": "Paris"   
                }
            }
        }
    }
  ).
  result(function(response){
    console.log("Done loading");
  }); 

然后我查询如下:

var query = [
  'SELECT ?s ?p ?o' ,
  'WHERE { ?s ?p ?o }' ,
];
db.graphs.sparql('application/sparql-results+json', query.join('\n')
).result(function (result) {
  console.log(JSON.stringify(result, null, 2));
}, function(error) {
  console.log(JSON.stringify(error, null, 2));
});

结果向我显示了三元组的值,但是如果我还想获取嵌入三元组的整个文档怎么办?是否也可以按文档中的其他字段进行过滤?

最佳答案

没有办法检索包含 SPARQL 查询结果的文档,因为这些结果可能不是特定文档中存在的三元组(相反,它返回由 1 个或多个值组成的“解决方案”)。

如果您知道您正在寻找特定的三元组,并且您想要包含该三元组的文档,我通常会说使用 cts:triple-range-query ;但是,我没有找到通过 Node.js API(或通过 REST)来做到这一点的方法。考虑到这一点,我看到两个选择:

  1. 插入一个包含文档 URI 作为主语或客体的三元组,然后对该文档发出请求(如 @grtjn 建议)
  2. 创建一个 REST API 扩展(使用 JavaScript 或 XQuery),调用 cts:search,并将 cts:triple-range-query 作为查询的一部分;从 Node 调用该扩展

关于node.js - Marklogic Node.js API : How to get the document where an embedded triple lives?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968519/

相关文章:

javascript - 如何处理 Node.js 中的文件上传中断

node.js - 如何生成刷新 token ?

rdf - SPARQL查询同一属性下的数据

java - rdf :id 的 sparql 查询

xquery - 使用 mlcp、csv 文件和转换解析日期导入数据

javascript - 比较两个数组,去掉重复项

sparql - GraphDB - 具有两个连接的非常慢的 sparql 查询

search - Marklogic 对不同值的搜索

javascript - MarkLogic 使用 javascript 获取 Json 文档的所有嵌套字段名称

javascript - 在 electron-builder 中检索或指定输出文件名