首页 > 解决方案 > 将文档中的值绑定到 SPARQL 变量 (MarkLogic)

问题描述

我目前正在尝试查看是否可以从文档中提取某个值并将其绑定到 SPARQL 中的变量

例如,如果我在 MarkLogic 中有这样的文档。

/人/约翰

<person_data>
   <name>John</name>
   <age>25</age>
</person_data>

使用这些数据,我尝试了各种方法来绑定它,例如在 sem:sparql 中使用 XPath,如下所示

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

sem:sparql('
PREFIX fn : <http://www.w3.org/2005/xpath-functions>
SELECT *
WHERE {
?s ?p ?o .
BIND (fn:doc("/person/John")//name/text() AS ?name)
}
',
(),
(),
()
)

但是,这导致了错误。因此,我非常感谢为实现这一目标提供的任何建议。

标签: sparqlbindmarklogic

解决方案


SPARQL 引擎无法访问文档,但无论如何有更好的解决方案。您可以为此使用模板驱动提取。它可以公开文档的 SQL 视图,还可以“识别文档中的三元组”。这实际上意味着可以将特定值投影到三元组索引中,并且可以像数据库中的任何其他 RDF 数据一样作为 RDF 数据访问。


推荐阅读