【问题标题】:Cant get openllet running on Fuseki无法在 Fuseki 上运行 openllet
【发布时间】:2020-04-07 10:23:12
【问题描述】:

昨天我试图让 Pellet 和/或 Openllet 在我的 Fuseki 服务器上运行。

我正在通过 Web 界面进行请求。没有推理,它的工作正常。

这是我的配置:

@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#> .

<http://jena.apache.org/2016/tdb#DatasetTDB>
        rdfs:subClassOf  ja:RDFDataset .

ja:DatasetTxnMem  rdfs:subClassOf  ja:RDFDataset .

tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .

tdb:GraphTDB  rdfs:subClassOf  ja:Model .

<http://jena.apache.org/2016/tdb#GraphTDB2>
        rdfs:subClassOf  ja:Model .

ja:MemoryDataset  rdfs:subClassOf  ja:RDFDataset .

ja:RDFDatasetZero  rdfs:subClassOf  ja:RDFDataset .

<http://jena.apache.org/text#TextDataset>
        rdfs:subClassOf  ja:RDFDataset .

:service_tdb_all  a                   fuseki:Service ;
        rdfs:label                    "TDB FOOT" ;
        fuseki:dataset                :tdb_dataset_readwrite ;
        fuseki:name                   "FOOT" ;
        fuseki:serviceQuery           "query" , "" , "sparql" ;
        fuseki:serviceReadGraphStore  "get" ;
        fuseki:serviceReadQuads       "" ;
        fuseki:serviceReadWriteGraphStore
                "data" ;
        fuseki:serviceReadWriteQuads  "" ;
        fuseki:serviceUpdate          "" , "update" ;
        fuseki:serviceUpload          "upload" .

:tdb_dataset_readwrite
        a             ja:RDFDataset;
        ja:defaultGraph       <#model_inf> ;
        tdb:location  "C:\\etc\\fuseki/databases/FOOT" .

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

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

Tomcat 目录中的错误日志:

ERROR Exception in initialization: the class 'openllet.jena.PelletReasonerFactory' required by the object 7c374328cddba9fa8091dcebd77a7598 [ja:reasoner of file:///C:/etc/fuseki/configuration/FOOT.ttl#model_inf] could not be loaded

我一直在到处复制 Openllet Jar-Files(openllet-query-2.6.5.jar 和其他东西),但没有机会。 顺便说一句,这是正确的做法吗?!

在我的 Apache Jena 项目(和 Snarp Sparql Protege 插件)中,我让 Openllet 运行,它让我得到了正确的结果。

我得到了一些属于这种类型的规则

                       [ rdf:type owl:Class ;
                         owl:unionOf ( [ owl:intersectionOf ( [ rdf:type owl:Restriction ;
                                                                owl:onProperty food:hasIngredient ;
                                                                owl:someValuesFrom food:Dairy
                                                              ]
                                                              [ rdf:type owl:Restriction ;
                                                                owl:onProperty food:hasIngredient ;
                                                                owl:someValuesFrom [ rdf:type owl:Restriction ;
                                                                                     owl:onProperty food:hasFood ;
                                                                                     owl:someValuesFrom food:Meat
                                                                                   ]
                                                              ]
                                                            ) ;
                                         rdf:type owl:Class
                                       ]
                                       [ rdf:type owl:Restriction ;
                                         owl:onProperty food:hasIngredient ;
                                         owl:someValuesFrom [ rdf:type owl:Restriction ;
                                                              owl:onProperty food:hasFood ;
                                                              owl:someValuesFrom food:Pork
                                                            ]
                                       ]
                                     )
                       ]
                     ) ;
  rdf:type owl:Class ;
  rdfs:subClassOf [ rdf:type owl:Restriction ;
                    owl:onProperty food:violatesRestriction ;
                    owl:hasValue food:kosherReligious
                  ]
] .

“如果食谱中含有猪肉或肉类与乳制品相结合,则不符合犹太教规。”

推理速度非常慢(在 25000 三元数据库上需要 8 秒)。如果我在模型快速运行之前提取模型,但模型的提取需要 3 分钟。

我只想有一种方法,用户可以在合理的时间内(

还有更多(更好的?)推理器可以处理空白节点(隐士不能...)??

我的问题是:

  1. 如何让 Fuseki 与 Pellet/Openllet 一起运行
  2. 推理替代方案?
  3. 有没有更好的方法来推断上述规则?
  4. 我完全错了吗?我是否必须让推理器在程序开始时只运行一次,而不是每次查询都运行一次?

最好的问候;)

【问题讨论】:

    标签: jena semantic-web fuseki reasoning pellet


    【解决方案1】:

    我尝试了 OWLMicroFBRuleReasoner 而不是 Openllet,它工作!而且它快速!

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

    【讨论】:

    • 但是为什么服务器启动后的初始查询那么慢呢? 40 秒后 3 毫秒...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2022-01-07
    • 2021-10-27
    • 2013-10-04
    • 2012-06-08
    • 2012-09-27
    相关资源
    最近更新 更多