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.static GraphAnswer a memory-based graph with "same value" semantics.static GraphDeprecated, for removal: This API element is subject to removal in a future version.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 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. This implementation ofGraphis not thread-safe; the application is responsible for thread control.Use
GraphFactory.createTxnGraphfor a memory graph with transaction support. -
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
Deprecated, for removal: This API element is subject to removal in a future version.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. -
createGraphMemIndexedSet
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
GraphMemIndexedSetis supposed to replaceGraphMemRoaringin the future.See
GraphMemIndexedSetfor details. -
empty
Immutable graph with no triples
-
createDefaultGraph()