Steve, so subsequent queries on the model should be much faster. +1 to
Dave's comments, matrialization is the way to go here to speed up the
process.

in addition for large datasets I would recommend generic rules or construct
queries if you already know which data points you would like to process to
generate the query model.

On Sun, Feb 23, 2020 at 9:33 PM Dave Reynolds <dave.e.reyno...@gmail.com>
wrote:

> The issues is not performance of SPARQL but performance of the inference
> engines.
>
> If you need some OWL inference then your best bet is OWLMicro.
>
> If that's tow slow to query directly then one option to try is to
> materialize the entire inference closure and then query that. You can
> that by simply copying the inference model to a plain model.
>
> If that's too slow then you'll need a higher performance third party
> reasoner.
>
> Dave
>
> On 23/02/2020 18:57, Steve Vestal wrote:
> > I'm looking for suggestions on a SPARQL performance issue.  My test
> > model has ~800 sentences, and processing of one select query takes about
> > 25 minutes.  The query is a basic graph pattern with 9 variables and 20
> > triples, plus a filter that forces distinct variables to have distinct
> > solutions using pair-wise not-equals constraints.  No option clause or
> > anything else fancy.
> >
> > I am issuing the query against an inference model.  Most of the asserted
> > sentences are in imported models.  If I iterate over all the statements
> > in the OntModel, I get ~1500 almost instantly.  I experimented with
> > several of the reasoners.
> >
> > Below is the basic control flow.  The thing I found curious is that the
> > execSelect() method finishes almost instantly.  It is the iteration over
> > the ResultSet that is taking all the time, it seems in the call to
> > selectResult.hasNext(). The result has 192 rows, 9 columns.  The results
> > are provided in bursts of 8 rows each, with ~1 minute between bursts.
> >
> >          OntModel ontologyModel = getMyOntModel(); // Tried various
> reasoners
> >          String selectQuery = getMySelectQuery();
> >          QueryExecution selectExec =
> > QueryExecutionFactory.create(selectQuery, ontologyModel);
> >          ResultSet selectResult = selectExec.execSelect();
> >          while (selectResult.hasNext()) {  // Time seems to be spent in
> > hasNext
> >              QuerySolution selectSolution = selectResult.next();
> >              for (String var : getMyVariablesOfInterest() {
> >                  RDFNode varValue = selectSolution.get(var);
> >                  // process varValue
> >              }
> >          }
> >
> > Any suggestions would be appreciated.
> >
>
-- 


---
Marco Neumann
KONA

Reply via email to