TripleModel
Pydantic models for RDF graphs. Map typed Python classes to RDF triples in a pyoxigraph-backed Store and back — without hand-writing triples for every field.
Person(slug="alice", name="Alice") → (ex:alice, foaf:name, "Alice") → Person(...)
PyPI |
|
Python |
3.10+ |
Status |
Beta (0.12.0) |
Features
Pydantic v2 with declarative RDF mapping (
class Rdf,rdf_field,Predicate)Multi-valued fields —
set[T]for multiple objects per predicate;list[T]for orderedrdf:ListLanguage tags & opaque literals —
LangString,MultiLangString,Lang(),OpaqueLiteral,ResourceRefTyped literals per object —
TypedLiteral,TypedLiteralListonset/listfieldsOntology hints —
OntologyRegistry,apply_hints_to_model(owl:inverseOf, subclasses)Paired inverse metadata —
BackPopulates,inverse_pair,subjects_via_back_populatesNested models — embed child
TripleModelresources (IRI or experimental blank node)Sync modes —
sync_to_graphandto_graph(..., mode=)(add,replace,patch)Prefixes & CURIEs —
Rdf.prefixes, compact predicates, TurtlePREFIXoutputLiteral registry —
Decimal,UUID,Enum, and custom typesGraph helpers —
merge_graphs,graph_value,graph_set,objects_for_field
SparqlModel (session / ORM layer) is planned to build on TripleModel — see TripleModel and SparqlModel — separation of responsibilities.