/* * This software is Copyright 2005,2006,2007,2008 Langdale Consultants. * Langdale Consultants can be contacted at: http://www.langdale.com.au */ package au.com.langdale.inference; import com.hp.hpl.jena.graph.Node; import com.hp.hpl.jena.reasoner.rulesys.Node_RuleVariable; import com.hp.hpl.jena.reasoner.rulesys.impl.BindingVector; /** * A <code>BindingEnvironment</code> for a <code>Rule</code> that * supports nested rules. */ public class PartialBinding extends BindingVector { public PartialBinding(int size) { super(size); } public PartialBinding(Node[] env) { super(env); } public PartialBinding(BindingVector clone) { super(clone); } public PartialBinding(BindingVector clone, int numVars) { super(numVars); Node[] orig = clone.getEnvironment(); System.arraycopy(orig, 0, environment, 0, Math.min(numVars, orig.length)); } @Override public Node getBinding(Node node) { if (node instanceof Node_RuleVariable) { Node_RuleVariable var = (Node_RuleVariable) node; if( var.getIndex() >= environment.length) return null; } return super.getBinding(node); } }