Examples
Runnable scripts live in the repository examples/ directory on GitHub.
Guide and README snippets that show Output blocks are driven by examples/doc/ (snippets/ + checked-in outputs/). Regenerate with python examples/doc/regenerate_outputs.py from the repo root (PYTHONPATH=src:.).
Full walkthrough (exit_criteria_03.py)
examples/exit_criteria_03.py demonstrates:
Dublin Core
titlewithLangStringBlank-node
AddressembedOrdered
nickasrdf:List(list[str])sync_to_graph(..., mode="replace")after editing a list field
pip install triplemodel
git clone https://github.com/eddiethedean/triplemodel.git
cd triplemodel
PYTHONPATH=src python examples/exit_criteria_03.py
"""0.3.0 exit-criteria demo: DC title @lang, blank-node Address, ordered rdf:List nick."""
from __future__ import annotations
from triplemodel import TripleModel, rdf_field, sync_to_graph
from triplemodel.terms.lang import LangString
from triplemodel.vocab import DC, FOAF
EX = "http://example.org/people/"
class Address(TripleModel):
class Rdf:
namespace = "http://example.org/address/"
type_uri = "http://example.org/Address"
id_field = "slug"
slug: str = "home"
street: str = rdf_field("http://example.org/street")
class Person(TripleModel):
class Rdf:
namespace = EX
type_uri = f"{FOAF}Person"
id_field = "slug"
embed = "bnode"
prefixes = {"foaf": str(FOAF), "dc": str(DC)}
slug: str
title: LangString = rdf_field(f"{DC}title")
nick: list[str] = rdf_field("foaf:nick", default_factory=list)
address: Address | None = rdf_field("http://example.org/home", default=None)
def main() -> None:
person = Person(
slug="alice",
title=LangString("Alice's profile", "en"),
nick=["Al", "Alice"],
address=Address(street="1 Main St"),
)
g = person.to_graph()
restored = Person.from_graph(g, person.subject_uri())
assert restored.title == LangString("Alice's profile", "en")
assert restored.nick == ["Al", "Alice"]
assert restored.address is not None
assert restored.address.street == "1 Main St"
person.nick = ["Alice"]
sync_to_graph(person, g, mode="replace")
again = Person.from_graph(g, person.subject_uri())
assert again.nick == ["Alice"]
print("0.3.0 exit criteria OK")
if __name__ == "__main__":
main()
README examples
examples/readme_examples.py exercises snippets from the project README (quick start, batch export, encoded subject ids, etc.).
PYTHONPATH=src python examples/readme_examples.py
Nested model with sync (foaf_person_02.py)
examples/foaf_person_02.py shows nested Mailbox (IRI embed), Rdf.prefixes, multiple foaf:nick values via list[str] (RDF list), and clearing foaf:age with sync.
PYTHONPATH=src python examples/foaf_person_02.py
Real-world data (examples/realworld/)
Bundled RDF from public sources (Nobel Prize linked data, DCAT catalogs, Wikidata, Schema.org). Each script maps a concrete integration problem—see examples/realworld/README.md and DATA_SOURCES.md.
PYTHONPATH=src python examples/realworld/nobel_laureates.py
PYTHONPATH=src python examples/realworld/dcat_data_catalog.py
PYTHONPATH=src python examples/realworld/wikidata_capitals.py
PYTHONPATH=src python examples/realworld/schema_org_ngos.py