Rdf 使用TDB2和OWL推理机配置fuseki
这里是fuseki/jena的新成员。我设法让fuseki使用tdb1与OWLFBRuleReasoner一起运行没有问题,但无法使其与tdb2()一起工作。我找不到一个同时使用TDB2和OWLFBRuleReasoner的显式配置示例,所以我只是转换了这一个(有效)Rdf 使用TDB2和OWL推理机配置fuseki,rdf,jena,owl,fuseki,Rdf,Jena,Owl,Fuseki,这里是fuseki/jena的新成员。我设法让fuseki使用tdb1与OWLFBRuleReasoner一起运行没有问题,但无法使其与tdb2()一起工作。我找不到一个同时使用TDB2和OWLFBRuleReasoner的显式配置示例,所以我只是转换了这一个(有效) @前缀:。 @前缀tdb:。 @前缀rdf:。 @前缀ja:。 @前缀rdfs:。 @前缀fuseki:。 #fuseki配置具有OWL蕴涵 #这是s-stf-gin上的配置(fuseki数据文件夹位于c:\) :service_
@前缀:。
@前缀tdb:。
@前缀rdf:。
@前缀ja:。
@前缀rdfs:。
@前缀fuseki:。
#fuseki配置具有OWL蕴涵
#这是s-stf-gin上的配置(fuseki数据文件夹位于c:\)
:service_tdb_all a fuseki:service;
rdfs:标签“TDB gsip”;
fuseki:dataset:tdb_dataset_readwrite;
fuseki:名称为“gsip”;
fuseki:serviceQuery“查询”、“sparql”;
fuseki:serviceReadGraphStore“获取”;
fuseki:serviceReadWriteGraphStore
“数据”;
fuseki:serviceUpdate“更新”;
fuseki:serviceUpload“上传”。
#上面,删除数据,更新并上传到prod中
:tdb_数据集_读写
a ja:RDFDataset;
rdfs:标签为“GSIP”;
ja:defaultGraph;
tdb:位置“c:\\fuseki/databases/gsip”。
a:ja模型;
ja:基本模型;
ja:推理机[
ja:ReasureUrl
] .
rdf:类型tdb:图形DB;
tdb:dataset:tdb_dataset_读写。
(这一个很好用。我用猫头鹰做了测试:属性反转)
进入这个(不起作用)
@前缀:。
@前缀tdb2:。
@前缀rdf:。
@前缀ja:。
@前缀rdfs:。
@前缀fuseki:。
:service_tdb_all a fuseki:service;
fuseki:dataset:dataset;
fuseki:名称为“gsip”;
fuseki:serviceQuery“查询”、“sparql”;
fuseki:serviceReadGraphStore“获取”;
fuseki:serviceReadWriteGraphStore“数据”;
fuseki:serviceUpdate“更新”;
fuseki:serviceUpload“上传”。
:数据集a ja:RDFDataset;
ja:defaultGraph;
tdb2:位置“c:\\fuseki/databases/gsip”
.
a:ja模型;
ja:基本模型;
ja:推理机[
ja:ReasureUrl
] .
rdf:tdb2型:图形DB;#还尝试了tdb2:GraphTDB2
tdb2:dataset:dataset。
如您所见,我基本上只是将tdb替换为tdb2(名称空间和所有)。Fuseki启动并运行良好,但OWL推理不起作用
任何人都可以向我指出相关文档/示例?或者我完全误解了TDB1和TDB2的交易
谢谢
编辑:修复了我的TDB2配置文件(仍然不工作) 以下内容对我有用:
@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#> .
:service_tdb_all a fuseki:Service ;
rdfs:label "TDB [MyDatasetName]" ;
fuseki:dataset :inferred_dataset ;
fuseki:name "[MyDatasetName]" ;
fuseki:serviceQuery "query" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore
"data" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" .
:inferred_dataset a ja:RDFDataset ;
ja:defaultGraph :inference_model .
:inference_model a ja:InfModel ;
ja:baseModel :tdb_graph ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
] .
:tdb_graph a tdb:GraphTDB ;
tdb:dataset :tdb_dataset_readwrite .
:tdb_dataset_readwrite
a tdb:DatasetTDB ;
tdb:location "[MyDatasetLocationOnDisk]" .
@前缀:。
@前缀tdb:。
@前缀rdf:。
@前缀ja:。
@前缀rdfs:。
@前缀fuseki:。
:service_tdb_all a fuseki:service;
rdfs:标签“TDB[MyDatasetName]”;
fuseki:数据集:推断的_数据集;
fuseki:name“[MyDatasetName]”;
fuseki:serviceQuery“查询”、“sparql”;
fuseki:serviceReadGraphStore“获取”;
fuseki:serviceReadWriteGraphStore
“数据”;
fuseki:serviceUpdate“更新”;
fuseki:serviceUpload“上传”。
:推断的_数据集a ja:RDFDataset;
ja:defaultGraph:Expression\u模型。
:推理\模型a ja:InfModel;
ja:baseModel:tdb_图;
ja:推理机[
ja:ReasureUrl
] .
:tdb_图形a tdb:GraphTDB;
tdb:dataset:tdb_dataset_读写。
:tdb_数据集_读写
a tdb:datasetdb;
tdb:位置“[MyDatasetLocationOnDisk]”。
与您的版本的主要区别是一个没有推断的独立数据集(而不是已经注意到的回环“Barry NL”)和tdb前缀的不同名称空间。请注意,名称空间前缀可以自由选择(它们没有语义含义),更改名称空间前缀并不重要,只要它指向相同的名称空间URL。这是我的工作:
@前缀:。
@前缀rdf:。
@前缀tdb2:。
@前缀ja:。
@前缀rdfs:。
@前缀fuseki:。
:service_tdb_all a fuseki:service;
rdfs:标签“TDB2食品”;
fuseki:dataset:tdb_dataset_readwrite;
fuseki:名称“食品”;
fuseki:serviceQuery“查询”、“sparql”;
fuseki:serviceReadGraphStore“获取”;
fuseki:serviceReadWriteGraphStore
“数据”;
fuseki:serviceUpdate“更新”;
fuseki:serviceUpload“上传”。
:tdb_dataset_readwrite一个ja:RDFDataset;
ja:defaultGraph:modelnf;
.
:modelInf a ja:InfModel;
ja:reasoner[ja:reasonerURL];
#ja:reasoner[ja:reasonerURL;
#ja:规则来自];
ja:baseModel:gra;
.
:gra a tdb2:GraphTDB;
tdb2:位置“C:\\Users\\shaoj\\Documents\\IntelligentQA\\apache-jena-fuseki-3.8.0\\run/databases/food”;
tdb2:unionDefaultGraph true;
.
Jena邮件列表无疑是获得有用答案的更好/更快的方法。(尽管核心开发人员Andy Seaborne有时也会回答这个问题)Fuseki日志文件是否包含有用的信息?是否显示了非推断数据?我注意到您对TDB1和TDB2数据库使用相同的文件区域。TDB2不适用于TDB1数据库,也不读取它们。事实上,它的数据库由tdb2:location的子位置保存(所以TDB1数据并没有损坏-它只是被完全忽略)。数据必须单独加载到TDB2。Fuseki日志文件夹us始终为空(这是我需要解决的另一个问题),关于imcompatible TDB1和TDB2-我在测试之间清除了数据库。将尝试邮件列表。谢谢
@prefix : <http://base/#> .
@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#> .
:service_tdb_all a fuseki:Service ;
fuseki:dataset :dataset ;
fuseki:name "gsip" ;
fuseki:serviceQuery "query" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" .
:dataset a ja:RDFDataset ;
ja:defaultGraph <#model_inf> ;
tdb2:location "c:\\fuseki/databases/gsip"
.
<#model_inf> a ja:InfModel ;
ja:baseModel <#graph> ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
] .
<#graph> rdf:type tdb2:GraphTDB ; # also tried tdb2:GraphTDB2
tdb2:dataset :dataset .
@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#> .
:service_tdb_all a fuseki:Service ;
rdfs:label "TDB [MyDatasetName]" ;
fuseki:dataset :inferred_dataset ;
fuseki:name "[MyDatasetName]" ;
fuseki:serviceQuery "query" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore
"data" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" .
:inferred_dataset a ja:RDFDataset ;
ja:defaultGraph :inference_model .
:inference_model a ja:InfModel ;
ja:baseModel :tdb_graph ;
ja:reasoner [
ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>
] .
:tdb_graph a tdb:GraphTDB ;
tdb:dataset :tdb_dataset_readwrite .
:tdb_dataset_readwrite
a tdb:DatasetTDB ;
tdb:location "[MyDatasetLocationOnDisk]" .