@Test public void test9() { classes(_A, _B); objectProperties(_p, _q); individuals(_a, _b, _c); _kb.addPropertyValue(_p, _a, _b); final Query q1 = query(select(x), where(TypeAtom(x, TOP), NotKnownAtom(PropertyValueAtom(x, _p, y)), NotKnownAtom(PropertyValueAtom(x, _q, z)))); testQuery(q1, new ATermAppl[][] { { _b }, { _c } }); final Query q2 = query(select(x), where(TypeAtom(x, TOP), NotKnownAtom(PropertyValueAtom(x, _p, y), PropertyValueAtom(x, _q, z)))); testQuery(q2, new ATermAppl[][] { { _a }, { _b }, { _c } }); } }
q.add(QueryAtomFactory.SubClassOfAtom(clazz, clazz)); break; case PropertyValue: q.add(QueryAtomFactory.SubPropertyOfAtom(property, property)); break; default:
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { final List<ATermAppl> differents = new ArrayList<>(); axiom.individuals().forEach(ind -> { final ATermAppl term = _indConv.getTerm(ind); for (final ATermAppl dterm : differents) _query.add(QueryAtomFactory.DifferentFromAtom(term, dterm)); }); }
@Test public void test8() { classes(_A, _B); individuals(_a, _b, _c); _kb.addType(_a, _A); final Query q1 = query(select(x), where(TypeAtom(x, TOP), NotKnownAtom(TypeAtom(x, _A)), NotKnownAtom(TypeAtom(x, _B)))); testQuery(q1, new ATermAppl[][] { { _b }, { _c } }); final Query q2 = query(select(x), where(TypeAtom(x, TOP), NotKnownAtom(TypeAtom(x, _A), TypeAtom(x, _B)))); testQuery(q2, new ATermAppl[][] { { _a }, { _b }, { _c } }); }
query.add(QueryAtomFactory.SubClassOfAtom(s, TermFactory.TOP)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.TypeAtom(s, TermFactory.TOP)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.ObjectPropertyAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.DatatypePropertyAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.FunctionalAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.InverseFunctionalAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.TransitiveAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.SymmetricAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.AsymmetricAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.ReflexiveAtom(s)); if (ATermUtils.isVar(s))
@Test public void test3() { classes(_A, _B); objectProperties(_p, _q); individuals(_a, _b, _c); _kb.addType(_a, _A); _kb.addType(_b, _A); _kb.addPropertyValue(_p, _a, _c); _kb.addPropertyValue(_p, _b, _c); final Query q1 = query(select(x, y), where(TypeAtom(x, _A), UnionAtom(Arrays.asList(Arrays.asList(PropertyValueAtom(x, _p, y)), Arrays.asList(PropertyValueAtom(x, _q, y)))))); testQuery(q1, new ATermAppl[][] { { _a, _c }, { _b, _c } }); } }
@Test public void testMixedQuery() { classes(_A, _B, _C); individuals(_a); _kb.addSubClass(_A, _C); _kb.addSubClass(_B, _C); _kb.addType(_a, _A); final Query q1 = query(SubClassOfAtom(x, _C), TypeAtom(y, x)); q1.addDistVar(x, VarType.CLASS); q1.addResultVar(x); final QueryResult qr = QueryEngine.exec(q1); final List<ATermAppl> results = new ArrayList<>(); for (final ResultBinding result : qr) { System.out.println(result); results.add(result.getValue(x)); } assertIteratorValues(results.iterator(), new ATermAppl[] { _A, _C }); }
final Query q1 = query(TypeAtom(x, _A)); final Query q2 = query(TypeAtom(x, _B)); final Query q3 = query(PropertyValueAtom(x, _p, y), TypeAtom(y, _B)); final Query q4 = query(TypeAtom(x, _A), PropertyValueAtom(x, _p, y), TypeAtom(y, _B)); final Query q5 = query(TypeAtom(x, _C)); final Query q6 = query(TypeAtom(x, _A), TypeAtom(x, _C));
@Override public void visit(final OWLDataPropertyAssertionAxiom axiom) { final ATermAppl subj = _indConv.getTerm(axiom.getSubject()); final ATermAppl pred = _reasoner.term(axiom.getProperty()); final ATermAppl obj = _reasoner.term(axiom.getObject()); _query.add(QueryAtomFactory.PropertyValueAtom(subj, pred, obj)); }
@Test public void rangeQuery1() { classes(_C, _D); objectProperties(_p, _q); dataProperties(_r); _kb.addSubProperty(_q, _p); _kb.addRange(_p, _C); final ATermAppl pv = var("pv"); final ATermAppl cv = var("cv"); final Query query = query(select(pv, cv), where(RangeAtom(pv, cv), ObjectPropertyAtom(pv))); testQuery(query, new ATermAppl[][] { { _p, TOP }, { _q, TOP }, { TOP_OBJECT_PROPERTY, TOP }, { BOTTOM_OBJECT_PROPERTY, TOP }, { BOTTOM_OBJECT_PROPERTY, BOTTOM }, { _p, _C }, { _q, _C }, { BOTTOM_OBJECT_PROPERTY, _C }, { BOTTOM_OBJECT_PROPERTY, _D } }); }
@Override public void visit(final OWLClassAssertionAxiom axiom) { final ATermAppl ind = _indConv.getTerm(axiom.getIndividual()); final ATermAppl cls = _reasoner.term(axiom.getClassExpression()); _query.add(QueryAtomFactory.TypeAtom(ind, cls)); }
@Test public void datatypeQuery() { dataProperties(_p); individuals(_a, _b, _c); _kb.addPropertyValue(_p, _a, literal(3)); _kb.addPropertyValue(_p, _b, literal(300)); _kb.addPropertyValue(_p, _b, literal("3")); final Query query1 = query(select(x), where(PropertyValueAtom(x, _p, y), DatatypeAtom(y, Datatypes.INTEGER))); testQuery(query1, new ATermAppl[][] { { _a }, { _b } }); final Query query2 = query(select(x), where(PropertyValueAtom(x, _p, y), DatatypeAtom(y, Datatypes.BYTE))); testQuery(query2, new ATermAppl[][] { { _a } }); }
@Test public void domainQuery3() { classes(_C, _D); objectProperties(_p, _q); dataProperties(_r); _kb.addSubProperty(_q, _p); _kb.addDomain(_p, _C); final ATermAppl pv = var("pv"); final Query query = query(select(pv), where(DomainAtom(pv, _C))); testQuery(query, new ATermAppl[][] { { _p }, { _q }, { BOTTOM_OBJECT_PROPERTY }, { BOTTOM_DATA_PROPERTY } }); }
@Override public void visit(final OWLSameIndividualAxiom axiom) { ATermAppl head = null; for (final OWLIndividual ind : asList(axiom.individuals())) { final ATermAppl term = _indConv.getTerm(ind); if (head == null) head = term; else _query.add(QueryAtomFactory.SameAsAtom(head, term)); } }
@Test public void symmetricQuery() { classes(_C, _D); objectProperties(_p, _q, _r); _kb.addInverseProperty(_q, _p); _kb.addSymmetricProperty(_r); final ATermAppl v = var("v"); final Query query = query(select(v), where(InverseOfAtom(v, v))); testQuery(query, new ATermAppl[][] { { _r }, { TOP_OBJECT_PROPERTY }, { BOTTOM_OBJECT_PROPERTY } }); } }
@Test public void rangeQuery2() { classes(_C, _D); objectProperties(_p, _q); dataProperties(_r); _kb.addSubProperty(_q, _p); _kb.addRange(_p, _C); final ATermAppl cv = var("cv"); final Query query = query(select(cv), where(RangeAtom(_q, cv))); testQuery(query, new ATermAppl[][] { { TOP }, { _C } }); }
query.add(QueryAtomFactory.SubClassOfAtom(s, TermFactory.TOP)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.TypeAtom(s, TermFactory.TOP)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.ObjectPropertyAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.DatatypePropertyAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.FunctionalAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.InverseFunctionalAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.TransitiveAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.SymmetricAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.AsymmetricAtom(s)); if (ATermUtils.isVar(s)) query.add(QueryAtomFactory.ReflexiveAtom(s)); if (ATermUtils.isVar(s))
@Test public void test4() { classes(_A, _B); individuals(_a, _b); final Query q = ask(NotKnownAtom(TypeAtom(x, _B))); testQuery(q, true); }
@Override public void visit(final OWLObjectPropertyAssertionAxiom axiom) { final ATermAppl subj = _indConv.getTerm(axiom.getSubject()); final ATermAppl pred = _reasoner.term(axiom.getProperty()); final ATermAppl obj = _indConv.getTerm(axiom.getObject()); _query.add(QueryAtomFactory.PropertyValueAtom(subj, pred, obj)); }