0

我正在尝试在 ML 8.0 上运行以下推理示例,但它在抱怨

“[1.0-ml] XDMP-UNDFUN: (err:XPST0017) 未定义函数 sem:sparql-update()”

谁能告诉我为什么会出现这个问题?

http://docs.marklogic.com/guide/semantics/inferencing?print=yes

import module namespace sem = "http://marklogic.com/semantics" 
  at "/MarkLogic/semantics.xqy";
let $sup :=
'
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

INSERT DATA
{ <someMedicalCondition> rdf:type <osteoarthritis> .
  <osteoarthritis> rdfs:subClassOf <bonedisease> . }'
return sem:sparql-update($sup)
; (: transaction separator :)

let $sq := 
'PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX d: <http://diagnoses#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?diagnosis
WHERE { ?diagnosis rdf:type <bonedisease>. } '

let $rs := sem:ruleset-store("rdfs.rules", sem:store())  
(: rdfs:rules is a predefined rule set in <MarkLogic-install-dir>/Config :)
return sem:sparql($sq, (), (), $rs)  
(: the rules specify that query for <bonedisease> will return the subclass <osteoarthritis> :)
4

1 回答 1

0

sem:sparql-update()功能从 8.0-1 开始可用。我刚刚完成了 MarkLogic 8.0-2 的全新安装并运行了上面的代码,它运行良好。这让我怀疑安装是否有问题。也许您从早期访问版本升级到 8.0-2?(不支持从早期访问版本升级,有时会发生奇怪的事情。)

无论如何,如果您的数据库中有有意义的数据,我会将其导出并进行全新安装(卸载;删除数据目录),然后重新导入您的数据。MLCP可以帮助您解决这个问题。

只要您执行这些步骤,您就可以升级到当前版本 8.0-3。

旁注:一些语义函数在XQuery中作为库实现;有些是用 C++ 实现的内置函数。这可能是您没有sparql-update()semantics.xqy库中看到的原因。

于 2015-07-23T14:48:54.027 回答