org.jrdf.query.relation.operation.mem.join.natural
Class NaturalJoinEngine
java.lang.Object
org.jrdf.query.relation.operation.mem.join.natural.NaturalJoinEngine
- All Implemented Interfaces:
- TupleEngine
public class NaturalJoinEngine
- extends Object
- implements TupleEngine
Combines two relations attributes if they have common tuple values. The
same as AND in Algebra A.
The general algorithm is:
1. Find all matching attributes on two relations.
2. OuterUnionImpl the attributes and tuples together.
3. Remove any attributes that are not common between the two.
For example:
Relation 1 has the following statements: <1, a, foo>, <1, b, bar>,
<1, c, bar>, <1, c, baz>
Relation 2 has the following statements: <2, b, foo>, <2, c, bar>,
<2, f, bar>, <2, g, bar>, <2, c, baz>, <2, f, baz>
After process:
<2, b, bar>, <2, c, bar>, <1, c, bar>, <1, f, bar>, <1, f, bar>, <2, c, baz>,
<1, c, baz>, <1, f, baz>
Removed:
<2, a, foo>, <1, a, foo>
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NaturalJoinEngine
public NaturalJoinEngine(TupleFactory tupleFactory,
AttributeValuePairComparator avpComparator,
RelationHelper relationHelper)
getHeading
public SortedSet<Attribute> getHeading(Relation relation1,
Relation relation2)
- Specified by:
getHeading
in interface TupleEngine
process
public void process(SortedSet<Attribute> headings,
SortedSet<AttributeValuePair> avps1,
SortedSet<AttributeValuePair> avps2,
SortedSet<Tuple> result)
- Specified by:
process
in interface TupleEngine