V
- public class URIExtensionIV<V extends BigdataURI> extends AbstractInlineExtensionIV<V,Object> implements org.openrdf.model.URI
URI
s for which a
Vocabulary
item was registered for the URI
namespace
. An URIExtensionIV
always has the inline
and extension bits set. URIExtensionIV
are fully inline
since the namespace
can be materialized from the
Vocabulary
and the localName
is directly inline.flags
Constructor and Description |
---|
URIExtensionIV(AbstractLiteralIV<BigdataLiteral,?> delegateIV,
IV<?,?> namespaceIV) |
Modifier and Type | Method and Description |
---|---|
int |
_compareTo(IV o)
Compare two
IV s having the same intrinsic datatype. |
V |
asValue(LexiconRelation lex)
Defer to the
ILexiconConfiguration which has specific knowledge
of how to generate an RDF value from this general purpose extension IV. |
int |
byteLength()
Return the length of the namespace IV plus the length of the localName
IV.
|
IV<V,Object> |
clone(boolean clearCache)
Return a copy of this
IV . |
boolean |
equals(Object o)
Return true iff the two
IV s are the same point in the same value
space. |
IV<BigdataURI,?> |
getExtensionIV()
Extension IV is the
namespace for the URI . |
Object |
getInlineValue()
Return the Java
Object corresponding to the inline value. |
String |
getLocalName() |
AbstractLiteralIV<BigdataLiteral,?> |
getLocalNameIV() |
String |
getNamespace() |
int |
hashCode()
Return a hash code based on the value of the point in the value space.
|
boolean |
needsMaterialization()
The namespace IV does need materialization, although it will not need
to go to the index to get the value (it just needs access to the lexicon's
vocabulary).
|
String |
stringValue() |
String |
toString() |
isInline
compareTo, encode, flags, getDTE, getDTE, getDTEX, getInternalValueTypeEnum, getValue, getValueCache, getVTE, getVTE, hasValue, isBigNumeric, isBNode, isExtension, isExtension, isFixedNumeric, isFloatingPointNumeric, isInline, isLiteral, isNullIV, isNumeric, isResource, isSignedNumeric, isStatement, isUnsignedNumeric, isURI, isVocabulary, setValue, toFlags
public URIExtensionIV(AbstractLiteralIV<BigdataLiteral,?> delegateIV, IV<?,?> namespaceIV)
delegateIV
- The IV
which represents the localName.namespaceIV
- The IV
which represents the namespace. This MUST be a
fully inline IV
declared by the Vocabulary
.public IV<V,Object> clone(boolean clearCache)
IV
.
Note: This method exists to defeat the hard reference from the IV
to the cached BigdataValue
in order to avoid a memory leak when
the IV
is used as the key in a weak value cache whose value is
the BigdataValue
. Therefore, certain IV
implementations
MAY return this when they are used for limited collections. The
vocabulary IVs are the primary example. For the same reason, we do not
need to recursively break the link from the IV
to the
BigdataValue
for IV
s which embed other IV
s.
Note: The extensionIV and delegateIV are NOT cloned. The rationale is
that we are only cloning to break the hard reference from the IV
to to cached value. If that needs to be done for the extensionIV and
delegateIV, then it will be done separately for those objects when they
are inserted into the termsCache.
clone
in interface IVCache<V extends BigdataURI,Object>
clearCache
- When true
the cached reference (if any) will NOT
be set on the copy.(Thread-local
cache combined with unbounded thread pools causes effective memory
leak)
public boolean needsMaterialization()
needsMaterialization
in interface IV<V extends BigdataURI,Object>
public AbstractLiteralIV<BigdataLiteral,?> getLocalNameIV()
public Object getInlineValue()
IV
Object
corresponding to the inline value.getInlineValue
in interface IV<V extends BigdataURI,Object>
Object
.public IV<BigdataURI,?> getExtensionIV()
namespace
for the URI
.getExtensionIV
in interface IExtensionIV
public int hashCode()
AbstractIV
Note: The IV
implementations typically DO NOT return hash codes
that are consistent with BigdataValue#hashCode()
. Therefore you
MUST NOT mix IV
s and BigdataValue
s in the keys of a map
or the values of a set.
hashCode
in interface org.openrdf.model.URI
hashCode
in class AbstractIV<V extends BigdataURI,Object>
public boolean equals(Object o)
AbstractIV
IV
s are the same point in the same value
space. Points in different value spaces (as identified by different
datatype URIs) are NOT equal even if they have the same value in the
corresponding primitive data type.
Note: The IV
implementations typically DO NOT compare equals()
with BigdataValue
s. Therefore you MUST NOT mix IV
s and
BigdataValue
s in the keys of a map or the values of a set.
equals
in interface org.openrdf.model.URI
equals
in class AbstractIV<V extends BigdataURI,Object>
public String toString()
public String stringValue()
stringValue
in interface org.openrdf.model.Value
public String getNamespace()
getNamespace
in interface org.openrdf.model.URI
public String getLocalName()
getLocalName
in interface org.openrdf.model.URI
public int _compareTo(IV o)
AbstractIV
IV
s having the same intrinsic datatype._compareTo
in class AbstractIV<V extends BigdataURI,Object>
public int byteLength()
byteLength
in interface IV<V extends BigdataURI,Object>
public V asValue(LexiconRelation lex)
ILexiconConfiguration
which has specific knowledge
of how to generate an RDF value from this general purpose extension IV.
If the value is not already cached, then inflate an inline RDF value to a
BigdataValue
and cache it on a private field.
Note: Query plans are responsible for ensuring that IV
s have been
materialized before operators are evaluated which invoke this method.
This pattern ensures that efficient batch operators are used to
materialize Value
s, and thereby avoids heavy RMI overhead in
scale-out, and provides operators which use IVCache.getValue()
with a
simple method signature which does not require access to the lexicon.
Query plans are also responsible for dropping variables once they are no
longer needed or, in the case of large values and BLOBs, dropping the
cached BigdataValue
when possible in order to avoid excess
network and heap overhead.
asValue
in interface IVCache<V extends BigdataURI,Object>
lex
- The lexicon relation (this is required in order to access the
BigdataValueFactory
for the namespace associated with
lexicon when we materialize an inline IV
).BigdataValue
.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.