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

将文档中的值绑定到SPARQL变量(MarkLogic),sparql,bind,marklogic,Sparql,Bind,Marklogic,我目前正在尝试从文档中提取某个值并将其绑定到SPARQL中的变量 例如,如果我在MarkLogic中有这样一个文档 /个人/约翰 <person_data> <name>John</name> <age>25</age> </person_data> 约翰 25 使用这些数据,我尝试了各种方法来绑定它,比如在sem:sparql中使用XPath,如下所示 xquery version "1.0-ml"; i

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

例如,如果我在MarkLogic中有这样一个文档

/个人/约翰

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

约翰
25
使用这些数据,我尝试了各种方法来绑定它,比如在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)
}
',
(),
(),
()
)
xquery版本“1.0-ml”;
导入模块命名空间sem=”http://marklogic.com/semantics“at”/MarkLogic/semantics.xqy”;
sem:sparql
前缀fn:
挑选*
在哪里{
?s?p?o。
绑定(fn:doc(“/person/John”)//name/text()AS?name)
}
',
(),
(),
()
)

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

SPARQL引擎无法访问文档,但无论如何有一个更好的解决方案。你可以用这个。它可以在文档上公开SQL视图,但也可以。这实际上意味着可以将特定值投影到三重索引中,并且可以像数据库中的任何其他RDF数据一样作为RDF数据进行访问


导致的错误消息是什么?谢谢回答。然而,我想问,时间复杂性还是空间复杂性会受到影响?仅仅创建另一个主题、pred、triple document或以这种方式投影我的价值观会更有效吗@grtjnI还想问,是否可以将TDE嵌入其他值?例如在TDE中嵌入25,我喜欢使用TDE。它允许我以人类可读的xml或json收集信息,并使用TDE将SQL和SPARQL镜头放到其中。TDE生成的三元组与MarkLogic中的其他三元组性能相同,但可以避免嵌入sem:triple structures inline的麻烦,这只会增加磁盘空间。TDE允许使用所谓的变量和带有硬编码值的xpath表达式。但它不允许访问其他文档。它在索引时运行(提交的一部分),并且只在作用域内有当前文档。如果TDE只在其作用域内有当前文档,则是TDE作用域内文档的URI吗?如果是,如何访问URI以用作主题@grtjn