尝试 运行 推理示例时未定义函数 sem:sparql-update()

Undefined function sem:sparql-update() while trying to run inference example

我正在尝试 运行 以下关于 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> :)

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

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

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

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