Ассемблерный файл Jena Fuseki + TDB + OWL Reasoner

У меня возникла проблема с настройкой Jena Fuseki с помощью файла ассемблера. До недавнего времени я запускал сервер из командной строки следующим образом:

sudo ./fuseki-server --loc=la --port=3032 --update /ds

Это создает постоянное хранилище TDB, расположенное в каталоге SERVER_ROOT/la. Сервер запускается правильно и отображает следующий вывод:

14:30:55 INFO  TDB dataset: directory=la
14:30:55 INFO  Dataset path = /ds
14:30:55 INFO  Fuseki 1.0.1 2014-01-18T19:01:20+0000
14:30:55 INFO  Started 2015/02/02 14:30:55 GMT on port 3032

Теперь я хочу добавить аргумент OWL и следующее статье baach.de, я пытался запустить сервер со следующим файлом ассемблера:

@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 sdb: <http://jena.hpl.hp.com/2007/sdb#> .

[] rdf:type fuseki:Server ;

fuseki:services ( <#tdb> ) .

<#tdb> rdf:type fuseki:Service ;
    fuseki:name "ds" ; # http://host/inf
    fuseki:serviceQuery "sparql" ; # SPARQL query service
    #fuseki:serviceUpdate     "update" ;
    fuseki:dataset <#dataset2> ; #select which set to use
    .

[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .

tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .

<#dataset2> rdf:type ja:RDFDataset ;
    ja:defaultGraph <#model2> .

<#model2> a ja:InfModel ;
    ja:baseModel <#tdbGraph> ;
    ja:reasoner [ ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>] .

<#tdbDataset> rdf:type tdb:DatasetTDB ;
    tdb:location "la" ;
    tdb:unionDefaultGraph true .

<#tdbGraph> rdf:type tdb:GraphTDB ;
    tdb:dataset <#tdbDataset> .

Используя эту команду:

sudo ./fuseki-server --port=3032 --config=fuseki-la-cfg.ttl

Сервер начинает правильно отображать следующий вывод:

14:29:52 INFO  Dataset path = /ds
14:29:52 INFO  Fuseki 1.0.1 2014-01-18T19:01:20+0000
14:29:52 INFO  Started 2015/02/02 14:29:52 GMT on port 3032

Обратите внимание, однако, что он больше не печатает статус «Набор данных TDB: directory=la». Когда я запрашиваю сервер, используя встроенный HTML-интерфейс Fuseki, сервер зависает после получения запроса и не возвращает результат.

Может ли кто-нибудь указать мне, что не так с моим файлом ассемблера? Правильно ли я выбираю каталог «la», чтобы он действовал как местонахождение моего магазина TDB?

Спасибо, Фрэнк


person Frank    schedule 02.02.2015    source источник
comment
Набор данных TDB: directory= печатается, когда в командной строке есть --loc. Это не напечатано для ассемблера.   -  person AndyS    schedule 02.02.2015
comment
Насколько велик набор данных? Вы запускаете резонер над постоянным хранилищем. Это может быть просто очень медленно.   -  person AndyS    schedule 02.02.2015
comment
В нем миллион троек. Это не так уж и много, не так ли?   -  person Frank    schedule 03.02.2015
comment
Да @AndyS, это была проблема. Я попробовал набор данных с парой троек, и он работал нормально. Означает ли это, что механизм рассуждений OWL будет работать только с очень небольшими персистентными TDB? Если так, то это довольно бесполезно тогда. Или вообще большие наборы данных лучше запускать в памяти?   -  person Frank    schedule 03.02.2015
comment
Миллион невелик, но гребенчатый запрос и алгоритм рассуждений вперед-назад могут иметь неблагоприятные модели доступа при использовании с базой данных. Вам нужны все функции рассудка OWLFBRuleReasoner? Меньшие идут быстрее. И вы можете развернуть данные один раз и загрузить их, чтобы не нуждаться в логике во время выполнения.   -  person AndyS    schedule 04.02.2015
comment
@AndyS Мне нравится идея расширения и загрузки. Я попробую. Спасибо.   -  person Frank    schedule 09.02.2015
comment
@AndyS, не могли бы вы помочь, если у вас есть время? stackoverflow.com/questions/36067247/   -  person Ania David    schedule 17.03.2016