Cómo utilizar Openllet OWL2 razonador (o cualquier otra) con Jena TDB?

Vlad Adrian Moglan:

Ya he encontrado una manera de inferir el contenido de la tienda de triple usando Openllet razonador y Jena TDB, pero que no parece óptima. Aquí está mi solución:

Reasoner reasoner = PelletReasonerFactory.theInstance().create();
InfModel infModel = ModelFactory
                        .createInfModel(reasoner, dataset.getNamedModel(KD.URI));

/*
 * To extract the model, a transaction must be open in READ mode.
 */

dataset.begin(ReadWrite.READ);

ModelExtractor me = new ModelExtractor(infModel);

dataset.end();

/*
 * To replace a currently existing named model within the dataset, a transaction must be open in WRITE mode.
 */

dataset.begin(ReadWrite.WRITE);
dataset.replaceNamedModel(KD.URI, me.extractModel());
dataset.commit();
dataset.end();

Esto funciona, pero me gustaría saber de una manera más elegante que en realidad a reemplazar el modelo llamada en el conjunto de datos. En un escenario ideal También me gustaría que la inferencia que ser continua (una vez un triple se inserta en los datos del gráfico se infiere de forma automática en el lugar), pero no sé si es posible.

Gilles-Antoine Nys:

Para processus inferencia continua, es necesario establecer la configuración Fuseki.

Aquí está un ejemplo rápido de mi configuración en una base de datos TDB persistente con un razonador Openllet.

@prefix :      <http://base/#> . @prefix tdb:  
<http://jena.hpl.hp.com/2008/tdb#> . @prefix rdf:  
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix ja:   
<http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix rdfs: 
<http://www.w3.org/2000/01/rdf-schema#> . @prefix fuseki:
<http://jena.apache.org/fuseki#> .

:service_tdb_all  a                   fuseki:Service ;
        rdfs:label                    "LABEL_OF_YOUR_SERVICE" ;
        fuseki:dataset                :dataset ;
        fuseki:name                   "NAME_OF_YOUR_SERVICE" ;
        fuseki:serviceQuery           "query" , "sparql" ;
        fuseki:serviceReadGraphStore  "get" ;
        fuseki:serviceReadWriteGraphStore
                "data" ;
        fuseki:serviceUpdate          "update" ;
        fuseki:serviceUpload          "upload" .

:dataset a ja:RDFDataset ;
  ja:defaultGraph <#modeInf>; .

<#modeInf> a ja:InfModel;
  ja:baseModel <#tdbGraph>;
  ja:reasoner   [
    ja:reasonerClass    "openllet.jena.PelletReasonerFactory" ]
  .  

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

:tdb_dataset_readwrite  a            
  tdb:DatasetTDB ;  tdb:location 
  "PATH_TO_YOUR_TDB"
  .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=210121&siteId=1
Recomendado
Clasificación