private void runNext(final ResultBinding binding, final List<ATermAppl> arguments, final ATermAppl... values) { final ResultBinding candidateBinding = binding.duplicate(); for (int i = 0; i < arguments.size(); i++) if (ATermUtils.isVar(arguments.get(i))) candidateBinding.setValue(arguments.get(i), values[i]); exec(candidateBinding); }
private void execAllFastCore(final Query q, final ResultBinding binding, final Collection<ATermAppl> distVars, final Collection<ATermAppl> undistVars) { if (distVars.isEmpty()) exec(binding); else { final ATermAppl var = distVars.iterator().next(); distVars.remove(var); final Map<ATermAppl, Boolean> instances = fastPrune(q, var); for (final Entry<ATermAppl, Boolean> entry : instances.entrySet()) { final ATermAppl b = entry.getKey(); final ResultBinding newBinding = binding.duplicate(); newBinding.setValue(var, b); final Query q2 = q.apply(newBinding); if (entry.getValue() || QueryEngine.execBooleanABoxQuery(q2)) execAllFastCore(q2, newBinding, distVars, undistVars); } distVars.add(var); } }
private void runNext(final ResultBinding binding, final List<ATermAppl> arguments, final ATermAppl... values) { final ResultBinding candidateBinding = binding.duplicate(); for (int i = 0; i < arguments.size(); i++) if (ATermUtils.isVar(arguments.get(i))) candidateBinding.setValue(arguments.get(i), values[i]); exec(candidateBinding); }
private void execAllFastCore(final Query q, final ResultBinding binding, final Collection<ATermAppl> distVars, final Collection<ATermAppl> undistVars) { if (distVars.isEmpty()) exec(binding); else { final ATermAppl var = distVars.iterator().next(); distVars.remove(var); final Map<ATermAppl, Boolean> instances = fastPrune(q, var); for (final Entry<ATermAppl, Boolean> entry : instances.entrySet()) { final ATermAppl b = entry.getKey(); final ResultBinding newBinding = binding.duplicate(); newBinding.setValue(var, b); final Query q2 = q.apply(newBinding); if (entry.getValue() || QueryEngine.execBooleanABoxQuery(q2)) execAllFastCore(q2, newBinding, distVars, undistVars); } distVars.add(var); } }
private void runNext(final ResultBinding binding, final List<ATermAppl> arguments, final ATermAppl... values) { final ResultBinding candidateBinding = binding.duplicate(); for (int i = 0; i < arguments.size(); i++) if (ATermUtils.isVar(arguments.get(i))) candidateBinding.setValue(arguments.get(i), values[i]); exec(candidateBinding); }
private void execAllFastCore(final Query q, final ResultBinding binding, final Collection<ATermAppl> distVars, final Collection<ATermAppl> undistVars) { if (distVars.isEmpty()) exec(binding); else { final ATermAppl var = distVars.iterator().next(); distVars.remove(var); final Map<ATermAppl, Boolean> instances = fastPrune(q, var); for (final Entry<ATermAppl, Boolean> entry : instances.entrySet()) { final ATermAppl b = entry.getKey(); final ResultBinding newBinding = binding.duplicate(); newBinding.setValue(var, b); final Query q2 = q.apply(newBinding); if (entry.getValue() || QueryEngine.execBooleanABoxQuery(q2)) execAllFastCore(q2, newBinding, distVars, undistVars); } distVars.add(var); } }
/** * {@inheritDoc} */ @Override public QueryResult exec(final Query query) { _logger.fine(() -> "Executing query " + query); final Timer timer = new Timer("CombinedQueryEngine"); timer.start(); prepare(query); branches = 0; exec(new ResultBindingImpl()); timer.stop(); _logger.fine(() -> "#B=" + branches + ", time=" + timer.getLast() + " ms."); return _result; }
/** * {@inheritDoc} */ @Override public QueryResult exec(final Query query) { _logger.fine(() -> "Executing query " + query); final Timer timer = new Timer("CombinedQueryEngine"); timer.start(); prepare(query); branches = 0; exec(new ResultBindingImpl()); timer.stop(); _logger.fine(() -> "#B=" + branches + ", time=" + timer.getLast() + " ms."); return _result; }
/** * {@inheritDoc} */ @Override public QueryResult exec(final Query query) { _logger.fine(() -> "Executing query " + query); final Timer timer = new Timer("CombinedQueryEngine"); timer.start(); prepare(query); branches = 0; exec(new ResultBindingImpl()); timer.stop(); _logger.fine(() -> "#B=" + branches + ", time=" + timer.getLast() + " ms."); return _result; }
private void runAllPropertyChecks(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl var, final Set<ATermAppl> candidates, final ResultBinding binding) { if (isDownMonotonic(var)) for (final TaxonomyNode<ATermAppl> topNode : _kb.getRoleTaxonomy(true).getTop().getSubs()) { final ATermAppl top = topNode.getName(); if (candidates.contains(top)) runRecursively(_kb.getRoleTaxonomy(true), var, topNode.getName(), binding, new HashSet<>(candidates), false, false); } else for (final ATermAppl candidate : candidates) { final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(var, candidate); exec(candidateBinding); } }
private void runAllPropertyChecks(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl var, final Set<ATermAppl> candidates, final ResultBinding binding) { if (isDownMonotonic(var)) for (final TaxonomyNode<ATermAppl> topNode : _kb.getRoleTaxonomy(true).getTop().getSubs()) { final ATermAppl top = topNode.getName(); if (candidates.contains(top)) runRecursively(_kb.getRoleTaxonomy(true), var, topNode.getName(), binding, new HashSet<>(candidates), false, false); } else for (final ATermAppl candidate : candidates) { final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(var, candidate); exec(candidateBinding); } }
private void runAllPropertyChecks(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl var, final Set<ATermAppl> candidates, final ResultBinding binding) { if (isDownMonotonic(var)) for (final TaxonomyNode<ATermAppl> topNode : _kb.getRoleTaxonomy(true).getTop().getSubs()) { final ATermAppl top = topNode.getName(); if (candidates.contains(top)) runRecursively(_kb.getRoleTaxonomy(true), var, topNode.getName(), binding, new HashSet<>(candidates), false, false); } else for (final ATermAppl candidate : candidates) { final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(var, candidate); exec(candidateBinding); } }
private void runSymetricCheck(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl cA, final ATermAppl known, final ATermAppl cB, final ATermAppl dependent, final ResultBinding binding) { final ResultBinding candidateBinding = binding.duplicate(); if (!ATermUtils.isVar(cA)) candidateBinding.setValue(cB, dependent); else if (!ATermUtils.isVar(cB)) candidateBinding.setValue(cA, dependent); else { candidateBinding.setValue(cA, known); candidateBinding.setValue(cB, dependent); } exec(candidateBinding); }
private void runSymetricCheck(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl cA, final ATermAppl known, final ATermAppl cB, final ATermAppl dependent, final ResultBinding binding) { final ResultBinding candidateBinding = binding.duplicate(); if (!ATermUtils.isVar(cA)) candidateBinding.setValue(cB, dependent); else if (!ATermUtils.isVar(cB)) candidateBinding.setValue(cA, dependent); else { candidateBinding.setValue(cA, known); candidateBinding.setValue(cB, dependent); } exec(candidateBinding); }
private void runSymetricCheck(@SuppressWarnings("unused") final QueryAtom current, final ATermAppl cA, final ATermAppl known, final ATermAppl cB, final ATermAppl dependent, final ResultBinding binding) { final ResultBinding candidateBinding = binding.duplicate(); if (!ATermUtils.isVar(cA)) candidateBinding.setValue(cB, dependent); else if (!ATermUtils.isVar(cB)) candidateBinding.setValue(cA, dependent); else { candidateBinding.setValue(cA, known); candidateBinding.setValue(cB, dependent); } exec(candidateBinding); }