Hi,

If your data doesn't change then yes you can compute the results ahead of time. Set up your data and reasoner, write the whole resulting model out to a dump file. Then you can load that dump file into another TDB and serve it as a fuseki dataset with no reasoner configuration.

That doesn't help if your data is continuously changing though.

The other option would be to run in-memory instead of from TDB. Given the reasoners are intrinsically limited to data that fits in memory then would could switch to running in memory, reading the data in from files when fuseki starts up. That would mean start up is slow but the reasoner performance will be a little better.

If neither of those options work or are open to you then I'm afraid it may simply be that the reasoner is not up to the job.

Dave

On 03/12/2020 17:47, Sushanth Vaddaram wrote:
We have 6 lakh statements and when trying to hit the  query with the 
configuration below, it is almost taking 90 secs to load the results. Is there 
anything I can do to improve the performance. Also is there any way inferencing 
can be done during loading of the statements rather than runtime as I was 
getting the result in 2 seconds without the reasoner in the configuration.

Query:

PREFIX dip:<http://sce.ccs.utc.com/dip/reference-ontology#>
PREFIX map-onto:<http://sce.ccs.utc.com/dip/mapping-ontology#>
PREFIX auth:<http://sce.ccs.utc.com/dip/semantics/authorization#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT DISTINCT
   ?datapointURI  ?datapointTYPE  ?datapointLABEL  ?datapointSYSTEM  
?datapointPROVIDER  ?datapointDATAMOD  ?datapointABSTPROP
WHERE
{
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointURI  rdf:type   ?datapointTYPE .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointURI  rdfs:label   ?datapointLABEL .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointURI  dip:data_source_url   ?datapointDATAMOD .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system   ?datapointSYSTEM .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
  ?datapointURI  dip:abstracts   ?datapointABSTPROP .
  }
{


SELECT DISTINCT
   ?datapointURI
WHERE
{
  {
  ?zoneURI  dip:covers  
<http://test.dip.ales/spacetest#03d78792bb3eb3086b9e4135> .
  ?zoneURI  dip:has_scene_property   ?zonePROP .
  ?datapointURI  dip:abstracts   ?zonePROP .
  ?datapointURI  rdf:type   dip:DataPoint  .
  }
        UNION
  {
<http://test.dip.ales/spacetest#03d78792bb3eb3086b9e4135>  
dip:spatial_containment   ?deviceURI .
  ?deviceURI  dip:provides_info_object   ?datapointURI .
  ?datapointURI  rdf:type   dip:DataPoint  .
  }
        UNION
  {
  ?datapointURI  rdf:type   dip:DataPoint  .
  ?datapointPROVIDER  dip:provides_info_object   ?datapointURI .
  ?datapointPROVIDER  dip:in_system  <http://dip.bis.utc.com/7#bacnet_7> .
<http://test.dip.ales/spacetest#03d78792bb3eb3086b9e4135>  
dip:contains_hardware / dip:contains_hardware_device   ?deviceURI .
  ?deviceURI  dip:provides_info_object   ?datapointURI .
  ?datapointURI  rdf:type   dip:DataPoint  .
  }
}

}
}



Configuration:
==========
@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 tdb2:  <http://jena.apache.org/2016/tdb#> .
@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .

[] rdf:type fuseki:Server ;
    fuseki:services (   
      <#dip>
    ) .

# TDB
#[] ja:loadClass "org.apache.jena.tdb.TDB" .
#tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
#tdb:GraphTDB    rdfs:subClassOf  ja:Model .

## ---------------------------------------------------------------

<#dip> rdf:type fuseki:Service ;
     # URI of the dataset -- http://host:port/dip
     fuseki:name                        "dip" ;
     fuseki:serviceQuery                "sparql" ;
     fuseki:serviceQuery                "query" ;
     fuseki:serviceUpdate               "update" ;
     fuseki:serviceUpload               "upload" ;
     fuseki:serviceReadWriteGraphStore  "data" ;
     fuseki:serviceReadGraphStore       "get" ;
     fuseki:dataset                     <#dip_tbd> ;
     .

#TBD
<#dip_tbd> rdf:type ja:RDFDataset ;
      ja:defaultGraph <#infModel>  ;      
         tdb:fileMode "direct" ;
         .

<#infModel>  a ja:InfModel ;
       ja:baseModel <#tdbGraph>;
       ja:reasoner
          [ja:reasonerURL
              <http://jena.hpl.hp.com/2003/OWLMicroFBRuleReasoner>].

<#tdbGraph>  rdf:type tdb2:GraphTDB ;
        tdb2:location "C:\\etc\\fuseki/databases/dip5" ;
        tdb2:unionDefaultGraph true ;

        .


Thanks for the help!!!

Reply via email to