问题
This is my configuration file
# 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 ;
.
when I run fuseki (2.3) I can see my data set which uses TDB (not in memeory) I can upload my rdf triple, and even when i close fuseki and re open it, the triples are there, but the reaoner is not working
this is my data
@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 .
when i do this query
select * where {
:i a ?e
}
I get just :A
where i should have gotten :B
and :C
whats wrong in my configuration please?
回答1:
I guess you might not load the configuration file correctly, when you run the fuseki. Did you explicitly ask fuseki to use your configuration file?
I have my fuseki running well with reasoning capability, by following the instruction in this tutorial (http://krr.cs.vu.nl/wp-content/uploads/2013/09/protege-fuseki-yasgui-manual.pdf). Check the page 3, and I hope you would solve your problem.
回答2:
This line
<#dataset> rdf:type tdb:DatasetTDB ;
says it's TDB database but that isn't what is needed. You need a ja:RDFDataset
to contain the inf graph that uses TDB as it's base data.
(needs testing)
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#model_inf> ;
.
回答3:
Not being familiar with the specifics of Fuseki, I'd bet you need to explicitly invoke an inference engine on an OWL or RDFS profile. Once that is completed you should see the entailments you want. OTOH, there is a common SPARQL query that will get the same entailed results:
SELECT ?e
WHERE {
:i a ?cls .
?cls rdfs:subClassOf* ?e .
}
Or, more compactly using property paths:
SELECT ?e
WHERE {
:i rdf:type/rdfs:subClassOf* ?e .
}
来源:https://stackoverflow.com/questions/36067247/fuseki-owl-reasoner-not-working-with-tdb