Apache Jena Fuseki中的推理:"重新加载 "数据集还是 "触发 "推理?

问题描述 投票:2回答:1

我们有一台Apache-Fuseki服务器,运行时的配置如下。

@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix tdb2:  <http://jena.apache.org/2016/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#> .

# TDB
tdb2:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb2:GraphTDB    rdfs:subClassOf  ja:Model .

# Service 1: Dataset endpoint (no reasoning)
:dataService a fuseki:Service ;
  fuseki:name           "wotTdb" ;
  fuseki:serviceQuery   "sparql", "query" ;
  fuseki:serviceUpdate  "update" ;
  fuseki:serviceReadWriteGraphStore "data" ;
  fuseki:dataset        :tdbDataset ;
.

# Service 2: Reasoning endpoint
:reasoningService a fuseki:Service ;
  fuseki:dataset                 :infDataset ;
  fuseki:name                    "wotReasoning" ;
  fuseki:serviceQuery            "query", "sparql" ;
  fuseki:serviceReadGraphStore   "get" ;
.

# Inference dataset
:infDataset rdf:type ja:RDFDataset ;
            ja:defaultGraph :infModel ;
.

# Inference model
:infModel a ja:InfModel ;
           ja:baseModel :g ;

           ja:reasoner [
              ja:reasonerClass "openllet.jena.PelletReasonerFactory" ;
            ] ;
.

# Intermediate graph referencing the default union graph
:g rdf:type tdb2:GraphTDB2 ;
   tdb2:dataset :tdbDataset ;
   tdb2:graphName <urn:x-arq:UnionGraph> ;
.

# The location of the TDB dataset
:tdbDataset rdf:type tdb2:DatasetTDB2 ;
            tdb2:location "/fuseki/databases/wot" ;
            tdb2:unionDefaultGraph true ; 
.

解释:

它有2个端点,一个是原始数据,一个是推断数据。

原始数据数据集有2个图表。

  • 我们读取并推送给fuseki的数据。
  • 道理

推理数据集由数据数据集(原始+限制)的联合-默认-图和推理模型组成。

我们这样做是为了有1个Endpoint来读写我们的数据和限制,1个Endpoint来做推理。

问题是,推理端点不会 "更新",比如说,如果有新数据进来,就做推理。如果有新的数据到来(或一般情况下),我们如何 "触发 "推理引擎更新其图?

查询数据集是行不通的,目前我们找到的唯一解决方案是重启服务器,这是不合理的。

我在这个上找到了这样的配置 回答 附注

请注意,推理服务在重新加载之前不会看到数据集的任何变化,因为推理都是在内存中完成的。

这正是我们的问题所在。

另外。 如果你对这种方法有更好的想法,请告诉我。我们认为将事实数据和推理数据分开是个好主意,这是我们能够实现这个目标的唯一方法。

sparql jena inference fuseki reasoning
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.