API reference
TripleModel — Pydantic models backed by RDF graphs via pyoxigraph.
Install: pip install triplemodel
- triplemodel.Store
alias of
RdfGraph
- triplemodel.canonicalize_quads(quads, *, algorithm=<CanonicalizationAlgorithm unstable>)[source]
Return a canonical ordering of
quadsusingpyoxigraph.Dataset.canonicalize().Use for diff snapshots of in-memory data. Blank-node labels from a persistent
Storeare not stable when graph shape changes.
- class triplemodel.Lang(code, direction=None)[source]
Bases:
objectField metadata: serialize
strvalues with a fixed language tag.
- triplemodel.all_from_dataset(dataset, model_cls, **kwargs)[source]
Load every resource of this model’s RDF type from its named graph context.
- triplemodel.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.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)
- triplemodel.dump_dataset(dataset, destination=None, *, format='trig', jsonld_context=None, **format_kwargs)[source]
Serialize
datasetto a string, bytes, or file.
- triplemodel.dump_graph(graph, destination=None, *, format='turtle', jsonld_context=None, **format_kwargs)[source]
Serialize
graphto a string, bytes, or file.
- triplemodel.dump_model(model, path, **kwargs)[source]
Write a model instance to an RDF file (alias for
model.serialize).
- triplemodel.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.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.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.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.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.infer_format(hint, explicit_format=None)[source]
Resolve a parser/serializer format name for pyoxigraph.
- triplemodel.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.is_quad_format(fmt)[source]
Return True when
fmtis a quad-aware format (TriG, N-Quads).
- triplemodel.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.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.load_models(path, *model_classes, **kwargs)[source]
Load one or more model classes from a file (single parse for multiple classes).
- triplemodel.load_models_from_dataset(dataset, *model_classes, **kwargs)[source]
Load multiple model classes from one dataset (each uses its
Rdf.graph_iri).
- triplemodel.load_models_from_graph(graph, *model_classes, **kwargs)[source]
Load multiple model classes from one graph without re-parsing.
- triplemodel.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.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.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.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.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.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.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.ref_field(predicate, *, model, inverse=None, default=Ellipsis, **field_kwargs)[source]
Foreign-key field: import hydrates
modelfrom the object URI in the graph.
- triplemodel.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.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.quads_in_context(dataset, graph_iri)[source]
Iterate quads in a named graph (or default graph when
graph_iriis None).
- triplemodel.resolve_graph_iri(model, cfg=None)[source]
Return the named graph IRI for
model(class config, then instance override).
- triplemodel.resolve_model_class(graph, subject, *, use_subclass=None)[source]
Pick the most specific registered class for
subject’srdf:typevalues.
- class triplemodel.LangString(value, lang=None, direction=None)[source]
Bases:
objectA literal string value with an optional language tag and text direction.
- __init__(value, lang=None, direction=None)
- class triplemodel.MultiLangString(mapping=None, /, **langs)[source]
Bases:
objectMultiple language-tagged literals for one predicate, keyed by language code.
Use on a single field when the graph has several
@langobjects on the same predicate (for examplerdfs:label@enandrdfs:label@fr). Export emits one triple per entry; import collects all language-tagged literals on the field.- Parameters:
mapping (Mapping[str, str | LangString | None] | None)
langs (str | LangString | None)
- __init__(mapping=None, /, **langs)[source]
- Parameters:
mapping (Mapping[str, str | LangString | None] | None)
langs (str | LangString | None)
- Return type:
None
- classmethod from_mapping(mapping)[source]
Build from a language code → value map (
Noneentries are omitted).- Return type:
- Parameters:
mapping (Mapping[str, str | LangString | None])
- get(lang, default=None)[source]
- Return type:
- Parameters:
lang (str)
default (LangString | None)
-
by_lang:
Mapping[str,LangString]
- class triplemodel.LiteralRegistry[source]
Bases:
objectRegistry of Python type ↔ RDF literal converters.
- converter_for_datatype(datatype)[source]
Return import converter registered for an XSD datatype IRI.
- class triplemodel.OpaqueLiteral(value, datatype=None)[source]
Bases:
objectA literal value preserved with its original datatype URI.
- class triplemodel.TypedLiteral(value, datatype=None)[source]
Bases:
objectOne RDF literal value with its own XSD (or custom) datatype IRI.
Use as the element type of
set[TypedLiteral]orlist[TypedLiteral]when several objects on one predicate may carry different^^datatypeIRIs. Field-levelliteral_datatype=applies one datatype to every object; this type preserves each graph literal’s datatype independently.
- class triplemodel.OntologyRegistry(_graph=None, _parent_to_children=<factory>, _registered_inverse_forward=<factory>, _registered_inverse_reverse=<factory>, _graph_inverse_forward=<factory>, _graph_inverse_reverse=<factory>)[source]
Bases:
objectSubclass and
owl:inverseOfhints from an ontology graph and/or static registration.Use
subtypes_of()for descendant type IRIs (subclasses). For ancestor types (superclasses of a given class), usesubclass_uris()on a graph that containsrdfs:subClassOfaxioms.- Parameters:
- __init__(_graph=None, _parent_to_children=<factory>, _registered_inverse_forward=<factory>, _registered_inverse_reverse=<factory>, _graph_inverse_forward=<factory>, _graph_inverse_reverse=<factory>)
- classmethod from_graph(graph)[source]
Build a registry backed by
graph(typically parsed OWL/RDFS Turtle).- Return type:
- Parameters:
graph (RdfGraph)
- classmethod from_ttl(path, *, format=None, base_iri=None)[source]
Parse a Turtle (or other) ontology file into a new registry.
- Return type:
- Parameters:
- load_graph(graph)[source]
Use
graphforsubtypes_of()andinverse_of()queries.- Return type:
- Parameters:
graph (RdfGraph)
- register_inverse(forward_predicate, inverse_predicate)[source]
Register an
owl:inverseOfpair (both directions are queryable).
- triplemodel.apply_hints_to_model(model_cls, registry, *, mutate=False, overwrite=False)[source]
Suggest or apply
inverse=metadata fromOntologyRegistry.inverse_of().Returns
{field_name: inverse_predicate_uri}for each mapped field that received a hint. Whenmutateis True, updatesjson_schema_extraon the class and callsmodel_rebuild()soinverse_for_field()sees the inverse IRI. Skips fields that already declare an inverse unlessoverwriteis True.
- class triplemodel.VocabularyRegistry(type_uri_to_class=<factory>, prefix_to_uri=<factory>)[source]
Bases:
objectMaps RDF type IRIs and namespace prefixes to
TripleModelclasses.- __init__(type_uri_to_class=<factory>, prefix_to_uri=<factory>)
- bind_vocab(graph)[source]
Bind all registered prefixes on
graph.- Return type:
- Parameters:
graph (RdfGraph)
- classmethod from_registered()[source]
Build a registry snapshot from process-wide registrations.
- Return type:
- class triplemodel.ResourceRef(iri)[source]
Bases:
objectReference to an RDF resource identified by IRI.
- Parameters:
iri (str)
- class triplemodel.RdfResource(*args, **kwargs)[source]
Bases:
ProtocolMarker protocol for Pydantic models that map to RDF resources.
- __init__(*args, **kwargs)
- class triplemodel.TripleModel(**data)[source]
Bases:
BaseModelPydantic model that can be serialized to and from an RDF graph.
Subclasses declare RDF metadata on a nested
Rdfclass and map fields withrdf_field()orAnnotated[..., Predicate(...)]. A nestedRdfon a subclass replaces the parent’s config entirely; do not declare an emptyclass Rdf:on a child if you intend to inherit the parent’snamespace,type_uri, orid_field.Example:
class Person(TripleModel): class Rdf: namespace = "http://example.org/people/" type_uri = "http://xmlns.com/foaf/0.1/Person" id_field = "slug" slug: str name: str = rdf_field("http://xmlns.com/foaf/0.1/name")
- classmethod all_from_dataset(dataset, *, graph_iri=None, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Load every resource of this model’s RDF type from its named graph context.
- Return type:
list[Self]- Parameters:
dataset (RdfDataset)
graph_iri (str | None)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- classmethod all_from_graph(graph, *, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Load every resource of this model’s RDF type from
graph.- Return type:
list[Self]- Parameters:
graph (RdfGraph)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- classmethod cbd(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 an instance from the concise bounded description around
uri.- Return type:
Self- Parameters:
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)
- classmethod construct_from_sparql(graph, query, *, dispatch=False, graph_out=None, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, **kwargs)[source]
Run CONSTRUCT/DESCRIBE and load instances of this class.
- Return type:
list[Self]- Parameters:
graph (RdfGraph)
query (str)
dispatch (bool)
graph_out (RdfGraph | None)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
kwargs (Any)
- classmethod from_dataset(dataset, uri, *, graph_iri=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 this model’s named graph context.
- Return type:
Self- Parameters:
dataset (RdfDataset)
uri (str)
graph_iri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
- classmethod from_graph(graph, uri, *, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None)[source]
Construct an instance from triples about
uri(IRI string or term).- Return type:
Self- 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)
- classmethod load_sparql(endpoint, query, *, query_form=None, read_only=True, dispatch=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, **kwargs)[source]
Query a remote SPARQL endpoint and return instances.
- Return type:
list[Self]- Parameters:
- model_config: ClassVar[ConfigDict] = {'str_strip_whitespace': False, 'validate_assignment': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- classmethod parse(source=None, *, data=None, format=None, base=None, dispatch=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, lenient=False, without_named_graphs=False, rename_blank_nodes=False, **format_kwargs)[source]
Parse an RDF document and load model instances.
- Return type:
list[Self]- Parameters:
format (str | None)
base (str | None)
dispatch (bool)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
lenient (bool)
without_named_graphs (bool)
rename_blank_nodes (bool)
format_kwargs (Any)
- classmethod parse_file(path, *, format=None, base=None, dispatch=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, **format_kwargs)[source]
Parse RDF from a local file path.
- Return type:
list[Self]- Parameters:
- classmethod parse_url(url, *, format=None, base=None, timeout=30.0, dispatch=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, **format_kwargs)[source]
Parse RDF from a URL.
- Return type:
list[Self]- Parameters:
- classmethod rdf_config()[source]
Return resolved RDF configuration for this model class.
- Return type:
- classmethod select_from_sparql(graph, query, *, field_map=None, subject_var=None, hydrate=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, **kwargs)[source]
Run SELECT and build instances from bindings or hydration.
- Return type:
list[Self]- Parameters:
graph (RdfGraph)
query (str)
subject_var (str | None)
hydrate (bool)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
kwargs (Any)
- serialize(*, format='turtle', destination=None, uri=None, mode=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None, **format_kwargs)[source]
Serialize this instance to an RDF document string or file.
- sync_to_dataset(dataset, *, uri=None, graph_iri=None, mode=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Update the named graph for this instance within
dataset.- Return type:
RdfDataset- Parameters:
dataset (RdfDataset)
uri (str | None)
graph_iri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- sync_to_graph(graph, *, uri=None, mode=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Update
graphwith owned triples for this instance (seemode).When
modeis omitted, usesRdf.graph_modeif set to something other than"add"; otherwise defaults to"replace".- Return type:
RdfGraph- Parameters:
graph (RdfGraph)
uri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- to_dataset(dataset=None, *, uri=None, graph_iri=None, mode=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Serialize this instance into a named-graph dataset.
- Return type:
RdfDataset- Parameters:
dataset (RdfDataset | None)
uri (str | None)
graph_iri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- to_graph(graph=None, *, uri=None, mode=None, resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, skolemize=None)[source]
Serialize this instance into a
Storegraph.When
modeis omitted, usesRdf.graph_mode(default"add").- Return type:
RdfGraph- Parameters:
graph (RdfGraph | None)
uri (str | None)
mode (Literal['add', 'replace', 'patch'] | None)
resolver (PredicateResolver | None)
registry (LiteralRegistry)
skolemize (bool | None)
- triplemodel.bind_namespaces(graph, prefixes, *, strategy='core')[source]
Bind
prefixesongraphfor serialization (recorded for Turtle output).
- triplemodel.expand_curie(curie, prefixes)[source]
Expand
prefix:localto a full IRI; pass through absolute IRIs.
- triplemodel.graph_set(graph, subject, predicate, value, *, registry=<triplemodel.terms.registry.LiteralRegistry object>)[source]
Set objects for
(subject, predicate)using remove-then-add semantics.
- triplemodel.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.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.graph_store_session(graph)[source]
Yield
graph(pyoxigraph handles persistence for on-disk stores).- Return type:
Iterator[RdfGraph]- Parameters:
graph (RdfGraph)
- triplemodel.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.backup_store(target_directory, *, graph=None, store_path=None)[source]
Create a backup of an on-disk pyoxigraph store directory.
- triplemodel.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.destroy_store(identifier, *, store='disk', **kwargs)[source]
Remove an on-disk store directory.
- triplemodel.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.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.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.optimize_store(*, graph=None, store_path=None)[source]
Optimize an on-disk store after bulk import or heavy updates.
- triplemodel.parse_query_results(source=None, *, data=None, format=None, path=None)[source]
Parse a SPARQL results file into
SparqlResult.
- triplemodel.remove_named_graph(graph, graph_iri)[source]
Remove a named graph and its quads from the store.
- triplemodel.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.id_from_subject_uri(namespace, uri)[source]
Extract the id segment from
uriwhen it was built fromnamespace.
- triplemodel.merge_graphs(*graphs)[source]
Return a new graph containing the union of
graphs.- Return type:
RdfGraph- Parameters:
graphs (RdfGraph)
- triplemodel.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.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.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.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.rdf_field(predicate, *, inverse=None, back_populates=None, literal_datatype=None, transitive=False, default=Ellipsis, **field_kwargs)[source]
Create a Pydantic field bound to an RDF predicate.
- triplemodel.register_literal_type(py_type, to_literal, from_literal, *, datatype=None)[source]
Register converters on the package-default
default_registry.
- triplemodel.register_rdf_resource(model_cls)[source]
Record a
TripleModelsubclass for nested-embed detection.
- triplemodel.store_commit(graph)[source]
Flush an on-disk store when supported.
- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.store_flush(graph)[source]
Flush pending writes on an on-disk store (no-op if unsupported).
- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.store_rollback(graph)[source]
No-op for pyoxigraph (transactions are not exposed on
Store).- Return type:
- Parameters:
graph (RdfGraph)
- triplemodel.subject_base(namespace)[source]
Return the prefix used when appending an id to
namespace.
- triplemodel.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.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)
- class triplemodel.GraphDiff(only_in_first, only_in_second)[source]
Bases:
objectStructural difference between two RDF graphs.
- Parameters:
- __init__(only_in_first, only_in_second)
- triplemodel.apply_update(graph, update, *, model_cls=None, initNs=None, initBindings=None, use_store_provided=True, **kwargs)[source]
Apply a SPARQL UPDATE to
graph(in-memory models may be stale afterward).
- triplemodel.ask(graph, query, *, model_cls=None, initNs=None, initBindings=None, use_store_provided=True, **kwargs)[source]
Execute an ASK query and return the boolean result.
- triplemodel.cbd_graph(graph, subject, *, target_graph=None, include_reifications=True)[source]
Return the concise bounded description of
subjectingraph.
- triplemodel.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.construct_models(model_cls, graph, query, *, dispatch=False, graph_out=None, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, initNs=None, initBindings=None, use_store_provided=True, **kwargs)[source]
Run CONSTRUCT/DESCRIBE and load models from the result graph.
- Return type:
- Parameters:
model_cls (type[T])
graph (RdfGraph)
query (str)
dispatch (bool)
graph_out (RdfGraph | None)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
initBindings (Mapping[str, NamedNode | BlankNode | Literal] | None)
use_store_provided (bool)
kwargs (Any)
- triplemodel.graph_diff(graph_a, graph_b, *, normalize_bnodes=True)[source]
Compare two graphs by normalized triple sets (after optional skolemization).
- triplemodel.graph_from_construct_result(result, graph_out=None)[source]
Merge a CONSTRUCT/DESCRIBE
Resultgraph intograph_outor a new graph.- Return type:
RdfGraph- Parameters:
result (SparqlResult)
graph_out (RdfGraph | None)
- triplemodel.graphs_equal(graph_a, graph_b, *, normalize_bnodes=True)[source]
Return whether
graph_aandgraph_bare isomorphic RDF graphs.
- triplemodel.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.init_bindings_from_model(instance, mapping)[source]
Map SPARQL variable names to RDF terms from model field values.
- triplemodel.init_ns_from_model(model_cls)[source]
Build prefix map for SPARQL from
model_clsRdf.prefixes.
- triplemodel.load_sparql(model_cls, endpoint, query, *, query_form=None, read_only=True, dispatch=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, initNs=None, initBindings=None, use_store_provided=True, **kwargs)[source]
Query a remote SPARQL endpoint and return model instances.
Uses
open_sparql_graph(), which raisesNotImplementedErrorin 0.10.0. Query a localStorewithconstruct_models()/select_models()after fetching data, or use SparqlModel for remote endpoints.- Return type:
- Parameters:
model_cls (type[T])
endpoint (str)
query (str)
query_form (Literal['select', 'construct', 'describe', 'ask', 'unknown'] | None)
read_only (bool)
dispatch (bool)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
initBindings (Mapping[str, NamedNode | BlankNode | Literal] | None)
use_store_provided (bool)
kwargs (Any)
- triplemodel.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.model_join(instances, graph, spec, **kwargs)[source]
Hydrate reference fields named in
spec(field name → model class).
- triplemodel.open_sparql_graph(endpoint, *, read_only=True)[source]
Open a remote SPARQL graph (removed in 0.10.0).
Raises
NotImplementedError. Load remote data into a localStoreor use SparqlModel for session-level remote stores.
- triplemodel.prepare_model_query(model_cls, query)[source]
Prepare
query(prefixes applied at execution frommodel_cls).- Return type:
- Parameters:
- triplemodel.resolve_model_class_with_rdfs(graph, subject, *, use_subclass=True)[source]
Pick the most specific registered class for
subject’s types.
- triplemodel.run_sparql(graph, query, *, model_cls=None, initNs=None, initBindings=None, use_store_provided=True, use_default_graph_as_union=False, default_graph=None, named_graphs=None, base_iri=None, **kwargs)[source]
Run SPARQL on
graph.storewith optional prefixes and bindings.- Return type:
SparqlResult- Parameters:
- triplemodel.select_models(model_cls, graph, query, *, field_map=None, subject_var=None, hydrate=False, type_uri=None, validate_type=True, on_duplicate='warn', resolver=None, registry=<triplemodel.terms.registry.LiteralRegistry object>, de_skolemize=None, initNs=None, initBindings=None, use_store_provided=True, **kwargs)[source]
Run SELECT and return model instances from result bindings or hydration.
- Return type:
- Parameters:
model_cls (type[T])
graph (RdfGraph)
query (str)
subject_var (str | None)
hydrate (bool)
type_uri (str | None)
validate_type (bool)
on_duplicate (Literal['ignore', 'warn', 'error', 'first'])
resolver (PredicateResolver | None)
registry (LiteralRegistry)
de_skolemize (bool | None)
initBindings (Mapping[str, NamedNode | BlankNode | Literal] | None)
use_store_provided (bool)
kwargs (Any)
- triplemodel.subject_type_closure(graph, subject)[source]
Return
rdf:typeIRIs forsubjectplusrdfs:subClassOfancestors.
- triplemodel.subclass_uris(graph, type_uri)[source]
Return
type_uriand all superclasses viardfs:subClassOf.
- triplemodel.transitive_objects(graph, subject, predicate)[source]
Return object IRIs reachable from
subjectalongpredicate(transitive).
- triplemodel.transitive_subjects(graph, predicate, obj)[source]
Return subject IRIs that reach
objalongpredicate(transitive).
Module reference
- triplemodel.config
- triplemodel.io
- Dataset I/O
- triplemodel.io.sparql
- Store helpers
- Plugin hooks
- Codegen (experimental)
- triplemodel.io.sync
- triplemodel.fields
- triplemodel.namespaces
- triplemodel.embed
- triplemodel.terms.registry
- triplemodel.io.ops
- triplemodel.io.compare
- triplemodel.io.cbd
- triplemodel.io.rdfs
- triplemodel.io.hydrate
- triplemodel.vocab_registry
- triplemodel.metadata.cardinality
- triplemodel.fields.metadata
- triplemodel.terms.lang
- triplemodel.terms.typed_literal
- triplemodel.ontology_registry
- triplemodel.protocols
- triplemodel.vocab