|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.bigdata.rdf.spo.SPOPredicate
public class SPOPredicate
A predicate that is a triple with one or more variables. While the general
case allows a predicate to have an arbitrary name, for RDFS reasoning we are
only concerned with predicates of the form triple(s,p,o).
| Method Summary | |
|---|---|
int |
arity()
The arity is 3 unless the context position was given (as either a variable or bound to a constant) in which case it is 4. |
SPOPredicate |
asBound(IBindingSet bindingSet)
A copy of this IPredicate in which zero or more variables have
been bound to constants using the given IBindingSet. |
SPOPredicate |
asBound(IVariable<Long> var,
IConstant<Long> val)
Return a new instance in which all occurrences of the variable in the predicate have been replaced by the specified constant. |
IVariableOrConstant<Long> |
c()
|
boolean |
equals(Object other)
Compares the bindings of two predicates for equality. |
IVariableOrConstant<Long> |
get(int index)
Return the variable or constant at the specified index. |
IConstant<Long> |
get(ISPO spo,
int index)
Return the asBound value at the specified index for the given element. |
IElementFilter<ISPO> |
getConstraint()
An optional constraint on the visitable elements. |
String |
getOnlyRelationName()
Resource identifier (aka namespace) identifies the IRelation
associated with this IPredicate. |
int |
getPartitionId()
The index partition identifier and -1 if no partition
identifier was specified. |
int |
getRelationCount()
The #of elements in the relation view. |
String |
getRelationName(int index)
Return the ith element of the relation view. |
ISolutionExpander<ISPO> |
getSolutionExpander()
Returns the object that may be used to selectively override the evaluation of the predicate. |
int |
getVariableCount()
The #of arguments in the predicate that are variables (the context position iff it is non-null). |
int |
getVariableCount(IKeyOrder<ISPO> keyOrder)
The #of arguments in the predicate required for the specified IKeyOrder which are unbound. |
int |
hashCode()
The hash code is defined as |
boolean |
isFullyBound()
Deprecated. by isFullyBound(IKeyOrder) |
boolean |
isFullyBound(IKeyOrder<ISPO> keyOrder)
Figure out if all positions in the predicate which are required to form the key for this access path are bound in the predicate. |
boolean |
isOptional()
true iff the predicate is optional when evaluated as the
right-hand side of a join. |
IVariableOrConstant<Long> |
o()
|
IVariableOrConstant<Long> |
p()
|
IVariableOrConstant<Long> |
s()
|
SPOPredicate |
setC(IConstant<Long> c)
Constrain the predicate by setting the context position. |
SPOPredicate |
setConstraint(IElementFilter<ISPO> newConstraint)
Constrain the predicate by layering on another constraint (the existing constraint, if any, is combined with the new constraint). |
SPOPredicate |
setPartitionId(int partitionId)
Sets the index partition identifier constraint. |
SPOPredicate |
setRelationName(String[] relationName)
A copy of this IPredicate in which the relationName(s)
replace the existing set of relation name(s). |
String |
toString()
Representation of the predicate without variable bindings. |
String |
toString(IBindingSet bindingSet)
Representation of the predicate with variable bindings. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public SPOPredicate(String relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o)
null. The
predicate is NOT optional. No constraint is specified. No expander is
specified.
relationName - s - p - o -
public SPOPredicate(String relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o,
IVariableOrConstant<Long> c)
relationName - s - p - o - c -
public SPOPredicate(String[] relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o)
null. The
predicate is NOT optional. No constraint is specified. No expander is
specified.
relationName - s - p - o -
public SPOPredicate(String relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o,
boolean optional)
null. No
constraint is specified. No expander is specified.
relationName - s - p - o - optional -
public SPOPredicate(String relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o,
ISolutionExpander<ISPO> expander)
null. No
constraint is specified. No expander is specified.
relationName - s - p - o - expander - MAY be null.
public SPOPredicate(String relationName,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o,
boolean optional,
ISolutionExpander<ISPO> expander)
null. No
constraint is specified.
relationName - s - p - o - optional - expander - MAY be null.
public SPOPredicate(String[] relationName,
int partitionId,
IVariableOrConstant<Long> s,
IVariableOrConstant<Long> p,
IVariableOrConstant<Long> o,
IVariableOrConstant<Long> c,
boolean optional,
IElementFilter<ISPO> constraint,
ISolutionExpander<ISPO> expander)
relationName - partitionId - s - p - o - c - MAY be null.optional - constraint - MAY be null.expander - MAY be null.
protected SPOPredicate(SPOPredicate src,
String[] relationName)
relationName - The new relation name(s).
protected SPOPredicate(SPOPredicate src,
int partitionId)
partitionId - The index partition identifier.
IllegalArgumentException - if the index partition identified is a negative integer.
IllegalStateException - if the index partition identifier was already specified.| Method Detail |
|---|
public String getOnlyRelationName()
IPredicateIRelation
associated with this IPredicate.
This is more or less ignored when the IRule is executed as a
query.
When the IRule is executed as an ActionEnum.Insert or
ActionEnum.Delete then this identifies the target
IMutableRelation on which the computed ISolutions will
be written.
getOnlyRelationName in interface IPredicate<ISPO>public String getRelationName(int index)
IPredicate
getRelationName in interface IPredicate<ISPO>index - The index into the array of relation names in the view.public final int getRelationCount()
IPredicate
getRelationCount in interface IPredicate<ISPO>public final int getPartitionId()
IPredicate-1 if no partition
identifier was specified.
Note: The ability to specify an index partition identifier for a
predicate is provided in support of scale-out JOIN strategies. The
AbstractAccessPath and the JoinMasterTask are both aware
of this property. The JoinMasterTask sets the partition
identifier in order to request an access path backed by the name of the
local index object on a DataService rather than the name of the
scale-out index.
The index partition can not be specified until a choice has been made
concerning which IAccessPath to use for a predicate without an
index partition constraint. The IAccessPath choice is therefore
made by the IEvaluationPlan using the scale-out index view and an
AbstractScaleOutFederation.locatorScan(String, long, byte[], byte[], boolean)
is used to identify the index partitions on which the IAccessPath
will read. The index partition is then set on a constrained
IPredicate for each target index partition and the JOINs are then
distributed to the DataServices on which those index partitions
reside.
getPartitionId in interface IPredicate<ISPO>-1 if the
predicate is not locked to a specific index partition.PartitionLocator,
AbstractAccessPath,
JoinMasterTaskpublic final int arity()
arity in interface IPredicate<ISPO>public SPOPredicate setC(IConstant<Long> c)
SPOPredicate is non-null, then you
must use asBound(IBindingSet) to replace all occurrences of the
variable appearing in the context position of the predicate with the
desired constant. If the context position is already bound the a
constant, then you can not modify it (you can only increase the
constraint, not change the constraint).
IllegalStateException - unless the context position on the SPOPredicate is
null.public SPOPredicate setConstraint(IElementFilter<ISPO> newConstraint)
public final IVariableOrConstant<Long> get(int index)
IPredicate
get in interface IPredicate<ISPO>index - The index.
public final IConstant<Long> get(ISPO spo,
int index)
IPredicateNote: there is no general means available to implement this method of an awareness of the internal structure of the element type. General purpose record types, such as GOM or relation records, can generally implement this method in the context of the "schema" imposed by the predicate.
get in interface IPredicate<ISPO>spo - The element.index - The index.
public final IVariableOrConstant<Long> s()
public final IVariableOrConstant<Long> p()
public final IVariableOrConstant<Long> o()
public final IVariableOrConstant<Long> c()
public final boolean isFullyBound()
isFullyBound(IKeyOrder)
non-null.
isFullyBound in interface IPredicate<ISPO>public final int getVariableCount()
getVariableCount in interface IPredicate<ISPO>IPredicate.getVariableCount(IKeyOrder)public boolean isFullyBound(IKeyOrder<ISPO> keyOrder)
IPredicate
Note: This is more correct than IPredicate.isFullyBound() since
the latter does not know which the slots in the predicate are required
for the specified key order.
isFullyBound in interface IPredicate<ISPO>public int getVariableCount(IKeyOrder<ISPO> keyOrder)
IPredicateIKeyOrder which are unbound.
getVariableCount in interface IPredicate<ISPO>keyOrder - The key order.
IKeyOrder.
public SPOPredicate asBound(IVariable<Long> var,
IConstant<Long> val)
var - The variable.val - The constant.
IllegalArgumentException - if either argument is null.public SPOPredicate asBound(IBindingSet bindingSet)
IPredicateIPredicate in which zero or more variables have
been bound to constants using the given IBindingSet.
asBound in interface IPredicate<ISPO>public SPOPredicate setRelationName(String[] relationName)
IPredicateIPredicate in which the relationName(s)
replace the existing set of relation name(s).
setRelationName in interface IPredicate<ISPO>relationName - The relation name(s).public SPOPredicate setPartitionId(int partitionId)
IPredicate
setPartitionId in interface IPredicate<ISPO>partitionId - The index partition identifier.
IPredicate.public String toString()
IPredicate
toString in interface IPredicate<ISPO>toString in class Objectpublic String toString(IBindingSet bindingSet)
IPredicate
toString in interface IPredicate<ISPO>bindingSet - The variable bindingspublic final boolean isOptional()
IPredicatetrue iff the predicate is optional when evaluated as the
right-hand side of a join. An optional predicate will match once after
all matches in the data have been exhausted. By default, the match will
NOT bind any variables that have been determined to be bound by the
predicate based on the computed IEvaluationPlan.
For mutation, some IRelations may require that all variables
appearing in the head are bound. This and similar constraints can be
enforced using IConstraints on the IRule.
More control over the behavior of optionals may be gained through the use
of an ISolutionExpander pattern.
isOptional in interface IPredicate<ISPO>true iff this predicate is optional when
evaluating a JOIN.public final IElementFilter<ISPO> getConstraint()
IPredicate
getConstraint in interface IPredicate<ISPO>public final ISolutionExpander<ISPO> getSolutionExpander()
IPredicate
getSolutionExpander in interface IPredicate<ISPO>ISolutionExpander.public boolean equals(Object other)
IPredicate
equals in interface IPredicate<ISPO>equals in class Objectother - Another predicate.
public int hashCode()
IPredicateget(0).hashCode()*31ˆ(n-1) + get(1).hashCode()*31ˆ(n-2) + ... + get(n-1).hashCode()using
int arithmetic, where n is the
IPredicate.arity() of the predicate, and ^ indicates
exponentiation.
Note: This is similar to how String.hashCode() is defined.
hashCode in interface IPredicate<ISPO>hashCode in class Object
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||