从文档到SPARQL变量(MarkLogic)的BIND值

时间:2019-03-14 12:42:11

标签: sparql bind 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)
}
',
(),
(),
()
)

但是,这导致了错误。因此,我非常感谢您提供有关完成此操作的任何建议。

1 个答案:

答案 0 :(得分:1)

SPARQL引擎无法访问文档,但是无论如何都有更好的解决方案。您可以为此使用Template Driven Extraction。它可以公开文档的SQL视图,也可以公开'Identify Triples in Documents'。这实际上意味着可以将特定值投影到三元索引中,并且可以像数据库中的任何其他RDF数据一样将其作为RDF数据进行访问。

HTH!