Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.hp.hpl.jena.reasoner.rulesys
Interface Builtin

All Known Implementing Classes:
  AddOne, AssertDisjointPairs, BaseBuiltin, Bound, CountLiteralValues, Difference, Drop, Equal, GE, GreaterThan, Hide, IsBNode, IsDType, IsFunctor, IsLiteral, LE, LessThan, ListContains, ListEntry, ListEqual, ListLength, ListMapAsObject, ListMapAsSubject, ListNotContains, ListNotEqual, MakeInstance, MakeTemp, Max, Min, NotBNode, NotDType, NotEqual, NotFunctor, NotLiteral, NoValue, Now, Print, Product, Quotient, Regex, Remove, StrConcat, Sum, Table, TableAll, Unbound, UriConcat

    public interface Builtin

Rules employ builtins to do all tests and actions other than simple triple matches and triple creation.

Builtins can be invoked in two contexts. In the head of forward rules they perform some action based on the variable bindings generated by the body and additional context (the graph being reasoned over, the set of triples bound by the body). In the body of rules they perform tests, and additional variable bindings.

The mapping from the rule definition (which uses functors to hold the parsed call) to the java implementation of the builtin is done via the `BuiltinRegistry` which can be user extended.

Version:
  $Revision: 1.13 $ on $Date: 2008/01/02 12:07:47 $
Author:
  Dave Reynolds

Method Summary
`boolean` | `bodyCall(Node[] args, int length, RuleContext context)` This method is invoked when the builtin is called in a rule body.
`int` | `getArgLength()` Return the expected number of arguments for this functor or 0 if the number is flexible.
`java.lang.String` | `getName()` Return a convenient name for this builtin, normally this will be the name of the functor that will be used to invoke it and will often be the final component of the URI.
`java.lang.String` | `getURI()` Return the full URI which identifies this built in.
`void` | `headAction(Node[] args, int length, RuleContext context)` This method is invoked when the builtin is called in a rule head.
`boolean` | `isMonotonic()` Returns false if this builtin is non-monotonic.
`boolean` | `isSafe()` Returns false if this builtin has side effects when run in a body clause, other than the binding of environment variables.

Method Detail

### getName

    java.lang.String getName()

  Return a convenient name for this builtin, normally this will be the name of the functor that will be used to invoke it and will often be the final component of the URI.

### getURI

    java.lang.String getURI()

  Return the full URI which identifies this built in.

### getArgLength

    int getArgLength()

  Return the expected number of arguments for this functor or 0 if the number is flexible.

### bodyCall

    boolean bodyCall(Node[] args,
                     int length,
                     RuleContext context)

  This method is invoked when the builtin is called in a rule body.

  Parameters:
    `args` - the array of argument values for the builtin, this is an array of Nodes, some of which may be Node_RuleVariables.
    `length` - the length of the argument list, may be less than the length of the args array for some rule engines
    `context` - an execution context giving access to other relevant data
  Returns:
    return true if the buildin predicate is deemed to have succeeded in the current environment

### headAction

    void headAction(Node[] args,
                    int length,
                    RuleContext context)

  This method is invoked when the builtin is called in a rule head. Such a use is only valid in a forward rule.

  Parameters:
    `args` - the array of argument values for the builtin, this is an array of Nodes.
    `length` - the length of the argument list, may be less than the length of the args array for some rule engines
    `context` - an execution context giving access to other relevant data

### isSafe

    boolean isSafe()

  Returns false if this builtin has side effects when run in a body clause, other than the binding of environment variables.

### isMonotonic

    boolean isMonotonic()

  Returns false if this builtin is non-monotonic. This includes non-monotonic checks like noValue and non-monotonic actions like remove/drop. A non-monotonic call in a head is assumed to be an action and makes the overall rule and ruleset non-monotonic. Most JenaRules are monotonic deductive closure rules in which this should be false.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP