如何逐步在 fuseki 中定义非常简单的自己的规则?
How to define very simple own rule in fuseki step by step?
我请求您帮助了解如何在 fuseki 中创建我自己的 属性 规则。
我已经阅读了 Jena 和 Fuseki 关于推理机和规则的文档,但我不明白如何创建(逐步)简单规则。我发现的例子都集中在 OWL 推理机上。
我不清楚在 config.ttl 文件中写了什么,以便 fuseki 考虑到我在 ontology 上的规则。我通过sparql-client使用Sparql点python,我不掌握java代码和应用
我的目的是创建下一个规则:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix ont: http://www.myownontolongy/ontology/
[dependsOfExchange:
(?e ont:refersToPriorActivityData ?a)
(?a ont:hasExchange ?es)
->
(?e rme:dependsOfExchange ?es)
]
SWRL语法的原则是:
refersToPriorActivityData(?e,?a) ^ hasExchange(?a,?es) => dependsOfExchange(?e,?es)
提前致谢。
使用一种解决方案进行编辑
@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 tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type fuseki:Server ;
# Timeout - server-wide default: milliseconds.
# Format 1: "1000" -- 1 second timeout
# Format 2: "10000,60000" -- 10s timeout to first result, then 60s timeout for the rest of query.
# See java doc for ARQ.queryTimeout
# ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ;
# ja:loadClass "your.code.Class" ;
fuseki:services (
<#reminer>
) .
## ---------------------------------------------------------------
## Updatable in-memory dataset.
<#reminer> rdf:type fuseki:Service ;
# URI of the dataset -- http://host:port/reminer
fuseki:name "name_of_your_database" ;
fuseki:serviceQuery "sparql" ;
fuseki:serviceQuery "query" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadGraphStore "" ;
fuseki:dataset <#myDataset> ;
.
## In-memory, initially empty.
## This database set-up allows OWL inference.
<#myDataset> rdf:type ja:RDFDataset ;
tdb:unionDefaultGraph true ;
ja:defaultGraph <#infGraph> .
<#infGraph> rdf:type ja:InfModel ;
ja:reasoner [ ja:rulesFrom <file:rules/inference_rules.rules> ; ] ; #the rules directory is in the "run" directory
ja:baseModel <#baseGraph> .
<#baseGraph> rdf:type tdb:GraphTDB;
tdb:location "path_of_your_database" .
以inference_rules.rules为例:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix mO: http://www.semanticweb.org/myOntology/
[dependsOfExchange:
(?e mO:producedBy ?a)
(?a mO:hasExchange ?es)
->
(?e rme:dependsOf ?es)
]
.ttl 通过命令行使用:./fuseki-server --config=/path/of/your/custom-config.ttl
@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 tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type fuseki:Server ;
# Timeout - server-wide default: milliseconds.
# Format 1: "1000" -- 1 second timeout
# Format 2: "10000,60000" -- 10s timeout to first result, then 60s timeout for the rest of query.
# See java doc for ARQ.queryTimeout
# ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ;
# ja:loadClass "your.code.Class" ;
fuseki:services (
<#reminer>
) .
## ---------------------------------------------------------------
## Updatable in-memory dataset.
<#reminer> rdf:type fuseki:Service ;
# URI of the dataset -- http://host:port/reminer
fuseki:name "name_of_your_database" ;
fuseki:serviceQuery "sparql" ;
fuseki:serviceQuery "query" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadGraphStore "" ;
fuseki:dataset <#myDataset> ;
.
## In-memory, initially empty.
## This database set-up allows OWL inference.
<#myDataset> rdf:type ja:RDFDataset ;
tdb:unionDefaultGraph true ;
ja:defaultGraph <#infGraph> .
<#infGraph> rdf:type ja:InfModel ;
ja:reasoner [ ja:rulesFrom <file:rules/inference_rules.rules> ; ] ; #the rules directory is in the "run" directory
ja:baseModel <#baseGraph> .
<#baseGraph> rdf:type tdb:GraphTDB;
tdb:location "path_of_your_database" .
以inference_rules.rules为例:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix mO: http://www.semanticweb.org/myOntology/
[dependsOfExchange:
(?e mO:producedBy ?a)
(?a mO:hasExchange ?es)
->
(?e rme:dependsOf ?es)
]
我请求您帮助了解如何在 fuseki 中创建我自己的 属性 规则。 我已经阅读了 Jena 和 Fuseki 关于推理机和规则的文档,但我不明白如何创建(逐步)简单规则。我发现的例子都集中在 OWL 推理机上。
我不清楚在 config.ttl 文件中写了什么,以便 fuseki 考虑到我在 ontology 上的规则。我通过sparql-client使用Sparql点python,我不掌握java代码和应用
我的目的是创建下一个规则:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix ont: http://www.myownontolongy/ontology/
[dependsOfExchange:
(?e ont:refersToPriorActivityData ?a)
(?a ont:hasExchange ?es)
->
(?e rme:dependsOfExchange ?es)
]
SWRL语法的原则是:
refersToPriorActivityData(?e,?a) ^ hasExchange(?a,?es) => dependsOfExchange(?e,?es)
提前致谢。
使用一种解决方案进行编辑
@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 tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type fuseki:Server ;
# Timeout - server-wide default: milliseconds.
# Format 1: "1000" -- 1 second timeout
# Format 2: "10000,60000" -- 10s timeout to first result, then 60s timeout for the rest of query.
# See java doc for ARQ.queryTimeout
# ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ;
# ja:loadClass "your.code.Class" ;
fuseki:services (
<#reminer>
) .
## ---------------------------------------------------------------
## Updatable in-memory dataset.
<#reminer> rdf:type fuseki:Service ;
# URI of the dataset -- http://host:port/reminer
fuseki:name "name_of_your_database" ;
fuseki:serviceQuery "sparql" ;
fuseki:serviceQuery "query" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadGraphStore "" ;
fuseki:dataset <#myDataset> ;
.
## In-memory, initially empty.
## This database set-up allows OWL inference.
<#myDataset> rdf:type ja:RDFDataset ;
tdb:unionDefaultGraph true ;
ja:defaultGraph <#infGraph> .
<#infGraph> rdf:type ja:InfModel ;
ja:reasoner [ ja:rulesFrom <file:rules/inference_rules.rules> ; ] ; #the rules directory is in the "run" directory
ja:baseModel <#baseGraph> .
<#baseGraph> rdf:type tdb:GraphTDB;
tdb:location "path_of_your_database" .
以inference_rules.rules为例:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix mO: http://www.semanticweb.org/myOntology/
[dependsOfExchange:
(?e mO:producedBy ?a)
(?a mO:hasExchange ?es)
->
(?e rme:dependsOf ?es)
]
.ttl 通过命令行使用:./fuseki-server --config=/path/of/your/custom-config.ttl
@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 tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type fuseki:Server ;
# Timeout - server-wide default: milliseconds.
# Format 1: "1000" -- 1 second timeout
# Format 2: "10000,60000" -- 10s timeout to first result, then 60s timeout for the rest of query.
# See java doc for ARQ.queryTimeout
# ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "10000" ] ;
# ja:loadClass "your.code.Class" ;
fuseki:services (
<#reminer>
) .
## ---------------------------------------------------------------
## Updatable in-memory dataset.
<#reminer> rdf:type fuseki:Service ;
# URI of the dataset -- http://host:port/reminer
fuseki:name "name_of_your_database" ;
fuseki:serviceQuery "sparql" ;
fuseki:serviceQuery "query" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadGraphStore "" ;
fuseki:dataset <#myDataset> ;
.
## In-memory, initially empty.
## This database set-up allows OWL inference.
<#myDataset> rdf:type ja:RDFDataset ;
tdb:unionDefaultGraph true ;
ja:defaultGraph <#infGraph> .
<#infGraph> rdf:type ja:InfModel ;
ja:reasoner [ ja:rulesFrom <file:rules/inference_rules.rules> ; ] ; #the rules directory is in the "run" directory
ja:baseModel <#baseGraph> .
<#baseGraph> rdf:type tdb:GraphTDB;
tdb:location "path_of_your_database" .
以inference_rules.rules为例:
@prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
@prefix ex: http://example.com/
@prefix xs: http://www.w3.org/2001/XMLSchema#
@prefix mO: http://www.semanticweb.org/myOntology/
[dependsOfExchange:
(?e mO:producedBy ?a)
(?a mO:hasExchange ?es)
->
(?e rme:dependsOf ?es)
]