/** * Example showing query equivalence. The subproperty relation between hasFather and hasParent properties would normally establish subsumption in one way * but due to cardinality restrictions defined in the ontology two queries _end up being equivalent, */ public void example3() { final Query q5 = query("?x family:hasFather ?y . "); final Query q6 = query("?x family:hasParent ?y . ?y a family:Male ."); System.out.println("Example 3"); System.out.println("========="); System.out.println("Query 5: " + q5.toString()); System.out.println("Query 6: " + q6.toString()); System.out.println(); System.out.println("Query 5 is subsumed by query 6: " + QuerySubsumption.isSubsumedBy(q5, q6)); System.out.println("Query 6 is subsumed by query 5: " + QuerySubsumption.isSubsumedBy(q5, q6)); System.out.println("Query 5 is equivalent to query 6: " + QuerySubsumption.isEquivalentTo(q5, q6)); System.out.println(); }
/** * Example showing query equivalence. The subproperty relation between hasFather and hasParent properties would normally establish subsumption in one way * but due to cardinality restrictions defined in the ontology two queries _end up being equivalent, */ public void example3() { final Query q5 = query("?x family:hasFather ?y . "); final Query q6 = query("?x family:hasParent ?y . ?y a family:Male ."); System.out.println("Example 3"); System.out.println("========="); System.out.println("Query 5: " + q5.toString()); System.out.println("Query 6: " + q6.toString()); System.out.println(); System.out.println("Query 5 is subsumed by query 6: " + QuerySubsumption.isSubsumedBy(q5, q6)); System.out.println("Query 6 is subsumed by query 5: " + QuerySubsumption.isSubsumedBy(q5, q6)); System.out.println("Query 5 is equivalent to query 6: " + QuerySubsumption.isEquivalentTo(q5, q6)); System.out.println(); }
@Test public void testIsEquivalentTo() { Query[] queries = new Query[2]; queries = example1(); assertFalse(QuerySubsumption.isEquivalentTo(queries[0], queries[1])); queries = example2(); assertFalse(QuerySubsumption.isEquivalentTo(queries[1], queries[0])); queries = example3(); assertTrue(QuerySubsumption.isEquivalentTo(queries[1], queries[0])); queries = example4(); assertFalse(QuerySubsumption.isEquivalentTo(queries[1], queries[0])); }