triplemodel.io
Graph I/O: export, import, sync, and helpers.
- triplemodel.io.all_from_dataset(dataset, model_cls, **kwargs)[source]
Load every resource of this model’s RDF type from its named graph context.
- triplemodel.io.all_from_dataset_dispatch(dataset, *, model_classes=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Load all subjects whose
rdf:typemaps to a registered class (per-class graph).When
model_classesis set, only those classes are loaded (recommended when the process has other registered models from unrelated modules).- Return type:
- Parameters:
dataset (RdfDataset)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- triplemodel.io.all_from_graph_dispatch(graph, *, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Load all subjects that resolve to a registered model class.
- Return type:
- Parameters:
graph (RdfGraph)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- class triplemodel.io.GraphDiff(only_in_first, only_in_second)[source]
Bases:
objectStructural difference between two RDF graphs.
- Parameters:
- __init__(only_in_first, only_in_second)
- triplemodel.io.cbd_graph(graph, subject, *, target_graph=None, include_reifications=True)[source]
Return the concise bounded description of
subjectingraph.
- triplemodel.io.cbd_model(model_cls, graph, uri, *, dispatch=False, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, include_reifications=True)[source]
Load a model instance from the CBD subgraph around
uri.- Return type:
- Parameters:
model_cls (type[T])
graph (RdfGraph)
uri (str | NamedNode | BlankNode | Literal)
dispatch (bool)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
include_reifications (bool)
- triplemodel.io.discover_subject_uris(graph, model_cls, cfg, *, resolver=None)[source]
URIRef subjects with at least one owned predicate triple (excluding
rdf:type).- Return type:
- Parameters:
graph (RdfGraph)
model_cls (type[T])
cfg (RdfConfig)
resolver (PredicateResolver | None)
- triplemodel.io.graph_diff(graph_a, graph_b, *, normalize_bnodes=True)[source]
Compare two graphs by normalized triple sets (after optional skolemization).
- triplemodel.io.graphs_equal(graph_a, graph_b, *, normalize_bnodes=True)[source]
Return whether
graph_aandgraph_bare isomorphic RDF graphs.
- triplemodel.io.hydrate_refs(instances, graph, *field_names, spec=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Batch-load reference fields from
graph, reusing one model per object URI.- Return type:
- Parameters:
- triplemodel.io.model_diff(model_a, model_b, graph=None, *, normalize_bnodes=True)[source]
Return field-level differences between two model instances.
When
graphis provided, also includesgraph_diffbetweenmodel_a.to_graph()andmodel_b.to_graph()merged into the source graph.
- triplemodel.io.model_join(instances, graph, spec, **kwargs)[source]
Hydrate reference fields named in
spec(field name → model class).
- triplemodel.io.resolve_model_class_with_rdfs(graph, subject, *, use_subclass=True)[source]
Pick the most specific registered class for
subject’s types.
- triplemodel.io.subject_type_closure(graph, subject)[source]
Return
rdf:typeIRIs forsubjectplusrdfs:subClassOfancestors.
- triplemodel.io.subclass_uris(graph, type_uri)[source]
Return
type_uriand all superclasses viardfs:subClassOf.
- triplemodel.io.transitive_objects(graph, subject, predicate)[source]
Return object IRIs reachable from
subjectalongpredicate(transitive).
- triplemodel.io.transitive_subjects(graph, predicate, obj)[source]
Return subject IRIs that reach
objalongpredicate(transitive).
- triplemodel.io.discover_subjects_by_instance_of(graph, cfg)[source]
Subjects with
(subject, instance_of, type)perRdfConfig.instance_of.
- triplemodel.io.dump_dataset(dataset, destination=None, *, format='trig', jsonld_context=None, **format_kwargs)[source]
Serialize
datasetto a string, bytes, or file.
- triplemodel.io.dump_graph(graph, destination=None, *, format='turtle', jsonld_context=None, **format_kwargs)[source]
Serialize
graphto a string, bytes, or file.
- triplemodel.io.dump_model(model, path, **kwargs)[source]
Write a model instance to an RDF file (alias for
model.serialize).
- triplemodel.io.get_graph_context(container, graph_iri=None)[source]
Return the named-graph view for triple I/O within
container.- Return type:
RdfGraph- Parameters:
container (RdfGraph | RdfDataset)
graph_iri (str | None)
- triplemodel.io.graph_to_model_dispatch(graph, uri, *, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Hydrate using the most specific registered class for the subject’s types.
- Return type:
- Parameters:
graph (RdfGraph)
uri (str | NamedNode | BlankNode | Literal)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- triplemodel.io.graph_to_model_dispatch_from_dataset(dataset, uri, *, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Hydrate using the most specific registered class for the subject’s named graph.
- Return type:
- Parameters:
dataset (RdfDataset)
uri (str | NamedNode | BlankNode | Literal)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- triplemodel.io.graph_to_model_from_dataset(dataset, model_cls, uri, *, graph_iri=None, config=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Construct an instance from triples in the model’s named graph context.
- Return type:
- Parameters:
dataset (RdfDataset)
model_cls (type[T])
uri (str | NamedNode | BlankNode | Literal)
graph_iri (str | None)
config (RdfConfig | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- triplemodel.io.graph_to_models_from_dataset(dataset, model_cls, *, graph_iri=None, type_uri=None, config=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Load all resources of this type from the model’s named graph context.
- Return type:
- Parameters:
dataset (RdfDataset)
model_cls (type[T])
graph_iri (str | None)
type_uri (str | None)
config (RdfConfig | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- triplemodel.io.infer_format(hint, explicit_format=None)[source]
Resolve a parser/serializer format name for pyoxigraph.
- triplemodel.io.is_quad_format(fmt)[source]
Return True when
fmtis a quad-aware format (TriG, N-Quads).
- triplemodel.io.iter_model_quads(model, *, uri=None, graph_iri=None, config=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Yield
(subject, predicate, object, graph_iri)rows formodel.
- triplemodel.io.load_dataset(source=None, *, data=None, format=None, base=None, bind_prefixes=None, jsonld_context=None, **format_kwargs)[source]
Parse RDF into an in-memory dataset (alias for
parse_into_dataset()).
- triplemodel.io.load_graph(source=None, *, data=None, format=None, base=None, bind_prefixes=None, jsonld_context=None, **format_kwargs)[source]
Parse RDF into an in-memory graph (alias for
parse_into_graph()).
- triplemodel.io.backup_store(target_directory, *, graph=None, store_path=None)[source]
Create a backup of an on-disk pyoxigraph store directory.
- triplemodel.io.bulk_load_into_graph(graph, source=None, *, data=None, format=None, base_iri=None, to_graph=None, lenient=False)[source]
Load RDF from a file or bytes into
graph.storeviapyoxigraph.Store.bulk_load().
- triplemodel.io.destroy_store(identifier, *, store='disk', **kwargs)[source]
Remove an on-disk store directory.
- triplemodel.io.dump_store(output, *, graph=None, store_path=None, format='nquads', from_graph=None, prefixes=None, base_iri=None)[source]
Dump an on-disk store to a file (default N-Quads).
- triplemodel.io.ensure_named_graph(graph, graph_iri)[source]
Ensure a named graph exists in the store.
- triplemodel.io.graph_store_session(graph)[source]
Yield
graph(pyoxigraph handles persistence for on-disk stores).- Return type:
Iterator[RdfGraph]- Parameters:
graph (RdfGraph)
- triplemodel.io.iter_quads_for_pattern(graph, subject=None, predicate=None, obj=None, *, graph_iri=None)[source]
Iterate quads matching an optional
(s, p, o, graph)pattern ongraph.store.
- triplemodel.io.load_store(graph, source=None, *, data=None, format='nquads', base_iri=None, to_graph=None, lenient=False)[source]
Load a dump file into an on-disk store backing
graph.
- triplemodel.io.optimize_store(*, graph=None, store_path=None)[source]
Optimize an on-disk store after bulk import or heavy updates.
- triplemodel.io.parse_query_results(source=None, *, data=None, format=None, path=None)[source]
Parse a SPARQL results file into
SparqlResult.
- triplemodel.io.remove_named_graph(graph, graph_iri)[source]
Remove a named graph and its quads from the store.
- triplemodel.io.iter_graph_to_models(graph, model_cls, *, chunk_size=500, type_uri=None, config=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, strict_import=None, warn_unmapped_fields=None)[source]
Yield chunks of model instances loaded from
graph.- Return type:
- Parameters:
graph (RdfGraph)
model_cls (type[T])
chunk_size (int)
type_uri (str | None)
config (RdfConfig | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
strict_import (bool | None)
warn_unmapped_fields (bool | None)
- triplemodel.io.load_models(path, *model_classes, **kwargs)[source]
Load one or more model classes from a file (single parse for multiple classes).
- triplemodel.io.load_models_from_dataset(dataset, *model_classes, **kwargs)[source]
Load multiple model classes from one dataset (each uses its
Rdf.graph_iri).
- triplemodel.io.load_models_from_graph(graph, *model_classes, **kwargs)[source]
Load multiple model classes from one graph without re-parsing.
- triplemodel.io.load_models_streaming(path, *model_classes, store=None, chunk_size=500, store_identifier=None, **kwargs)[source]
Load models from a large file using chunked hydration (optional on-disk store).
For N-Triples / N-Quads, pass
store='disk'(and optionalstore_identifier) to avoid holding the full graph in memory. Omitstorefor an in-memory parse. Turtle/TriG still require a full parse.
- triplemodel.io.open_graph(store, identifier='', *, create=True, read_only=False, ephemeral_store_path=None, **kwargs)[source]
Open an in-memory or on-disk graph backed by pyoxigraph.
storemay bememory/defaultordisk. Fordisk,identifieris a directory path passed topyoxigraph.Store.When
read_only=True, opens withpyoxigraph.Store.read_only()(undefined behavior if another process writes the same path). Whencreate=False, raisesFileNotFoundErrorif the directory does not exist.
- triplemodel.io.parse_into_store_graph(path, *, store='disk', identifier=None, format=None, base=None, bind_prefixes=None, jsonld_context=None, **format_kwargs)[source]
Parse a document into a store-backed
Graph(recommended for large N-Triples/N-Quads).Defaults to an on-disk
pyoxigraph.Store(store='disk'). Passidentifierfor a persistent directory, or omit it to use a temporary directory removed byclose().
- triplemodel.io.store_commit(graph)[source]
Flush an on-disk store when supported.
- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.io.store_flush(graph)[source]
Flush pending writes on an on-disk store (no-op if unsupported).
- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.io.store_rollback(graph)[source]
No-op for pyoxigraph (transactions are not exposed on
Store).- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.io.model_to_dataset(model, dataset=None, *, uri=None, config=None, graph_iri=None, mode=None, bind=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Add triples for
modelto the appropriate named graph indataset.- Return type:
RdfDataset- Parameters:
model (BaseModel)
dataset (RdfDataset | None)
uri (str | None)
config (RdfConfig | None)
graph_iri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
bind (bool | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- triplemodel.io.models_to_dataset(models, dataset=None, *, mode='add', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Serialize multiple model instances into named graphs by
resolve_graph_iri.- Return type:
RdfDataset- Parameters:
dataset (RdfDataset | None)
mode (Literal['add', 'replace', 'patch'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
- triplemodel.io.parse_into_dataset(source=None, *, data=None, format=None, base=None, bind_prefixes=None, jsonld_context=None, lenient=False, without_named_graphs=False, rename_blank_nodes=False, **format_kwargs)[source]
Parse RDF into a new in-memory
RdfDataset.- Return type:
RdfDataset- Parameters:
- triplemodel.io.parse_into_graph(source=None, *, data=None, format=None, base=None, bind_prefixes=None, jsonld_context=None, lenient=False, without_named_graphs=False, rename_blank_nodes=False, **format_kwargs)[source]
Parse RDF into a new in-memory
RdfGraph.- Return type:
RdfGraph- Parameters:
- triplemodel.io.parse_url_into_dataset(url, *, format=None, base=None, timeout=30.0, bind_prefixes=None, jsonld_context=None, lenient=False, without_named_graphs=False, rename_blank_nodes=False, **format_kwargs)[source]
Parse RDF from a URL into a
RdfDataset.
- triplemodel.io.parse_url_into_graph(url, *, format=None, base=None, timeout=30.0, bind_prefixes=None, jsonld_context=None, lenient=False, without_named_graphs=False, rename_blank_nodes=False, **format_kwargs)[source]
Parse RDF from a URL.
- triplemodel.io.quads_in_context(dataset, graph_iri)[source]
Iterate quads in a named graph (or default graph when
graph_iriis None).
- triplemodel.io.sync_to_dataset(model, dataset, *, uri=None, graph_iri=None, mode=None, config=None, bind=True, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Sync
modelinto the resolved named graph withindataset.- Return type:
RdfDataset- Parameters:
model (BaseModel)
dataset (RdfDataset)
uri (str | None)
graph_iri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
config (RdfConfig | None)
bind (bool)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- triplemodel.io.graph_set(graph, subject, predicate, value, *, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Set objects for
(subject, predicate)using remove-then-add semantics.
- triplemodel.io.graph_set_many(graph, subject, predicate, values, *, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Set multiple objects for
(subject, predicate)(remove-then-add).
- triplemodel.io.graph_to_model(graph, model_cls, uri, *, config=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, strict_import=None, warn_unmapped_fields=None)[source]
Hydrate a single model instance from triples about
uri.- Return type:
- Parameters:
graph (RdfGraph)
model_cls (type[T])
uri (str | NamedNode | BlankNode | Literal)
config (RdfConfig | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
strict_import (bool | None)
warn_unmapped_fields (bool | None)
- triplemodel.io.graph_to_models(graph, model_cls, *, chunk_size=None, type_uri=None, config=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, strict_import=None, warn_unmapped_fields=None)[source]
Load all resources of
type_uri(or the model’s configured type) as models.- Return type:
- Parameters:
graph (RdfGraph)
model_cls (type[T])
chunk_size (int | None)
type_uri (str | None)
config (RdfConfig | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
strict_import (bool | None)
warn_unmapped_fields (bool | None)
- triplemodel.io.graph_value(graph, subject, predicate, model_cls, field_name, *, on_duplicate='first', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Return a single object for a functional-property field, if present.
- triplemodel.io.import_field_value(graph, objects, field_info, field_name, predicate, uri, *, embed, on_duplicate, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=False)[source]
Hydrate a single model field from RDF objects (used by
graph_to_model()).
- triplemodel.io.merge_graphs(*graphs)[source]
Return a new graph containing the union of
graphs.- Return type:
RdfGraph- Parameters:
graphs (RdfGraph)
- triplemodel.io.model_to_graph(model, graph=None, *, uri=None, config=None, mode=None, bind=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Add triples for
modeltograph(or a new graph) and return it.- Return type:
RdfGraph- Parameters:
model (BaseModel)
graph (RdfGraph | None)
uri (str | None)
config (RdfConfig | None)
mode (Literal['add', 'replace', 'patch'] | None)
bind (bool | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- triplemodel.io.model_to_triples(model, *, uri=None, config=None, resolver=None, registry=None)[source]
Return (subject, predicate, object) tuples for a model instance.
list[T]fields are omitted here; usemodel_to_graph()orto_graph()for full export includingrdf:List.registryis accepted for API symmetry with graph writers; literal conversion happens when triples are added to a graph (graph_set_many).- Return type:
list[tuple[str|NamedNode|BlankNode|Literal,str,Union[str,int,float,bool,date,datetime,Decimal,UUID,Enum,NamedNode,BlankNode,Literal]]]- Parameters:
model (BaseModel)
uri (str | None)
config (RdfConfig | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry | None)
- triplemodel.io.models_to_graph(models, graph=None, *, mode='add', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Serialize multiple model instances into one graph.
- Return type:
RdfGraph- Parameters:
graph (RdfGraph | None)
mode (Literal['add', 'replace', 'patch'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
- triplemodel.io.objects_for_field(graph, uri, model_cls, field_name, *, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Return all RDF objects for a model field’s predicate.
- triplemodel.io.sync_to_graph(model, graph=None, *, uri=None, mode=None, config=None, bind=True, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Write
modelintographusingmodesync semantics.- Return type:
RdfGraph- Parameters:
model (BaseModel)
graph (RdfGraph | None)
uri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
config (RdfConfig | None)
bind (bool)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- triplemodel.io.write_model_add(graph, model, *, uri=None, config=None, bind=False, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Append triples for
modeltograph.- Return type:
RdfGraph- Parameters:
graph (RdfGraph)
model (BaseModel)
uri (str | None)
config (RdfConfig | None)
bind (bool)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)