triplemodel.protocols

Public protocols and extension points for TripleModel.

triplemodel.protocols.register_rdf_resource(model_cls)[source]

Record a TripleModel subclass for nested-embed detection.

Return type:

None

Parameters:

model_cls (type)

triplemodel.protocols.iter_registered_type_uris()[source]

Return all type_uri values registered on model classes.

Return type:

frozenset[str]

triplemodel.protocols.model_class_for_type_uri(type_uri)[source]

Return the registered model class for type_uri, if any.

Return type:

type[BaseModel] | None

Parameters:

type_uri (str)

triplemodel.protocols.iter_registered_model_classes()[source]

Return all registered TripleModel subclasses.

Return type:

frozenset[type[BaseModel]]

triplemodel.protocols.iter_model_resource_classes()[source]

Return every TripleModel subclass that was registered.

Return type:

frozenset[type[BaseModel]]

triplemodel.protocols.resolve_model_class(graph, subject, *, use_subclass=None)[source]

Pick the most specific registered class for subject’s rdf:type values.

Return type:

type[BaseModel]

Parameters:
  • graph (RdfGraph)

  • subject (NamedNode | BlankNode | Literal)

  • use_subclass (bool | None)

triplemodel.protocols.is_rdf_resource_class(tp)[source]

True when tp is a registered RDF-backed model class.

Return type:

bool

Parameters:

tp (type)

class triplemodel.protocols.RdfResource(*args, **kwargs)[source]

Bases: Protocol

Marker protocol for Pydantic models that map to RDF resources.

__init__(*args, **kwargs)
class triplemodel.protocols.PredicateResolver(*args, **kwargs)[source]

Bases: Protocol

Resolve field predicates and owned predicate sets for a model class.

resolve_field_predicate(field_info, prefixes)[source]
Return type:

str | None

Parameters:
owned_predicates(model_cls, config=None)[source]
Return type:

frozenset[str]

Parameters:
__init__(*args, **kwargs)
class triplemodel.protocols.LiteralRegistry(*args, **kwargs)[source]

Bases: Protocol

Pluggable Python ↔ XSD literal conversion.

register_literal_type(py_type, to_literal, from_literal, *, datatype=None)[source]
Return type:

None

Parameters:
python_to_literal(value, py_type=None)[source]
Return type:

Literal | None

Parameters:
literal_to_python(term, py_type)[source]
Return type:

object | None

Parameters:
  • term (Literal)

  • py_type (type | None)

__init__(*args, **kwargs)
class triplemodel.protocols.EmbedStrategy(*args, **kwargs)[source]

Bases: Protocol

Export/import nested models (IRI or blank-node embedding).

export(parent_subject, predicate, nested, *, config=None)[source]
Return type:

list[tuple[str | object, str, object]]

Parameters:
import_value(graph, term, nested_cls)[source]
Return type:

BaseModel

Parameters:
__init__(*args, **kwargs)
class triplemodel.protocols.GraphWriteMode(*args, **kwargs)[source]

Bases: Protocol

Write a model instance into a graph (add / replace / patch).

property mode: Literal['add', 'replace', 'patch']
apply(graph, model, *, uri=None, config, bind, resolver=None, registry=None, skolemize=None)[source]
Return type:

RdfGraph

Parameters:
__init__(*args, **kwargs)