/** * {@inheritDoc} */ @Override public QueryAtom apply(final ResultBinding binding) { if (isGround()) return this; final List<ATermAppl> newArguments = new ArrayList<>(); for (final ATermAppl a : _arguments) if (binding.isBound(a)) newArguments.add(binding.getValue(a)); else newArguments.add(a); return newArguments.isEmpty() ? this : new QueryAtomImpl(_predicate, newArguments); }
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); }
/** * {@inheritDoc} */ @Override public void setValues(final ResultBinding binding) { if (binding instanceof ResultBindingImpl) _bindings.putAll(((ResultBindingImpl) binding)._bindings); else for (final ATermAppl var : binding.getAllVariables()) setValue(var, binding.getValue(var)); }
if (!binding.isEmpty() || _result.isEmpty()) if (!_result.getResultVars().containsAll(binding.getAllVariables())) final ATermAppl value = binding.getValue(var); newBinding.setValue(var, value);
for (final ATermAppl var : binding.getAllVariables()) newBinding.setValue(var, binding.getValue(var));
/** * The subsumption in this example holds because of the subproperty relation between hasBrother and hasSibling. however, The second query uses the variable * name ?z instead of the the variable name ?y used in the first query. The query subsumption algorithm finds the mapping between query variables. */ public void example4() { final Query q7 = query("?x a family:Female; family:hasBrother ?y . "); final Query q8 = query("?x a family:Female; family:hasSibling ?z ."); System.out.println("Example 4"); System.out.println("========="); System.out.println("Query 7: " + q7.toString()); System.out.println("Query 8: " + q8.toString()); System.out.println(); System.out.println("Query 7 is subsumed by query 8: " + QuerySubsumption.isSubsumedBy(q7, q8)); System.out.print("Subsumption mappings: "); final QueryResult mappings = QuerySubsumption.getSubsumptionMappings(q7, q8); for (final ResultBinding mapping : mappings) for (final Iterator<?> j = q8.getVars().iterator(); j.hasNext();) { final ATermAppl var = (ATermAppl) j.next(); System.out.print(var.getArgument(0) + " -> " + mapping.getValue(var)); //I get var(x) as opposed to x if (j.hasNext()) System.out.print(", "); } System.out.println(); } }
if (direct ? _kb.getInstances(ic, direct).contains(ic) : _kb.isType(ic, ic)) final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(tI, ic); final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(var, a); exec(candidateBinding); for (final ResultBinding newBinding : newResult) newBinding.setValues(binding); exec(newBinding);
/** * {@inheritDoc} */ @Override public ResultBinding next() { if (!more) return null; final ResultBinding next = new ResultBindingImpl(); for (int i = 0; i < indices.length; i++) next.setValue(vars.get(i), varB.get(i).get(indices[i])); more = incIndex(0); return next; }
/** * {@inheritDoc} */ @Override public Query apply(final ResultBinding binding) { final List<QueryAtom> atoms = new ArrayList<>(); for (final QueryAtom atom : getAtoms()) atoms.add(atom.apply(binding)); final QueryImpl query = new QueryImpl(this); query._resultVars.addAll(_resultVars); query._resultVars.removeAll(binding.getAllVariables()); for (final VarType type : VarType.values()) for (final ATermAppl atom : getDistVarsForType(type)) if (!binding.isBound(atom)) query.addDistVar(atom, type); for (final QueryAtom atom : atoms) query.add(atom); return query; }
final ResultBinding candidate = i.next().duplicate(); candidate.setValues(binding); if (hasLiterals) for (final Iterator<ResultBinding> l = new LiteralIterator(q, candidate); l.hasNext();) final ResultBinding mappy = binding.duplicate(); mappy.setValues(l.next()); if (QueryEngine.execBooleanABoxQuery(q.apply(mappy))) exec(mappy);
@Override public ResultBinding next() { if (!hasNext()) throw new NoSuchElementException(); final ResultBinding result = new ResultBindingImpl(); for (final ResultBinding binding : bindings) result.setValues(binding); findNext(); return result; }
if (!binding.isEmpty() || _result.isEmpty()) if (!_result.getResultVars().containsAll(binding.getAllVariables())) final ATermAppl value = binding.getValue(var); newBinding.setValue(var, value);
for (final ATermAppl var : binding.getAllVariables()) newBinding.setValue(var, binding.getValue(var));
/** * The subsumption in this example holds because of the subproperty relation between hasBrother and hasSibling. however, The second query uses the variable * name ?z instead of the the variable name ?y used in the first query. The query subsumption algorithm finds the mapping between query variables. */ public void example4() { final Query q7 = query("?x a family:Female; family:hasBrother ?y . "); final Query q8 = query("?x a family:Female; family:hasSibling ?z ."); System.out.println("Example 4"); System.out.println("========="); System.out.println("Query 7: " + q7.toString()); System.out.println("Query 8: " + q8.toString()); System.out.println(); System.out.println("Query 7 is subsumed by query 8: " + QuerySubsumption.isSubsumedBy(q7, q8)); System.out.print("Subsumption mappings: "); final QueryResult mappings = QuerySubsumption.getSubsumptionMappings(q7, q8); for (final ResultBinding mapping : mappings) for (final Iterator<?> j = q8.getVars().iterator(); j.hasNext();) { final ATermAppl var = (ATermAppl) j.next(); System.out.print(var.getArgument(0) + " -> " + mapping.getValue(var)); //I get var(x) as opposed to x if (j.hasNext()) System.out.print(", "); } System.out.println(); } }
if (direct ? _kb.getInstances(ic, direct).contains(ic) : _kb.isType(ic, ic)) final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(tI, ic); final ResultBinding candidateBinding = binding.duplicate(); candidateBinding.setValue(var, a); exec(candidateBinding); for (final ResultBinding newBinding : newResult) newBinding.setValues(binding); exec(newBinding);
/** * {@inheritDoc} */ @Override public ResultBinding next() { if (!more) return null; final ResultBinding next = new ResultBindingImpl(); for (int i = 0; i < indices.length; i++) next.setValue(vars.get(i), varB.get(i).get(indices[i])); more = incIndex(0); return next; }
/** * {@inheritDoc} */ @Override public Query apply(final ResultBinding binding) { final List<QueryAtom> atoms = new ArrayList<>(); for (final QueryAtom atom : getAtoms()) atoms.add(atom.apply(binding)); final QueryImpl query = new QueryImpl(this); query._resultVars.addAll(_resultVars); query._resultVars.removeAll(binding.getAllVariables()); for (final VarType type : VarType.values()) for (final ATermAppl atom : getDistVarsForType(type)) if (!binding.isBound(atom)) query.addDistVar(atom, type); for (final QueryAtom atom : atoms) query.add(atom); return query; }
final ResultBinding candidate = i.next().duplicate(); candidate.setValues(binding); if (hasLiterals) for (final Iterator<ResultBinding> l = new LiteralIterator(q, candidate); l.hasNext();) final ResultBinding mappy = binding.duplicate(); mappy.setValues(l.next()); if (QueryEngine.execBooleanABoxQuery(q.apply(mappy))) exec(mappy);
@Override public ResultBinding next() { if (!hasNext()) throw new NoSuchElementException(); final ResultBinding result = new ResultBindingImpl(); for (final ResultBinding binding : bindings) result.setValues(binding); findNext(); return result; }
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); }