CONTRO is an ontology for extracting dialectical perspectives from argumentative discourse. It was developed as the final project for the Knowledge Representation and Knowledge Extraction course (2023–2024) at the University of Bologna, part of the Master’s in Digital Humanities and Digital Knowledge.
CONTRO models how opinions emerge through opposition, reconstructing arguments from minimal annotations of premises and conclusions. Its goal is to bridge structured argumentation and perspective modeling, enabling OWL reasoners to infer conflicting viewpoints from discursive evidence.
CONTRO combines two paradigms:
- The ASPIC+ framework, to model the internal structure of arguments and their interactions.
- The perspectivisation ontology design pattern, to reframe argumentation as a conceptualiser’s construal of a situation.
It builds on the Descriptions and Situations (DnS) module of DOLCE, treating ontology classes not as definitions of what an instance is, but of what it can be described as. This ensures principled conceptual commitments that support domain-agnostic modeling.
To develop and test the ontology, we annotated a major Renaissance controversy between Annibal Caro and Lodovico Castelvetro over Petrarchism. TEI markup and manual extraction of arguments from their treatises helped expose both the potential and limitations of the model.
This site is built with Material for MkDocs and treats ontologies as source code: extraction, reasoning, serialization, and documentation are integrated into a reproducible build process.
The pipeline includes:
-
TEI to Markdown
tei-to-markdown.pyconverts TEI files via custom XSLT stylesheets, generating Markdown with embedded argument outlines for interactive reading. -
TEI to RDF
tei-to-turtle.pyextracts argument instances into data.ttl, aligning them with the ontology. -
Ontology Export and Reasoning
OntExport.ktserializes the TBox in TTL, RDF/XML, and JSON-LD formats, and runs HermiT over the ABoxes (example.ttl,data.ttl) to output inferred ontologies. It is compiled as a standalone JAR with no Java runtime dependencies. -
Ontology Documentation
Theontdocmodule maps ontology elements to Python objects and handles their representation: it resolves punning, links terms across submodules, and additionally documents the extension of imported classes and properties. A Jinja2 template then generates Markdown descriptions for each submodule.
All ontology terms are dereferenceable through a custom .htaccess setup registered with w3id.org, ensuring long-term stable URIs.