无法在 Fuseki 上获取 openllet 运行
Cant get openllet running on Fuseki
昨天我试图让 Pellet and/or 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 文件(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
]
] .
"Not kosher if there is pork in a recipe or meat in combination with a dairy product."
推理速度非常慢(在 25000 三重数据库上 8 秒)。如果我在它之前 运行 快速提取模型,但 提取模型需要 3 分钟 。
我只是想有一种方法,让用户可以在合理的时间内(< 2 秒)根据推理者的推论查询食谱:(
是否还有更多(更好的?)可以使用 空白节点 的推理器(Hermit 不能...)??
我的问题是:
- 如何使用 Pellet/Openllet
让 Fuseki 达到 运行
- 推理机替代品?
- 是否有更好的方法来推断上述规则?
- 我完全错了吗,我是否必须让推理器 运行 只在程序开始时出现一次,而不是每次查询都出现?
此致 ;)
我尝试了 OWLMicroFBRuleReasoner 而不是 Openllet,它 有效 !而且它快!
<#model_inf> a ja:InfModel ;
ja:baseModel <#graph> ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner>
] .
昨天我试图让 Pellet and/or 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 文件(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
]
] .
"Not kosher if there is pork in a recipe or meat in combination with a dairy product."
推理速度非常慢(在 25000 三重数据库上 8 秒)。如果我在它之前 运行 快速提取模型,但 提取模型需要 3 分钟 。
我只是想有一种方法,让用户可以在合理的时间内(< 2 秒)根据推理者的推论查询食谱:(
是否还有更多(更好的?)可以使用 空白节点 的推理器(Hermit 不能...)??
我的问题是:
- 如何使用 Pellet/Openllet 让 Fuseki 达到 运行
- 推理机替代品?
- 是否有更好的方法来推断上述规则?
- 我完全错了吗,我是否必须让推理器 运行 只在程序开始时出现一次,而不是每次查询都出现?
此致 ;)
我尝试了 OWLMicroFBRuleReasoner 而不是 Openllet,它 有效 !而且它快!
<#model_inf> a ja:InfModel ;
ja:baseModel <#graph> ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner>
] .