public boolean isEntailed() { final QueryResult results = QueryEngine.exec(_query); return !results.isEmpty(); }
/** * Simplifies the query. * * @param query */ private static void simplify(final Query query) { domainRangeSimplification(query); }
private static QueryResult execSingleQuery(final Query query) { if (hasUndefinedTerm(query)) return new QueryResultImpl(query); return getQueryExec().exec(query); }
return isIndividual(args.get(0), kb) && isClass(args.get(1), kb); final ATermAppl p = args.get(1); final ATermAppl o = args.get(2); return isIndividual(s, kb) && (ATermUtils.isVar(o) ? isProperty(p, kb) : ATermUtils.isLiteral(o) ? isDatatypeProperty(p, kb) : isObjectProperty(p, kb) && isIndividual(o, kb)); return isIndividual(args.get(0), kb) && isIndividual(args.get(1), kb); return isDatatypeProperty(args.get(0), kb); case Reflexive: case Irreflexive: return isObjectProperty(args.get(0), kb); return isProperty(args.get(0), kb); return isObjectProperty(args.get(0), kb) && isObjectProperty(args.get(1), kb); return isProperty(args.get(0), kb) && isClass(args.get(1), kb); case Range: return isObjectProperty(args.get(0), kb) && isClass(args.get(1), kb) || isDatatypeProperty(args.get(0), kb) && isDatatype(args.get(1), kb); case DirectSubPropertyOf: case propertyDisjointWith: return isProperty(args.get(0), kb) && isProperty(args.get(1), kb); case StrictSubClassOf: case DirectSubClassOf: return isClass(args.get(0), kb) && isClass(args.get(1), kb);
final Query preprocessed = preprocess(query); simplify(preprocessed); final List<Query> queries = split(preprocessed); else if (queries.size() == 1) r = execSingleQuery(queries.get(0)); else results.add(execSingleQuery(q));
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); } }
if (constants.isEmpty()) if (QueryEngine.execBooleanABoxQuery(core.getQuery())) _result.add(binding); final CoreStrategy s = QueryEngine.getStrategy(current);
case NotKnown: for (final QueryAtom notAtom : ((NotKnownQueryAtom) atom).getAtoms()) if (!checkGround(notAtom, kb)) return true; return false; if (!checkGround(unionAtom, kb)) break; // Go to next sequence of atoms return true;
private static boolean hasUndefinedTerm(final List<QueryAtom> atoms, final KnowledgeBase kb) { for (final QueryAtom atom : atoms) if (!hasDefinedTerms(atom, kb)) return true; return false; }
public static boolean supports(final Query query, @SuppressWarnings("unused") final KnowledgeBase kb) { return getQueryExec().supports(query); }
private static boolean hasUndefinedTerm(final Query query) { return hasUndefinedTerm(query.getAtoms(), query.getKB()); }
_branchCount = b; switch (QueryEngine.getStrategy(atom))
return isIndividual(args.get(0), kb) && isClass(args.get(1), kb); final ATermAppl p = args.get(1); final ATermAppl o = args.get(2); return isIndividual(s, kb) && (ATermUtils.isVar(o) ? isProperty(p, kb) : ATermUtils.isLiteral(o) ? isDatatypeProperty(p, kb) : isObjectProperty(p, kb) && isIndividual(o, kb)); return isIndividual(args.get(0), kb) && isIndividual(args.get(1), kb); return isDatatypeProperty(args.get(0), kb); case Reflexive: case Irreflexive: return isObjectProperty(args.get(0), kb); return isProperty(args.get(0), kb); return isObjectProperty(args.get(0), kb) && isObjectProperty(args.get(1), kb); return isProperty(args.get(0), kb) && isClass(args.get(1), kb); case Range: return isObjectProperty(args.get(0), kb) && isClass(args.get(1), kb) || isDatatypeProperty(args.get(0), kb) && isDatatype(args.get(1), kb); case DirectSubPropertyOf: case propertyDisjointWith: return isProperty(args.get(0), kb) && isProperty(args.get(1), kb); case StrictSubClassOf: case DirectSubClassOf: return isClass(args.get(0), kb) && isClass(args.get(1), kb);
final Query preprocessed = preprocess(query); simplify(preprocessed); final List<Query> queries = split(preprocessed); else if (queries.size() == 1) r = execSingleQuery(queries.get(0)); else results.add(execSingleQuery(q));
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); } }
if (constants.isEmpty()) if (QueryEngine.execBooleanABoxQuery(core.getQuery())) _result.add(binding); final CoreStrategy s = QueryEngine.getStrategy(current);
case NotKnown: for (final QueryAtom notAtom : ((NotKnownQueryAtom) atom).getAtoms()) if (!checkGround(notAtom, kb)) return true; return false; if (!checkGround(unionAtom, kb)) break; // Go to next sequence of atoms return true;
private static boolean hasUndefinedTerm(final List<QueryAtom> atoms, final KnowledgeBase kb) { for (final QueryAtom atom : atoms) if (!hasDefinedTerms(atom, kb)) return true; return false; }
public static boolean supports(final Query query, @SuppressWarnings("unused") final KnowledgeBase kb) { return getQueryExec().supports(query); }
private static boolean hasUndefinedTerm(final Query query) { return hasUndefinedTerm(query.getAtoms(), query.getKB()); }