Как заставить мой сервер Fuseki читать правила вывода из файла?

Я новичок в Apache Jena и Fuseki. Я установил Apache Jena Fuseki как автономный сервер и пытаюсь определить очень простое правило вывода, и, похоже, я неправильно его настраиваю. Мой файл конфигурации config_new.ttl выглядит так:

@prefix :        <#> .
@prefix fuseki:  <http://jena.apache.org/fuseki#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix ao:      <http://ao.com> .

[] rdf:type fuseki:Server ;
   fuseki:services (
       <#mainservice>
   ) .

<#mainservice> rdf:type fuseki:Service ;
    fuseki:name                       "mainservice" ;  
    fuseki:serviceQuery               "sparql"      ;   
    fuseki:serviceQuery               "query"       ;   
    fuseki:serviceUpdate              "update"      ;   
    fuseki:serviceUpload              "upload"      ;   
    fuseki:serviceReadWriteGraphStore "data"        ;   
    fuseki:serviceReadGraphStore      "get"         ;   
    fuseki:dataset                    <#ao>         ;
    .

### In-memory, initially empty.
## This database set-up allows OWL inference.
<#ao> rdf:type ja:MemoryModel ;
                ja:defaultGraph <#infGraph> .

<#infGraph>  rdf:type ja:InfModel ;
             ja:reasoner [ ja:rulesFrom <file:inference_rules.rules> ; ] .

Я запускаю сервер из консоли с помощью:

./fuseki-server --update --file=config_new.ttl /mainservice

Он запускается, и я могу загрузить некоторые данные и успешно запросить их с веб-страницы, но, похоже, он не читает файл inference_rules.rules. Даже если имя файла неправильное, или файл не существует, или содержимое файла неверно, я не получаю никаких ошибок и правило не работает.

Что мне не хватает?

Здесь есть второй вопрос. Видимо, я еще не там, но позвольте мне разместить здесь содержимое inference_rules.rules. Я пытаюсь определить простое транзитивное правило: если (A — это B) и (B — это C), то A — это C:

@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix ao: http://ao.com/

[isATransitive:
(?a ao:isA ?b)
(?b ao:isA ?c)
                 ->
                 (?a ao:isA ?c)
         ]

Я правильно определил?


person Jimo    schedule 22.03.2017    source источник


Ответы (1)


В той части, где говорится:

<#ao> rdf:type ja:MemoryModel ;
                ja:defaultGraph <#infGraph> .

<#infGraph>  rdf:type ja:InfModel ;
             ja:reasoner [ ja:rulesFrom <file:inference_rules.rules> ; ] .

<#ao> должен быть типа ja:RDFDataset, а не модели.

<#ao> rdf:type ja:RDFDataset ;

person AndyS    schedule 22.03.2017
comment
Не работает :( . Неважно, существует ли файл inference_rules.rules и что в нем находится. Правило не загружается. - person Jimo; 22.03.2017
comment
Мне кажется, что-то не так с ‹file:inference_rules.rules› - person Jimo; 22.03.2017