Interface Quad
- All Superinterfaces:
QuadLike<BlankNodeOrIRI>, TripleLike
- All Known Subinterfaces:
JsonLdQuad, RDF4JQuad
- All Known Implementing Classes:
JsonLdQuadImpl, QuadImpl, QuadImpl
A Quad object in Commons RDF is considered
immutable, that is, over its life time it will have
consistent behaviour for its equals(Object), and the instances
returned from getGraphName(), getSubject(),
getPredicate(), getObject() and asTriple() will
have consistent Object.equals(Object) behaviour.
Note that Quad methods are not required to return object
identical (==) instances as long as they are equivalent
according to Object.equals(Object). Specialisations of
Quad may provide additional methods that are documented to be
mutable.
Quad methods are thread-safe, however
specialisations may provide additional methods that are documented to not be
thread-safe.
Quads can be safely used in hashing collections like
HashSet and HashMap.
Any Quad can be used interchangeably across Commons RDF
implementations.
- Since:
- 0.3.0-incubating
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptiondefault TripleasTriple()Adapt this Quad to a Triple.booleanCheck it this Quad is equal to another Quad.The graph name (graph label) of this quad, if present.The predicateIRIof this quad.The subject of this quad, which may be either aBlankNodeor anIRI, which are represented in Commons RDF by the interfaceBlankNodeOrIRI.inthashCode()Calculate a hash code for this Quad.
-
Method Details
-
getGraphName
Optional<BlankNodeOrIRI> getGraphName()The graph name (graph label) of this quad, if present. IfOptional.isPresent(), then theOptional.get()is either aBlankNodeor anIRI, indicating the graph name of this Quad. If the graph name is not present, e.g. the value isOptional.empty(), it indicates that this Quad is in the default graph.- Specified by:
getGraphNamein interfaceQuadLike<BlankNodeOrIRI>- Returns:
- If
Optional.isPresent(), the graph nameBlankNodeOrIRIof this quad, otherwiseOptional.empty(), indicating the default graph. - See Also:
-
getSubject
BlankNodeOrIRI getSubject()The subject of this quad, which may be either aBlankNodeor anIRI, which are represented in Commons RDF by the interfaceBlankNodeOrIRI.- Specified by:
getSubjectin interfaceTripleLike- Returns:
- The subject
BlankNodeOrIRIof this quad. - See Also:
-
getPredicate
IRI getPredicate()The predicateIRIof this quad.- Specified by:
getPredicatein interfaceTripleLike- Returns:
- The predicate
IRIof this quad. - See Also:
-
getObject
-
asTriple
Adapt this Quad to a Triple.The returned
Triplewill have equivalent values returned from the methodsTripleLike.getSubject(),TripleLike.getPredicate()andTripleLike.getObject().The returned
TripleMUST NOT beequals(Object)to thisQuad, even if this quad has a default graphgetGraphName()value ofOptional.empty(), but MUST follow theTriple.equals(Object)semantics. This means that the following MUST be true:Quad q1, q2; if (q1.equals(q2)) { assert (q1.asTriple().equals(q2.asTriple())); } else if (q1.asTriple().equals(q2.asTriple())) { assert (q1.getSubject().equals(q2.getSubject())); assert (q1.getPredicate().equals(q2.getPredicate())); assert (q1.getObject().equals(q2.getObject())); assert (!q1.getGraphName().equals(q2.getGraphName())); }Thedefaultimplementation of this method return a proxyTripleinstance that keeps a reference to thisQuadto call the underlyingTripleLikemethods, but supplies aTriplecompatible implementation ofTriple.equals(Object)andTriple.hashCode(). Implementations may override this method, e.g. for a more efficient solution.- Returns:
- A
Triplethat contains the sameTripleLikeproperties as this Quad.
-
equals
Check it this Quad is equal to another Quad.Two Quads are equal if and only if their
getGraphName(),getSubject(),getPredicate()andgetObject()are equal.Implementations MUST also override
hashCode()so that two equal Quads produce the same hash code.Note that a
QuadMUST NOT be equal to aTriple, even if this Quad'sgetGraphName()isOptional.empty(). To test triple-like equivalence, callers can use:Quad q1; Triple t2; q1.asTriple().equals(t2));
-
hashCode
int hashCode()Calculate a hash code for this Quad.The returned hash code MUST be equal to the result of
Objects.hash(Object...)with the argumentsgetSubject(),getPredicate(),getObject(),getGraphName().This method MUST be implemented in conjunction with
equals(Object)so that two equalQuads produce the same hash code.
-