Apache Jena is migrating to term semantics graph for consistency across all in-memory and persistent storage graphs.
All the graphs that this factory creates are not thread-safe.
Note that if the memory Graph is structurally modified at any time after
the iterator has been created by any of the find* or stream* methods, the iterator may throw
a ConcurrentModificationException
if continued with it after this modification.
This may happen even if the queried data does not relate directly to the modified data
(i.e. when triple search pattern does not match added or deleted triple).
The good practice is to explicitly close any ExtendedIterator immediately after a read operation.
For GraphMem implementations ExtendedIterator's materializing methods (such as ExtendedIterator.toList())
could be used safely without explicit close. The same is true for Java Stream's
terminal operations.
-
Method Summary
Modifier and TypeMethodDescriptionstatic GraphAnswer a memory-based graph.static GraphAnswer a memory-based graph with "same term" semantics This method will continue to provide the preferred general purpose "same term" graph.static GraphAnswer a memory-based graph with "same value" semantics used in Jena2, Jena3 and Jena4 for in-memory graphs.static GraphA graph that stores triples in memory.static GraphA graph that stores triples in memory.static GraphThis function will track the preferred general purpose graph for the Model API.static GraphA graph that stores triples in memory.static Graphempty()Immutable graph with no triples
-
Method Details
-
createDefaultGraph
Answer a memory-based graph. This is the system default. -
createGraphMemForModel
This function will track the preferred general purpose graph for the Model API. It is value-based, to align with the Java-object mapping, rather than RDF-term based (Integers +001 and 1 are the same value). -
createDefaultGraphSameValue
Answer a memory-based graph with "same value" semantics used in Jena2, Jena3 and Jena4 for in-memory graphs. Jena5 changed to "same term" semantics. This method will continue to provide a "same value" graph. This is used for the Model API. -
createDefaultGraphSameTerm
Answer a memory-based graph with "same term" semantics This method will continue to provide the preferred general purpose "same term" graph. -
createGraphMemBasic
A graph that stores triples in memory. This class is not thread-safe.- This graph provides term equality.
- Iterator over this graph does not provide Iterator.remove
It has improved performance compared to
GraphMemValuewith a simpler implementation, primarily due to not providing support forIterator.remove().See
GraphMemLegacyfor details. -
createGraphMem2
A graph that stores triples in memory. This class is not thread-safe.- This graph provides term equality.
- Iterator over this graph does not provide Iterator.remove
This graph implementation provides improved performance with a minor increase in memory usage.
See
GraphMemFastfor details. -
createGraphMemRoaring
A graph that stores triples in memory. This class is not thread-safe.- This graph provides term equality.
- Iterator over this graph does not provide Iterator.remove
GraphMemRoaringis focused on handling large in-memory graphs. It uses Roaring bitmaps for indexing.See
GraphMemRoaringfor details. -
empty
Immutable graph with no triples
-