com.hp.hpl.jena.reasoner.rulesys.builtins
Class BaseBuiltin

java.lang.Object
  extended by com.hp.hpl.jena.reasoner.rulesys.builtins.BaseBuiltin
All Implemented Interfaces:
Builtin
Direct Known Subclasses:
AddOne, AssertDisjointPairs, Bound, CountLiteralValues, Difference, Drop, Equal, GE, GreaterThan, Hide, IsBNode, IsDType, IsFunctor, IsLiteral, LE, LessThan, ListContains, ListEntry, ListEqual, ListLength, ListMapAsObject, ListMapAsSubject, ListNotContains, ListNotEqual, MakeInstance, MakeSkolem, MakeTemp, Max, Min, NotBNode, NotDType, NotEqual, NotFunctor, NotLiteral, NoValue, Now, Print, Product, Quotient, Regex, Remove, StrConcat, Sum, Table, TableAll, Unbound

public abstract class BaseBuiltin
extends Object
implements Builtin

Dummy implementation of the Builtin interface that specific implementations can inherit from.

Version:
$Revision: 1.1 $ on $Date: 2009-06-29 08:55:36 $
Author:
Dave Reynolds

Field Summary
static String BASE_URI
          Base URI for jena builtins
 
Constructor Summary
BaseBuiltin()
           
 
Method Summary
 boolean bodyCall(Node[] args, int length, RuleContext context)
          This method is invoked when the builtin is called in a rule body.
 void checkArgs(int length, RuleContext context)
          Check the argument length.
 Node getArg(int n, Node[] args, RuleContext context)
          Return the n'th argument node after dererencing by what ever type of rule engine binding environment is appropriate.
 int getArgLength()
          Return the expected number of arguments for this functor or 0 if the number is flexible.
 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.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.hp.hpl.jena.reasoner.rulesys.Builtin
getName
 

Field Detail

BASE_URI

public static final String BASE_URI
Base URI for jena builtins

See Also:
Constant Field Values
Constructor Detail

BaseBuiltin

public BaseBuiltin()
Method Detail

getURI

public String getURI()
Return the full URI which identifies this built in.

Specified by:
getURI in interface Builtin

getArgLength

public int getArgLength()
Return the expected number of arguments for this functor or 0 if the number is flexible.

Specified by:
getArgLength in interface Builtin

checkArgs

public void checkArgs(int length,
                      RuleContext context)
Check the argument length.


bodyCall

public boolean bodyCall(Node[] args,
                        int length,
                        RuleContext context)
This method is invoked when the builtin is called in a rule body.

Specified by:
bodyCall in interface Builtin
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

public 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.

Specified by:
headAction in interface Builtin
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

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

Specified by:
isSafe in interface Builtin

isMonotonic

public 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.

Specified by:
isMonotonic in interface Builtin

getArg

public Node getArg(int n,
                   Node[] args,
                   RuleContext context)
Return the n'th argument node after dererencing by what ever type of rule engine binding environment is appropriate.



Licenced under the Apache License, Version 2.0