Project artefacts
Every file produced during the project is downloadable below. The Python scripts require only the two third-party packages declared in requirements.txt: lxml and rdflib.
Python requirements
The two external packages needed to reproduce the TEI-to-HTML and TEI-to-RDF transformations.
Download requirements.txtTEI/XML encoding
The Wikipedia article encoded in TEI/XML, with all fifteen entities defined in the standoff and taxonomy, reconciled to Wikidata and (where applicable) VIAF.
Download tei.xmlEntity inventory (CSV)
The working inventory of the selected entities, their types, local identifiers, authority identifiers, and notes used before the TEI encoding.
Download entita_god_of_war.csvTheoretical model mind map
The initial organisation of production entities, concepts, fictional characters, mythological figures, and the relations connecting them.
View mind mapTEI → HTML script
Python script that walks the TEI, extracts entities from standoff, and renders the article as HTML with colour-coded entities, hover tooltips, and section navigation.
Download tei_to_html.pyInteractive HTML article
The Wikipedia text rendered as a self-contained HTML page with entities colour-coded by type and addressable by the Entity Explorer. Browsable live on the HTML Rendering page, or open the raw file directly below.
Open raw fileEntity Explorer data script
Python script that combines the TEI entity definitions and mention counts with every RDF statement in which each entity appears as subject or object.
Download build_entity_data.pyEntity Explorer dataset
Generated JSON used by the interactive selector: 15 entities with layers, identifiers, reconciliation notes, TEI occurrence counts, and RDF statements.
Open entities.jsonGraffoo conceptual model
The full conceptual model as a Graffoo diagram (classes, object properties, data properties, and the coined gow:reinterprets).
TEI → RDF script
Python script that builds the RDF graph with rdflib, differentiating reconciliation strategy per entity type and emitting the ontology header, game entity, entity triples, and relations.
Download tei_to_rdf.pyRDF/Turtle graph
104 triples across 18 subjects. Contains the ontology header, the gow:reinterprets definition, and all typed entities and relations. Round-trips through rdflib.
RDF graph visualisation
The full 104-triple graph rendered as SVG by rdf-grapher, including every rdf:type declaration and full property URI — a complete, unfiltered picture of the graph.
Source and authority records
The source Wikipedia article is fixed to a permalink so the encoding remains reproducible against a specific revision:
- Wikipedia permalink: God of War (2018 video game), revision 1357494264 (consulted 3 July 2026).
- Wikidata entity for the game: Q18345138.
All fifteen entities in the graph resolve to Wikidata identifiers; the six mythological figures resolve through the coined gow:reinterprets property, everything else through owl:sameAs or skos:exactMatch. See the Knowledge Representation page for the reconciliation breakdown.
Tools used
Every tool below was chosen over at least one plausible alternative; the reasoning is included because the course guidelines ask not just which tools were used but why.
- lxml — Python XML library used in both transformation scripts to parse the TEI file and walk its tree. Chosen over the standard-library
xml.etree.ElementTreebecause it has full XPath support and better namespace handling, both needed to query the TEI namespace cleanly; chosen over XSLT (the more TEI-idiomatic option) to keep the whole pipeline in one language shared with the RDF step. See the Knowledge Organization page for the full comparison. - rdflib — Python RDF library used to build and serialise the Turtle graph. Chosen over hand-writing Turtle strings because it constructs triples from RDF terms and serialises them with a standards-aware library, reducing escaping and syntax errors. RDFLib does not by itself perform semantic or SHACL validation; in this project, the generated Turtle is reparsed and its triple count is compared with the original in-memory graph as a round-trip syntax and completeness check.
- Miro — used for the theoretical model mind map, exported as a PNG and shown on the Knowledge Organization page. Chosen over a structured graph editor like yEd (used elsewhere in this project for the Graffoo diagram, see below) because free-form grouping — the dashed mythological-figures sub-container — is easier to arrange on an infinite whiteboard canvas than in a tool built around fixed node-and-edge graph structures. A live embed was tried first, but Miro's live-embed requires the board's sharing settings to allow public viewing, which isn't guaranteed to hold for every visitor's browser or account — a static export is the more reliable choice for a deliverable meant to be viewed by someone else.
- yEd Graph Editor — used to produce the Graffoo conceptual model diagram. Chosen because Graffoo itself ships an official yEd palette (a predefined stencil of the yellow class boxes, pink individual ellipses, and typed arrow styles used in the notation), so the diagram follows the notation's own reference implementation rather than an approximation built from generic shapes — the same pairing used in the course material this project follows.
- Graffoo — the graphical notation used for the conceptual model, developed at the University of Bologna. Chosen because it is the notation used in the course itself, so the diagram is directly legible against what the course teaches, rather than a general-purpose UML or ER notation that would need translating.
- rdf-grapher — free web service used to render the Turtle graph as SVG for the graph visualisation on the Knowledge Representation page. Chosen over a local library (e.g.
rdflib's own graph-to-image export, which requires Graphviz installed locally) because it needs no local setup: the Turtle file can be pasted directly and the SVG downloaded, which keeps the diagram-generation step reproducible by anyone who opens this page without needing the Python environment. - VS Code with the Red Hat XML extension — used for TEI editing with live schema validation. Chosen over editing TEI as plain text because the extension catches namespace and well-formedness errors (like the two documented on the Knowledge Organization page) as they are typed, rather than only at transformation time.
Vocabularies
The following external vocabularies are used in the graph. Prefixes as bound in the Turtle file.
| Prefix | Namespace | Purpose |
|---|---|---|
schema: | schema.org | VideoGame, Product, director, musicBy, gamePlatform, character, children |
dcterms: | DCMI Terms | title, date, publisher, subject, relation |
foaf: | FOAF | Person, Organization, name |
skos: | SKOS | Concept, prefLabel, exactMatch |
dbo: | DBpedia Ontology | FictionalCharacter, developer |
owl: | OWL | Ontology, ObjectProperty, sameAs |
wd: | Wikidata Entities | Reconciliation targets |
viaf: | VIAF | Reconciliation targets for real people and organisations |
gow: | project namespace | Coined terms and local entity URIs; hash identifiers resolve to the Entity Explorer for a human-readable representation |
Credits
The source article and its content are drawn from Wikipedia contributors and are used here under Wikipedia's licensing terms (CC BY-SA 4.0). Except where otherwise stated, third-party images remain the property of their respective authors and rights holders and are used here for educational, non-commercial purposes. Wikidata identifiers are used under CC0. The project's own artefacts — the TEI encoding, the two Python scripts, the Turtle file, and the site itself — are released under the same CC BY-SA 4.0 licence for consistency with the source.
Animated media
The animated excerpts used in the homepage and Entity Explorer are stored locally to avoid hotlinking and are loaded only when needed. They remain the property of their respective rights holders; the following links record the platforms from which the supplied copies were retrieved:
- Homepage cover: Tumblr.
- Kratos and Atreus: Giphy.
- Atreus: Tumblr.
- Freyja: Tenor.
- Baldur: Tenor.
- Jörmungandr: Pinterest.
- Odin: Tenor (visual reference from God of War Ragnarök, 2022).
- Thor: Tenor (visual reference from God of War Ragnarök, 2022).
The coined gow:reinterprets property is the only original ontology contribution and is defined in the graph's ontology header with its rdfs:label, rdfs:comment, and placement as a subproperty of dcterms:relation. Anyone wanting to reuse it in another project is free to do so under the same licence.