Structure that defines additional
constraints and/or variable
bindings based on other matched
query variables. Matching the
antecedents. Use varBindingId if
no additional variable constraints
or bindings are added beyond those
arising from graph queries.

is a variable binding modifier value that may impose
additional conditions on the variable bindings that
can be used for this inference rule, or which may
cause new values to be allocated for unbound variables.
These modifiers allow for certain inference patterns
that are not captured by simple closure rules, such
as the allocation of bnodes corresponding to literals,
and are an extension point for incorporating datatypes
into an inference process.

If no additional constraints or variable bindings are
to be applied, use value varBindingId

a variable binding modifier value that may impose
additional conditions on the variable bindings that
can be used for this inference rule, or which may
cause new values to be allocated for unbound variables.
These modifiers allow for certain inference patterns
that are not captured by simple closure rules, such
as the allocation of bnodes corresponding to literals,
and are an extension point for incorporating datatypes
into an inference process.

Constructs an RDF graph closure rule. That is, a rule that
given some set of antecedent statements returns new statements
that may be added to the graph. This is the basis for
implementation of most of the inference rules given in the
RDF formal semantics document.

function applied to a list of nodes to yield a
variable binding modifier value.

The supplied parameter is applied to a list of all of
the variable nodes (including all blank nodes) in the
antecedent graph, and then composed with the vflt
value. This allows any node allocation
function to avoid allocating any blank nodes that
are already used in the antecedent graph.
(See makeNodeAllocTo).

This function defines a variable binding modifier that
allocates a new blank node for each value bound to
a query variable, and binds it to another variable
in each query binding.

This provides a single binding for query variables that would
otherwise be unbound by a query. For example, consider the
inference pattern:

?a hasUncle ?c => ?a hasFather ?b . ?b hasBrother ?c .

For a given ?a and ?c, there is insufficient information
here to instantiate a value for variable ?b. Using this
function as part of a graph instance closure rule allows
forward chaining to allocate a single bnode for each
occurrence of ?a, so that given:

This form of constrained allocation of bnodes is also required for
some of the inference patterns described by the RDF formal semantics,
particularly those where bnodes are substituted for URIs or literals.