簡體   English   中英

Fuseki貓頭鷹推理機無法與TDB一起使用

[英]Fuseki owl reasoner not working with TDB

這是我的配置文件

# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0

## Fuseki Server configuration file.

@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 ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .

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

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

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

<#service1> rdf:type fuseki:Service ;
fuseki:name                       "rs" ;       # http://host:port/ds
fuseki:serviceQuery               "sparql" ;   # SPARQL query service
fuseki:serviceQuery               "query" ;    # SPARQL query service (alt name)
fuseki:serviceUpdate              "update" ;   # SPARQL update service
fuseki:serviceUpload              "upload" ;   # Non-SPARQL upload service
fuseki:serviceReadWriteGraphStore "data" ;     # SPARQL Graph store protocol (read and write)
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore      "get" ;      # SPARQL Graph store protocol (read only)
fuseki:dataset                   <#dataset> ;
.


<#dataset> rdf:type      tdb:DatasetTDB ;
    tdb:location "RS" ;
    ja:defaultGraph       <#model_inf> ;
.


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


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

<#RSDataSet> rdf:type  tdb:DatasetTDB ;
    tdb:location "RS" ;
    tdb:unionDefaultGraph true ;
.

當我運行fuseki (2.3)時,我可以看到使用TDB的數據集(不在內存中),我可以上傳我的rdf三元組,即使我關閉fuseki並重新打開它,三元組也存在,但是reaoner不能正常工作

這是我的數據

@prefix : <http://example.org/rs#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

:A   rdfs:subClassOf :B .
:B   rdfs:subClassOf :C .
:i  a   :A .

當我做這個查詢

select * where {
:i a ?e
}

我得到:A我應該到達:A地方:B:C

請問我的配置有什么問題?

我猜您在運行fuseki時可能無法正確加載配置文件。 您是否明確要求fuseki使用您的配置文件?

通過遵循本教程中的說明,我的funki在推理能力方面運行良好( http://krr.cs.vu.nl/wp-content/uploads/2013/09/protege-fuseki-yasgui-manual.pdf ) 。 檢查第3頁,希望您能解決您的問題。

這條線

<#dataset> rdf:type      tdb:DatasetTDB ;

表示這是TDB數據庫,但這不是必需的。 您需要一個ja:RDFDataset來包含將TDB用作基礎數據的inf圖。

(需要測試)

<#dataset> rdf:type       ja:RDFDataset ;
    ja:defaultGraph       <#model_inf> ;
    .

我不熟悉Fuseki的細節,我敢打賭您需要在OWL或RDFS配置文件上顯式調用推理引擎。 完成后,您應該會看到所需的附件。 OTOH,有一個常見的SPARQL查詢將獲得相同的必要結果:

SELECT ?e
WHERE {
   :i a ?cls .
   ?cls rdfs:subClassOf* ?e .
}

或者,更緊湊地使用屬性路徑:

SELECT ?e
WHERE {
   :i rdf:type/rdfs:subClassOf* ?e .
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM