【问题标题】:Fuseki owl reasoner not working with TDBFuseki owl 推理器不适用于 TDB
【发布时间】:2016-03-17 17:07:16
【问题描述】:

这是我的配置文件

# 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,而我应该得到:B:C

请问我的配置有什么问题?

【问题讨论】:

  • 我建议在 JENA 邮件列表中询问。这些家伙速度很快,是 TDB、Fuseket 等配置和设置方面的真正专家。

标签: sparql rdf jena semantic-web fuseki


【解决方案1】:

我猜你在运行 fuseki 时可能没有正确加载配置文件。您是否明确要求 fuseki 使用您的配置文件?

按照本教程 (http://krr.cs.vu.nl/wp-content/uploads/2013/09/protege-fuseki-yasgui-manual.pdf) 中的说明,我的 fuseki 运行良好,具有推理能力。查看第 3 页,希望您能解决您的问题。

【讨论】:

  • 我确实正确加载了configutaiotn文件,因为当fuseki运行时我可以看到服务和数据集已经存在
  • 我的错误是写在你提供的文件中,是我在更新服务存在时保留了联合图。谢谢
  • 请问您能帮我吗? stackoverflow.com/questions/36131149/…
【解决方案2】:

这一行

<#dataset> rdf:type      tdb:DatasetTDB ;

说它是 TDB 数据库,但这不是我们所需要的。您需要一个 ja:RDFDataset 来包含使用 TDB 作为其基础数据的 inf 图。

(需要测试)

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

【讨论】:

  • 实际上我从另一个人发布的文档中意识到,我非常感谢您的帮助,我希望我能接受两个答案:(加一个
  • 我知道你喜欢 Fuseki :) 这就是为什么我想问你是否可以检查我的新问题?
  • 请问你能帮我吗? stackoverflow.com/questions/36131149/…
【解决方案3】:

不熟悉 Fuseki 的细节,我敢打赌,您需要在 OWL 或 RDFS 配置文件上显式调用推理引擎。完成后,您应该会看到所需的蕴涵。 OTOH,有一个常见的 SPARQL 查询将获得相同的必然结果:

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

或者,更简洁地使用属性路径:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多