public class SPO extends Object implements ISPO, Serializable
#setStatementIdentifier(IV)
will reject
arguments if they can not be validated as statement identifiers (based on
their bit pattern).Modifier and Type | Field and Description |
---|---|
byte |
flags
Bit flags used to represent statement type, user flag, override,
modified enum, and sidable flag.
|
IV |
o
The internal value for the object position.
|
IV |
p
The internal value for the predicate position.
|
IV |
s
The internal value for the subject position.
|
Constructor and Description |
---|
SPO(BigdataResource s,
BigdataURI p,
BigdataValue o,
StatementEnum type)
Construct a triple from
BigdataValue s and the specified statement
type. |
SPO(BigdataStatement stmt)
Construct a triple/quad from a
BigdataStatement . |
SPO(IConstant<IV> s,
IConstant<IV> p,
IConstant<IV> o,
StatementEnum type)
Variant to create an
SPO from constants (used by the unit tests). |
SPO(IPredicate<ISPO> predicate)
Variant to create an SPO from a predicate - the
StatementEnum and
statement identifier are not specified. |
SPO(IV s,
IV p,
IV o)
Triple constructor for a statement whose type is NOT known.
|
SPO(IV s,
IV p,
IV o,
IV c)
Quads constructor.
|
SPO(IV s,
IV p,
IV o,
IV c,
StatementEnum type)
Quads constructor with
StatementEnum . |
SPO(IV s,
IV p,
IV o,
StatementEnum type)
Construct a triple.
|
Modifier and Type | Method and Description |
---|---|
IV |
c()
The term identifier for the SID/context position (slot 3) -or-
#NULL . |
boolean |
equals(ISPO stmt2)
True iff the
ISPO s are the same object or if the same term
identifiers are assigned for the subject, predicate and object positions,
and the same StatementEnum are the same. |
boolean |
equals(Object o) |
IV |
get(int index)
Return the s,p,o, or c value corresponding to the given index.
|
org.openrdf.model.Resource |
getContext() |
ModifiedEnum |
getModified()
Return the state of the transient modified flag.
|
org.openrdf.model.Value |
getObject() |
org.openrdf.model.URI |
getPredicate() |
IV |
getStatementIdentifier()
The statement identifier (optional).
|
StatementEnum |
getStatementType()
|
org.openrdf.model.Resource |
getSubject() |
boolean |
getUserFlag()
Return
true IFF the SPO has the user flag bit set. |
int |
hashCode()
Hash code for the (s,p,o) per Sesame's
Statement.hashCode() . |
boolean |
hasStatementIdentifier()
|
boolean |
hasStatementType()
Return
true iff the statement type is known. |
boolean |
isAxiom()
|
boolean |
isExplicit()
|
boolean |
isFullyBound()
Return true iff all position (s,p,o) are non-
#NULL . |
boolean |
isInferred()
|
boolean |
isModified() |
boolean |
isOverride()
When
true the statement will be written onto the database
with exactly its current ISPO.getStatementType() (default
false ). |
IV |
o()
The term identifier for the object position (slot 2) -or-
#NULL . |
IV |
p()
The term identifier for the predicate position (slot 1) -or-
#NULL . |
IV |
s()
The term identifier for the subject position (slot 0) -or-
#NULL . |
void |
setModified(ModifiedEnum modified)
Set a transient flag indicating whether or not the persistent state of
the statement was modified when it was last written onto the database.
|
void |
setOverride(boolean override)
Set the override flag.
|
void |
setStatementType(StatementEnum type)
Set the statement type for this statement.
|
void |
setUserFlag(boolean userFlag)
Set the user flag bit on this SPO.
|
String |
toString()
Return a representation of the statement using the term identifiers (the
identifiers are NOT resolved to terms).
|
String |
toString(IRawTripleStore store)
Resolves the term identifiers to terms against the store and returns a
representation of the statement using
IRawTripleStore.toString(IV, IV, IV) . |
static String |
toString(IV iv)
Represents the term identifier together with its type (literal, bnode,
uri, or statement identifier).
|
public final IV s
public final IV p
public final IV o
public byte flags
public SPO(IV s, IV p, IV o)
Note: This is primarily used when you want to discover the type of the statement.
AbstractTripleStore#bulkCompleteStatements(ISPOIterator)
public SPO(IV s, IV p, IV o, StatementEnum type)
Note: When the statement is StatementEnum.Inferred
you MUST also
construct the appropriate Justification
.
s
- p
- o
- type
- The statement type.public SPO(IV s, IV p, IV o, IV c, StatementEnum type)
StatementEnum
.s
- p
- o
- c
- type
- public SPO(IConstant<IV> s, IConstant<IV> p, IConstant<IV> o, StatementEnum type)
SPO
from constants (used by the unit tests).s
- p
- o
- type
- public SPO(IPredicate<ISPO> predicate)
StatementEnum
and
statement identifier are not specified. This may be used as a convenience
to extract the {s, p, o, c} from an IPredicate
or from an
IAccessPath
when the predicate is not known to be an
SPOPredicate
.predicate
- The predicate.public SPO(BigdataResource s, BigdataURI p, BigdataValue o, StatementEnum type)
BigdataValue
s and the specified statement
type.s
- p
- o
- type
- public SPO(BigdataStatement stmt)
BigdataStatement
. The term
identifiers and statement type information available on the
BigdataStatement
will be used to initialize the SPO
.stmt
- The statement.public final IV get(int index)
ISPO
public final IV s()
ISPO
#NULL
.public final IV p()
ISPO
#NULL
.public final IV o()
ISPO
#NULL
.public final IV c()
ISPO
#NULL
. The semantics of the returned value depend on the database
mode. For triples, it is unused. For triples+SIDs, it is the statement
identifier as assigned by the lexicon. For quads, it is the context (aka
named graph) and #NULL
iff the context was not bound.public final IV getStatementIdentifier()
ISPO
ISPO.c()
, but will throw an exception if the 4th position is not
bound.
Statement identifiers are a unique per-triple identifier assigned when a
statement is first asserted against the database and are are defined iff
AbstractTripleStore.Options#STATEMENT_IDENTIFIERS
was specified.
getStatementIdentifier
in interface ISPO
public final boolean hasStatementIdentifier()
ISPO
hasStatementIdentifier
in interface ISPO
public void setOverride(boolean override)
ISPO
setOverride
in interface ISPO
override
- the new value.public boolean isOverride()
ISPO
true
the statement will be written onto the database
with exactly its current ISPO.getStatementType()
(default
false
).
Note: This feature is used by TruthMaintenance
when we need to
downgrade an ISPO
from "Explicit" to "Inferred". Normally, a
statement is automatically upgraded from "Inferred" to "Explicit" so
without ISPO.setOverride(boolean)
you could not downgrade the
StatementEnum
in the database without first deleting the
statement (which would also delete its justifications).
isOverride
in interface ISPO
public final boolean isExplicit()
isExplicit
in interface ISPO
public final boolean isInferred()
isInferred
in interface ISPO
public final boolean getUserFlag()
true
IFF the SPO
has the user flag bit set.getUserFlag
in interface ISPO
public final void setUserFlag(boolean userFlag)
setUserFlag
in interface ISPO
public int hashCode()
Statement.hashCode()
. It
DOES NOT consider the context position.public boolean equals(Object o)
public boolean equals(ISPO stmt2)
ISPO
s are the same object or if the same term
identifiers are assigned for the subject, predicate and object positions,
and the same StatementEnum
are the same.
Note: This is NOT the same test as
BigdataStatementImpl.equals(Object)
since the latter is
implemented per the Statement
interface.
public String toString()
public static String toString(IV iv)
iv
- The term identifier.public String toString(IRawTripleStore store)
IRawTripleStore.toString(IV, IV, IV)
.public final boolean isFullyBound()
ISPO
#NULL
.
Note: SPO
s are sometimes used to represent triple patterns, e.g.,
in the tail of a Justification
. This method will return
true
if the "triple pattern" is fully bound and
false
if there are any unbound positions.
Note: BigdataStatement
s are not fully bound when they are
instantiated during parsing until their term identifiers have been
resolved against a database's lexicon.
isFullyBound
in interface ISPO
public final StatementEnum getStatementType()
ISPO
getStatementType
in interface ISPO
StatementEnum
type -or- null
if the
statement type has not been specified.public final void setStatementType(StatementEnum type)
ISPO
setStatementType
in interface ISPO
type
- The statement type.public final boolean hasStatementType()
ISPO
true
iff the statement type is known.
true
iff the statement type is known for this statement.hasStatementType
in interface ISPO
public boolean isModified()
isModified
in interface ISPO
public void setModified(ModifiedEnum modified)
ISPO
StatementEnum
in the database updated.setModified
in interface ISPO
public ModifiedEnum getModified()
ISPO
StatementEnum
in the database updated.getModified
in interface ISPO
public org.openrdf.model.Resource getContext()
Note: This methods rely on the fact that IV implements Value. The
returned IV will act like a Value if it is inline or if it has been
materialized. If the IV is not-inline and its value has not been
materialized from the appropriate index or explicitly set through
IVCache.setValue(BigdataValue)
, then an attempt to access the
state of the Value
through its Value
interface will throw
a NotMaterializedException
.
getContext
in interface org.openrdf.model.Statement
public org.openrdf.model.Value getObject()
Note: This methods rely on the fact that IV implements Value. The
returned IV will act like a Value if it is inline or if it has been
materialized. If the IV is not-inline and its value has not been
materialized from the appropriate index or explicitly set through
IVCache.setValue(BigdataValue)
, then an attempt to access the
state of the Value
through its Value
interface will throw
a NotMaterializedException
.
getObject
in interface org.openrdf.model.Statement
public org.openrdf.model.URI getPredicate()
Note: This methods rely on the fact that IV implements Value. The
returned IV will act like a Value if it is inline or if it has been
materialized. If the IV is not-inline and its value has not been
materialized from the appropriate index or explicitly set through
IVCache.setValue(BigdataValue)
, then an attempt to access the
state of the Value
through its Value
interface will throw
a NotMaterializedException
.
getPredicate
in interface org.openrdf.model.Statement
public org.openrdf.model.Resource getSubject()
Note: This methods rely on the fact that IV implements Value. The
returned IV will act like a Value if it is inline or if it has been
materialized. If the IV is not-inline and its value has not been
materialized from the appropriate index or explicitly set through
IVCache.setValue(BigdataValue)
, then an attempt to access the
state of the Value
through its Value
interface will throw
a NotMaterializedException
.
getSubject
in interface org.openrdf.model.Statement
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.