2015-07-15 7 views
0

Я пытаюсь запустить следующий логический вывод примера на ML 8.0 и жалуетсяНеопределенной функция семафора: SPARQL-обновление() при попытке запуска логического вывода примера

«[1,0 мл] 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> :) 
+0

Я проверил semantics.xqy, я не вижу там функции sparql-update(). –

+1

Код работает нормально в 8.0-3. Какую версию вы используете точно? Запустите xdmp: version() для проверки. – grtjn

+0

Я использую версию 8.0-2 –

ответ

0

sem:sparql-update() функция доступна с 8.0-1. Я просто сделал чистую установку MarkLogic 8.0-2 и запустил код, который у вас был выше, и он работал нормально. Это заставляет меня задаться вопросом, была ли проблема с установкой. Возможно, вы обновили версию раннего доступа до 8.0-2? (Обновления от ранних выпусков доступа не поддерживаются, а иногда случаются странные вещи.)

Независимо от того, если у вас есть значимые данные в вашей базе данных, я бы экспортировал их и выполнил чистую установку (удалить, удалить каталог данных) затем повторно импортируйте свои данные. MLCP может помочь вам в этом.

Пока вы делаете эти шаги, вы можете также перейти к текущей версии, 8.0-3.

Боковое примечание: некоторые из функций семантики реализованы в XQuery как библиотеки; некоторые из них - встроенные функции, реализованные на C++. Вероятно, поэтому вы не видели в библиотеке semantics.xqy библиотеки sparql-update().