将文档中的值绑定到 SPARQL 变量 (MarkLogic)

BIND values from Documents to a SPARQL Variable (MarkLogic)

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

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

/person/John

<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)
}
',
(),
(),
()
)

然而,这导致了一个错误。因此,我非常感谢有关完成此任务的任何建议。

SPARQL 引擎无法访问文档,但无论如何有更好的解决方案。您可以使用 Template Driven Extraction for this. It can expose an SQL view on documents, but also 'Identify Triples in Documents'。它实际上意味着可以将特定值投影到三重索引中,并且可以像数据库中的任何其他 RDF 数据一样作为 RDF 数据访问。

HTH!