Hello everyone, i was facing a problem in supporting inference for all named graphs within the same dataset, my up-to-now fix is creating inference mode per named graph, but that raise a new problem which: the inference is working for named graphs but when query named graphs seem that both shared the same data, even if i ingest different data on each graph. what i have done in more details: *1. 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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> > PREFIX tdb2: <http://jena.apache.org/2016/tdb#> > > [] rdf:type fuseki:Server ; > fuseki:services ( > :service > ) . > > # Service description for "/dataset" with all endpoints. > :service rdf:type fuseki:Service ; > fuseki:name "dataset" ; > fuseki:endpoint [ > fuseki:operation fuseki:query ; > fuseki:name "query" > ] ; > fuseki:endpoint [ > fuseki:operation fuseki:update ; > fuseki:name "update" > ] ; > fuseki:dataset :dataset ; > . > > ## --------------------------------------------------------------- > > :dataset rdf:type ja:RDFDataset ; > #ja:defaultGraph :model_inf ; > > ja:namedGraph [ > ja:graphName <http://www.example.com/ontology> ; > ja:graph :model_ontology ; > ] ; > > ja:namedGraph [ > ja:graphName <http://www.example.com/hello> ; > ja:graph :model_inf > ] ; > > ja:namedGraph [ > ja:graphName <http://www.example.com/world> ; > ja:graph :model_inf > ] ; > . > > :model_ontology a ja:InfModel ; > ja:baseModel :tdbGraph1 ; > > #Reference to model.ttl file > ja:content [ja:externalContent "model.ttl" ] ; > > #Enable Jena Rules-based reasoner and we point the location of > myrules.rules file > ja:reasoner [ > ja:reasonerURL < > http://jena.hpl.hp.com/2003/GenericRuleReasoner> ; > ja:rulesFrom <file:////myrules.rules> ] ; > . > > :model_inf a ja:InfModel ; > ja:baseModel :tdbGraph2 ; > > #Reference to model.ttl file > #ja:content [ja:externalContent "model.ttl" ] ; > > #Enable Jena Rules-based reasoner and we point the location of > myrules.rules file > ja:reasoner [ > ja:reasonerURL < > http://jena.hpl.hp.com/2003/GenericRuleReasoner> ; > ja:rulesFrom <file:////myrules.rules> ] ; > . > > :tdbGraph1 rdf:type tdb2:GraphTDB2 ; > tdb2:dataset :tdbDataset . > > :tdbGraph2 rdf:type tdb2:GraphTDB2 ; > tdb2:dataset :tdbDataset . > > ## Base data in TDB. > :tdbDataset rdf:type tdb2:DatasetTDB2 ; > tdb2:location "DB" ; > # If the unionDefaultGraph is used, then the "update" service should > be removed. > #tdb2:unionDefaultGraph true ; > . > 2. *Ingest data into hello graph:* > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > PREFIX owl: <http://www.w3.org/2002/07/owl#> > PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> > PREFIX hello: <http://www.example.com/hello> > PREFIX world: <http://www.example.com/world> > PREFIX ns: <http://www.example.org/ns#> > INSERT DATA > { > GRAPH hello: { > ns:P1 rdf:type ns:Man. > ns:P2 rdf:type ns:Man. > ns:P1 ns:knows ns:P2. > } > } 3. *Ingest data into world graph:* > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >> PREFIX owl: <http://www.w3.org/2002/07/owl#> >> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> >> PREFIX hello: <http://www.example.com/hello> >> PREFIX world: <http://www.example.com/world> >> PREFIX ns: <http://www.example.org/ns#> >> > INSERT DATA >> { >> GRAPH world: { >> ns:P3 rdf:type ns:Man. >> ns:P4 rdf:type ns:Man. >> ns:P3 ns:knows ns:P4. >> } >> } > > 4. *Query* > SELECT * > WHERE > { > GRAPH hello: { > ?s ?p ?o. > } > } The results are combinations of all data from hello graph + world graph + model graph, and the same if i do the query for world graph too. Why are the graphs combined?, how can i fix that while keeping the inference in separate per graph making each named graph use the ontology model independent from other named graphs. Thanks -- abdullah
