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 に答える