2015-07-15 2 views
0

Je suis en train d'exécuter l'exemple inférence suivante sur ML 8.0 et il est plaignaisFonction non définie ETM: sparql-update() tout en essayant d'exécuter par exemple l'inférence

« [1,0 ml] XDMP-UNDFUN: (err : XPST0017) Fonction indéfinie sem: sparql-update() "

Quelqu'un peut-il donner une idée de la raison de ce problème?

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> :) 
+0

J'ai vérifié semantics.xqy, je ne vois pas la fonction sparql-update() définie ici. –

+1

Le code fonctionne bien dans 8.0-3. Quelle version utilisez-vous exactement? Exécutez xdmp: version() pour vérifier. – grtjn

+0

J'utilise la version 8.0-2 –

Répondre

0

La fonction sem:sparql-update() est disponible depuis 8,0 à 1. Je viens de faire une installation propre de MarkLogic 8.0-2 et j'ai exécuté le code que vous avez ci-dessus et cela a bien fonctionné. Cela me fait me demander s'il y avait un problème avec l'installation. Peut-être que vous êtes passé d'une version d'accès anticipée à la version 8.0-2? Quoiqu'il en soit, si vous avez des données significatives dans votre base de données, je voudrais l'exporter et faire une nouvelle installation (désinstaller, supprimer le répertoire de données), puis réimporter vos données. MLCP peut vous aider avec ceci.

Tant que vous effectuez ces étapes, vous pouvez également passer à la version actuelle, 8.0-3. Remarque: certaines des fonctions sémantiques sont implémentées dans XQuery en tant que bibliothèques; certains sont intégré fonctions implémentées en C++. C'est probablement pourquoi vous n'avez pas vu sparql-update() dans la bibliothèque semantics.xqy.