【问题标题】:Updating embedded triples using xquery in MarkLogic在 MarkLogic 中使用 xquery 更新嵌入式三元组
【发布时间】:2015-09-10 07:58:05
【问题描述】:

我尝试使用 xquery 更新 marklogic 中的嵌入式三元组,但它似乎不适用于嵌入式三元组,但是相同的查询适用于其他三元组 你能告诉我在对嵌入式三元组执行更新时是否需要指定其他选项。 我使用的代码是

  xquery version "1.0-ml";
  import module namespace sem = "http://marklogic.com/semantics" 
  at "/Marklogic/semantics.xqy";

  let $triples := cts:triples(sem:iri("http://smartlogic.com/document#2012-10-26_DNB.OL_(Citi)_DNB_ASA_(DNB.OL)__Model_Update.61259187.xml"),()())
  for  $triple in  $triples
  let $node := sem:database-nodes($triple)
  let $replace := 
  <sem:triple>
  <sem:subject>http://www.example.com/products/1001_Test
  </sem:subject>
   {$node/sem:predicate, $node/sem:object}
  </sem:triple>

  return $node ! xdmp:node-replace(., $replace)

我的文档包含以下三元组

  <sem:triples xmlns:sem="http://marklogic.com/semantics">
  <sem:triple>
  <sem:subject>http://smartlogic.com/document#2012-10-26_DNB.OL_(Citi)_DNB_ASA_(DNB.OL)__Model_Update.61259187.xml</sem:subject>
    <sem:predicate>http://www.smartlogic.com/schemas/docinfo.rdf#cik</sem:predicate>
  <sem:object>datatype="http://www.w3.org/2001/XMLSchema#string</sem:object>
  </sem:triple>
 </sem:triples>

我希望这个特定的主题变成这样的东西

  <sem:subject>http://www.example.com/products/1001_Test</sem:subject>

但是当我使用 xquery 更新它时,它不会改变任何东西,文档中嵌入的三元组保持不变。 因为当我试图查看是否有任何结果更改为我指定的主题时,它没有返回任何结果。

我使用以下查询进行测试。

  SELECT *
  WHERE {
  <http://www.example.com/products/1001_Test> ?predicate ?object
  }

【问题讨论】:

  • 1) 你似乎在结束标签sem:subject 之前有一个额外的换行符 2) 你怎么知道它不起作用?查询完成后文档中有什么内容?
  • 我删除了额外的换行符,它仍然没有改变任何东西,我已经更新了帖子,请查看它。
  • 1) 您的数据库是否启用了三重索引? 2) 文档中是什么? (当您使用doc()//sem:triples 查看XML 元素本身时)

标签: xquery marklogic triplestore triples document-store


【解决方案1】:

当您请求支持三元组的数据库节点时,您需要添加选项'all'sem:database-nodes($triple, 'all')

老实说,我不是 100% 确定原因,但我认为这是因为您的 sem:triples 元素不是它出现的文档的根元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多