Может ли Fuseki использовать как резонер OWL, так и резонер правил

Я использую Jena Fuseki для загрузки файла Jena TDB для создания службы SPARQL. Конфигурация fuseki Reasoner имеет следующее:

<#inf_model> a ja:InfModel ;
    ja:baseModel <#union_model>;
    ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner>] ;

Теперь я также хочу написать несколько правил и установить общий аргумент для сервера Fuseki. Как мне настроить Fuseki, чтобы он сочетал в себе и механизм рассуждений OWL, и механизм рассуждений по общим правилам?

Я пробовал следующую конфигурацию:

<#inf_model> a ja:InfModel ;
    ja:baseModel <#union_model>;
    ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner>] ;

    ja:reasoner [
        ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner> ; 
        ja:rulesFrom <file://D:/Program%20Files/apache-jena-fuseki-3.13.1/run/rule.ttl>; ]

Но это не удается с

...multiple values for the unique property http://jena.hpl.hp.com/2005/11/Assembler#reasoner

Могут ли у фусэки быть более одного рассудка?


person xrds    schedule 26.03.2020    source источник


Ответы (2)


В документации по выводам есть раздел "Сочетание RDFS/OWL с пользовательскими правилами". Первое предложение, которое они делают, это «построить одну InfModel, используя другую InfModel в качестве базовых данных».

Они не приводят пример, но на основе этого я смог заставить работать следующее:

config:dataset a ja:RDFDataset ;
    ja:defaultGraph       <#model_inf2> ;
     .

<#model_inf2> a ja:InfModel ;
     ja:baseModel <#model_inf1> ;

     ja:reasoner [
        ja:rulesFrom <file:/my-rules.rules> ;
        ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner>
     ] .

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

<#graph> rdf:type tdb:GraphTDB ;
  tdb:dataset config:tdb_dataset_readwrite .

config:tdb_dataset_readwrite
        a             tdb:DatasetTDB ;
        tdb:location  "<path-to-tbd-dataset>"
        .
person goosetherumfoodle    schedule 21.04.2020

Вы можете использовать свои правила из файла с помощью GenericRuleReasoner и включать другие аргументы в свой файл правил с помощью (@include), например (используя OWLMicroFBRuleReasoner):

@prefix ex: http://ex.org/
@prefix foaf: http://xmlns.com/foaf/0.1/
@include <owlmicro>

# Some rule:
(?s ?p ?o) -> (?o ?p ?s) .
person Marcelo Machado    schedule 30.09.2020