/** * Helper method to extract all matching clauses from an * iterator over rules */ private void checkAll(Iterator<Rule> candidates, TriplePattern goal, List<Rule> matchingRules) { while (candidates.hasNext()) { Rule r = candidates.next(); if ( ((TriplePattern)r.getHeadElement(0)).compatibleWith(goal) ) { matchingRules.add(r); } } }
/** * Helper method to extract all matching clauses from an * iterator over rules */ private void checkAll(Iterator<Rule> candidates, TriplePattern goal, List<Rule> matchingRules) { while (candidates.hasNext()) { Rule r = candidates.next(); if ( ((TriplePattern)r.getHeadElement(0)).compatibleWith(goal) ) { matchingRules.add(r); } } }
/** * Return the argument index of the given variable. */ int aIndex(Node n) { TriplePattern tp = (TriplePattern)rule.getHeadElement(0); if (tp.getSubject() == n) { return 0; } else if (tp.getPredicate() == n) { return 1; } else if (tp.getObject() == n) { return 2; } else { return -1; } }
/** * Return the argument index of the given variable. */ int aIndex(Node n) { TriplePattern tp = (TriplePattern)rule.getHeadElement(0); if (tp.getSubject() == n) { return 0; } else if (tp.getPredicate() == n) { return 1; } else if (tp.getObject() == n) { return 2; } else { return -1; } }
if (allRules != null) allRules.remove(rule); Object headClause = rule.getHeadElement(0); if (headClause instanceof TriplePattern) { TriplePattern headpattern = (TriplePattern)headClause;
if (allRules != null) allRules.remove(rule); Object headClause = rule.getHeadElement(0); if (headClause instanceof TriplePattern) { TriplePattern headpattern = (TriplePattern)headClause;
/** * Add a single/remove a compound rule from the store. * @param rule the rule, may have multiple heads * @param isAdd true to add, false to remove */ private void addRemoveRule(Rule rule, boolean isAdd) { if (rule.headLength() != 1) { for (int j = 0; j < rule.headLength(); j++) { Rule newRule = new Rule(rule.getName(), new ClauseEntry[] {rule.getHeadElement(j)}, rule.getBody() ); newRule.setNumVars(rule.getNumVars()); doAddRemoveRule(newRule, isAdd); } } else { doAddRemoveRule(rule, isAdd); } }
/** * Add a single/remove a compound rule from the store. * @param rule the rule, may have multiple heads * @param isAdd true to add, false to remove */ private void addRemoveRule(Rule rule, boolean isAdd) { if (rule.headLength() != 1) { for (int j = 0; j < rule.headLength(); j++) { Rule newRule = new Rule(rule.getName(), new ClauseEntry[] {rule.getHeadElement(j)}, rule.getBody() ); newRule.setNumVars(rule.getNumVars()); doAddRemoveRule(newRule, isAdd); } } else { doAddRemoveRule(rule, isAdd); } }
/** * Scan the rules for any axioms and insert those */ protected void findAndProcessAxioms() { BFRuleContext context = new BFRuleContext(infGraph); for ( Rule r : rules ) { if ( r.bodyLength() == 0 ) { // An axiom for ( int j = 0; j < r.headLength(); j++ ) { Object head = r.getHeadElement( j ); if ( head instanceof TriplePattern ) { TriplePattern h = (TriplePattern) head; Triple t = new Triple( h.getSubject(), h.getPredicate(), h.getObject() ); context.addTriple( t ); infGraph.getDeductionsGraph().add( t ); } } } } addSet(context); processedAxioms = true; }
/** * Scan the rules for any axioms and insert those */ protected void findAndProcessAxioms() { BFRuleContext context = new BFRuleContext(infGraph); for ( Rule r : rules ) { if ( r.bodyLength() == 0 ) { // An axiom for ( int j = 0; j < r.headLength(); j++ ) { Object head = r.getHeadElement( j ); if ( head instanceof TriplePattern ) { TriplePattern h = (TriplePattern) head; Triple t = new Triple( h.getSubject(), h.getPredicate(), h.getObject() ); context.addTriple( t ); infGraph.getDeductionsGraph().add( t ); } } } } addSet(context); processedAxioms = true; }
ClauseEntry head = rule.getHeadElement(0); if (!(head instanceof TriplePattern)) { throw new LPRuleSyntaxException("Heads of backward rules must be triple patterns", rule);
Object head = r.getHeadElement( j ); if ( head instanceof Functor )
ClauseEntry head = rule.getHeadElement(0); if (!(head instanceof TriplePattern)) { throw new LPRuleSyntaxException("Heads of backward rules must be triple patterns", rule);
Object head = r.getHeadElement( j ); if ( head instanceof Functor )
Object head = r.getHeadElement( j ); if ( head instanceof Functor )
Object head = r.getHeadElement( j ); if ( head instanceof Functor )
ClauseEntry axiom = rule.getHeadElement( j ); if ( axiom instanceof TriplePattern )
ClauseEntry axiom = rule.getHeadElement( j ); if ( axiom instanceof TriplePattern )
Object hClause = rule.getHeadElement(i); if (hClause instanceof TriplePattern) { Triple t = env.instantiate((TriplePattern) hClause);
Object hClause = rule.getHeadElement(i); if (hClause instanceof TriplePattern) { Triple t = env.instantiate((TriplePattern) hClause);