// @Test public void testNoHead() throws RecognitionException { datalog = parser.parse(CQ_STRINGS[5]); EXPECTED_RULE_SIZE = 1; List<CQIE> rules = datalog.getRules(); assertTrue("Mismatch rule size!", rules.size() == EXPECTED_RULE_SIZE); // Rule #1 // -- The Head Function head = rules.get(0).getHead(); assertNull("Head is not null!", head); // -- The Body EXPECTED_BODY_SIZE = 1; List<Function> body = rules.get(0).getBody(); assertNotNull("Body is null!", body); assertTrue("Mismatch body size!", body.size() == EXPECTED_BODY_SIZE); // ---- Body atom #1 uri = ((Function) body.get(0)).getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://example.org/stuff/1.0/q"); EXPECTED_BODY_TERM_SIZE = 1; terms = ((Function) body.get(0)).getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_BODY_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); }
// @Test public void testNoBody() throws RecognitionException { datalog = parser.parse(CQ_STRINGS[6]); EXPECTED_RULE_SIZE = 1; List<CQIE> rules = datalog.getRules(); assertTrue("Mismatch rule size!", rules.size() == EXPECTED_RULE_SIZE); // Rule #1 // -- The Head Function head = rules.get(0).getHead(); assertNotNull("Head is null!", head); uri = head.getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://www.abc.org/1999/02/22-abc-syntax-ns#p"); EXPECTED_HEAD_TERM_SIZE = 1; terms = head.getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_HEAD_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); // -- The Body EXPECTED_BODY_SIZE = 1; List<Function> body = rules.get(0).getBody(); assertTrue("Body is not empty!", body.size() == 0); }
// @Test public void testBasicInputDatalogSyntax() throws RecognitionException { datalog = parser.parse(CQ_STRINGS[0]); EXPECTED_RULE_SIZE = 1; List<CQIE> rules = datalog.getRules(); assertTrue("Mismatch rule size!", rules.size() == EXPECTED_RULE_SIZE); // Rule #1 // -- The Head Function head = rules.get(0).getHead(); assertNotNull("Head is null!", head); uri = head.getFunctionSymbol().getName().toString(); assertEquals("Mismatch predicate name!", uri, "http://www.abc.org/1999/02/22-abc-syntax-ns#p"); EXPECTED_HEAD_TERM_SIZE = 2; terms = head.getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_HEAD_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); term = terms.get(1); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "y"); // -- The Body EXPECTED_BODY_SIZE = 2; List<Function> body = rules.get(0).getBody(); assertNotNull("Body is null!", body); assertTrue("Mismatch body size!", body.size() == EXPECTED_BODY_SIZE); // ---- Body atom #1 uri = ((Function) body.get(0)).getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://example.org/stuff/1.0/q"); EXPECTED_BODY_TERM_SIZE = 1; terms = ((Function) body.get(0)).getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_BODY_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); // ---- Body atom #2 uri = ((Function) body.get(1)).getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://base.org/stuff/1.0/r"); EXPECTED_BODY_TERM_SIZE = 1; terms = ((Function) body.get(1)).getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_BODY_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "y"); }
// @Test public void testFullNameWithUri() throws RecognitionException { datalog = parser.parse(CQ_STRINGS[10]); EXPECTED_RULE_SIZE = 1; List<CQIE> rules = datalog.getRules(); assertTrue("Mismatch rule size!", rules.size() == EXPECTED_RULE_SIZE); // Rule #1 // -- The Head Function head = rules.get(0).getHead(); assertNotNull("Head is null!", head); uri = head.getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://www.abc.org/1999/02/22-abc-syntax-ns#p"); EXPECTED_HEAD_TERM_SIZE = 2; terms = head.getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_HEAD_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); term = terms.get(1); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "y"); // -- The Body EXPECTED_BODY_SIZE = 2; List<Function> body = rules.get(0).getBody(); assertNotNull("Body is null!", body); assertTrue("Mismatch body size!", body.size() == EXPECTED_BODY_SIZE); // ---- Body atom #1 uri = ((Function) body.get(0)).getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://example.org/stuff/1.0/q"); EXPECTED_BODY_TERM_SIZE = 1; terms = ((Function) body.get(0)).getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_BODY_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) term).getName(), "x"); // ---- Body atom #2 uri = ((Function) body.get(1)).getFunctionSymbol().getName(); assertEquals("Mismatch predicate name!", uri, "http://base.org/stuff/1.0/r"); EXPECTED_BODY_TERM_SIZE = 2; terms = ((Function) body.get(1)).getTerms(); assertEquals("Mismatch term size!", terms.size(), EXPECTED_BODY_TERM_SIZE); term = terms.get(0); assertTrue("Mismatch term type!", term instanceof FunctionalTermImpl); assertEquals( "Mismatch variable name!", ((FunctionalTermImpl) term).getFunctionSymbol().toString(), "http://example.org/stuff/1.0/s"); // ------ Object term List<Term> objVarTerms = ((FunctionalTermImpl) term).getTerms(); assertEquals("Mismatch term size!", objVarTerms.size(), 2); Term objVarTerm = objVarTerms.get(0); assertTrue("Mismatch term type!", objVarTerm instanceof Variable); assertEquals("Mismatch variable name!", ((Variable) objVarTerm).getName(), "y"); objVarTerm = objVarTerms.get(1); assertTrue("Mismatch term type!", objVarTerm instanceof ValueConstantImpl); assertEquals("Mismatch variable name!", ((ValueConstantImpl) objVarTerm).getValue(), "Student"); // ------ Object term ends. term = terms.get(1); assertTrue("Mismatch term type!", term instanceof URIConstantImpl); assertEquals( "Mismatch variable name!", ((URIConstantImpl) term).getURI().toString(), "http://example.org/stuff/1.1/FUB"); }