# Ontology IS Code — Tony Seale LinkedIn Post Knowledge Graph

> **"Your ontology is source code for your meaning."** — Tony Seale

Associated RDF: [tony-seale-ontology-is-code-claude_sonnet4.ttl](../rdf/tony-seale-ontology-is-code-claude_sonnet4.ttl)  
Source HTML: [tony-seale-ontology-is-code-claude_sonnet4.html](tony-seale-ontology-is-code-claude_sonnet4.html)  
Source Post: [LinkedIn · Tony Seale · 2026](https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/)  
Named Graph: `https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl`  
Generated: 2026-05-22 | Model: [Claude Sonnet 4.6](https://www.anthropic.com/claude) · [Cowork Desktop](https://claude.ai/download)  
Skills: [kg-generator](https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator), [rdf-infographic-skill](https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill)

---

## Overview

[Tony Seale](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Ftonyseale%2F%23this) argues that an ontology is not a database artefact — it is **logic**. Formal, expressive, a graph of interrelated concepts built on rigorous axioms. An ontology must compile, live in plain text with full version-control tooling, and be governed with branches, pull requests, reviews, and automated checks.

Three custom classes structure this knowledge graph: [OntologyPrinciple](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23OntologyPrinciple), [CommentatorInsight](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23CommentatorInsight), and [EngineeringParallel](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23EngineeringParallel). The KG encodes 3 core principles, 6 commentator insights, 3 engineering parallels, 12 FAQ pairs, 10 glossary terms, and a 7-step how-to guide.

---

## Three Core Principles

### 1. [Ontologies Should Compile](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23compilePrinciple)

An ontology must not merely parse — it must compile. Syntax must be valid, all classes satisfiable, and all entailments exactly as expected. An absent entailment is a test failure. If the model asserts two contradictory facts, the build must break. Shipping an ontology that contradicts itself is equivalent to shipping application code that crashes on import.

→ Engineering parallel: [Build System Parallel](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23buildSystemParallel) — SPARQL/OWL DL reasoner as compiler; failed satisfiability checks as build errors; missing entailments as failing unit tests.

### 2. [Ontologies Should Live in Plain Text](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23plainTextPrinciple)

Ontology source should be plain text files — not database rows. Files give you diffs, branches, blame, pull requests, and review in context. This is especially critical now that LLMs are in the loop: you want the LLM to read, navigate, and edit the ontology source directly, exactly as it works with a codebase, not only through an API or MCP server.

→ Engineering parallel: [Version Control Parallel](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23versionControlParallel) — Git for ontology files: diff, branch, blame, pull request — plus direct LLM file access.

### 3. [Ontologies Should Be Governed Like Code](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23governancePrinciple)

Branches, pull requests, reviews, automated checks, releases, and builds — none of this needs inventing. Engineering organisations already do all of it. The artefact that decides what the organisation means by a customer, an order, a risk, or a product should not be governed less rigorously than the CSS on the marketing site.

→ Engineering parallel: [DevOps Parallel](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23devOpsParallel) — CI/CD pipelines with automated ontology validation, branching strategies, review gates, and semantic versioning.

---

## Engineering Parallels

| Ontology Practice | SE Parallel | Tooling |
|---|---|---|
| [Compile Principle](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23compilePrinciple) | [Build System](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23buildSystemParallel) | HermiT/ELK reasoner; failed satisfiability = build error |
| [Plain Text Principle](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23plainTextPrinciple) | [Version Control](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23versionControlParallel) | Git diff, branch, blame, PR; LLMs read/edit directly |
| [Governance Principle](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23governancePrinciple) | [DevOps / CI-CD](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23devOpsParallel) | GitHub Actions with reasoner validation + semantic versioning |

---

## Commentator Insights

Six practitioners from the knowledge graph and semantic web community responded to the post.

---

### 🌟 [Kingsley Uyi Idehen](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fkidehen%2F%23this) · Founder & CEO, [OpenLink Software](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23openLinkSoftware)

**[LLMs and RDF Files as a Natural Ecosystem](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23kingsleyInsight)**

LLMs and the Semantic Web stack gel naturally. You can ask an AI Agent to express conceptualisations in any RDF notation and save to a file; with the right platform, files copied to a folder transparently update a backend quad store. LLM-powered Agents with appropriate Skills make this a "zillion times easier."

OpenLink Software's Virtuoso platform demonstrates this with its DAV folder at `https://linkeddata.uriburner.com/DAV/demos/daas/` — RDF files dropped into this folder automatically become queryable named graphs in the backend triple store, without any explicit load command.

---

### [Juan Sequeda](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fjuansequeda%2F%23this) · Principal Data Strategist, [ServiceNow](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23serviceNow)

**[Caution About New Ontology Tool Vendors](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23juanInsight)**

Everyone should be very careful with new tools and vendors that are reframing themselves as ontology tools. Vendor claims should be scrutinised against the compile-branch-govern standard Tony describes.

---

### [Nicolas Matentzoglu](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23nicolasMatentzoglu) · Independent Consultant, Semantic Technology

**[Highly Regular Ontologies May Tolerate Table-Driven Curation](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23nicolasInsight)**

For large (>10K entity) highly regular ontologies such as anatomy or chemistry, it is sometimes acceptable to curate in a table and map each instance to a design pattern — provided the mapping generates compilable Turtle and the result is governed as code.

---

### [Robert Sanderson](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23robertSanderson) · Senior Director Digital Cultural Heritage, [Yale University](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23yaleUniversity)

**[Vocabulary vs Ontology Distinction Matters](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23robertSandersonInsight)**

Raises whether vocabularies and taxonomies should also be treated as code, noting that large regular knowledge bases may be closer to vocabularies than full ontologies and asking whether the same code-governance argument applies.

---

### [Veronika Heimsbakk](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23veronikaHeimsbakk) · Knowledge Graph Specialist, Author, Speaker

**[Four Lines of Python to Migrate from Table to Turtle](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23veronikaInsight)**

Demonstrates that migrating an ontology from an EAV table to RDF Turtle can require as few as four lines of Python, and shares the [RDF Vendor Landscape](https://veleda.github.io/rdf-vendor-landscape/) resource for tooling overview.

---

### [Gaurav Malhotra](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23gauravMalhotra) · Founder, [HyperGraphMind](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23hyperGraphMind)

**[Ontology as Typed Python Objects — Executable Ubiquitous Language](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23gauravInsight)**

Proposes projecting ontology as typed Python objects using `@kgbo` decorators so engineers interact with familiar programming models. Ontology remains governed logic; developer experience feels like engineering with types, diffs, and PRs.

---

## SPARQL Query Examples

Endpoint: `https://linkeddata.uriburner.com/sparql`  
Named graph: `https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl`

---

### [Q1 · Ontology Principles and Descriptions](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23sparqlQuery1)

[▶ Run live query](https://linkeddata.uriburner.com/sparql?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3E%0APREFIX%20%3A%20%3Chttps%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23%3E%0A%0ASELECT%20%3Fprinciple%20%3Fname%20%3Fdescription%0AFROM%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ftony-seale-ontology-is-code-claude_sonnet4.ttl%3E%0AWHERE%20%7B%0A%20%20%3Fprinciple%20a%20%3AOntologyPrinciple%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20schema%3Aname%20%3Fname%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20schema%3Adescription%20%3Fdescription%20.%0A%7D%0AORDER%20BY%20%3Fname&format=text%2Fx-html%2Btr)

```sparql
PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/#>

SELECT ?principle ?name ?description
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl>
WHERE {
  ?principle a :OntologyPrinciple ;
             schema:name ?name ;
             schema:description ?description .
}
ORDER BY ?name
```

---

### [Q2 · Persons and Organizational Affiliations](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23sparqlQuery2)

[▶ Run live query](https://linkeddata.uriburner.com/sparql?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3E%0A%0ASELECT%20%3Fperson%20%3Fname%20%3Ftitle%20%3Forg%0AFROM%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ftony-seale-ontology-is-code-claude_sonnet4.ttl%3E%0AWHERE%20%7B%0A%20%20%3Fperson%20a%20schema%3APerson%20%3B%0A%20%20%20%20%20%20%20%20%20%20schema%3Aname%20%3Fname%20.%0A%20%20OPTIONAL%20%7B%20%3Fperson%20schema%3AjobTitle%20%3Ftitle%20.%20%7D%0A%20%20OPTIONAL%20%7B%20%3Fperson%20schema%3AworksFor%20%3ForgNode%20.%20%3ForgNode%20schema%3Aname%20%3Forg%20.%20%7D%0A%7D%0AORDER%20BY%20%3Fname&format=text%2Fx-html%2Btr)

```sparql
PREFIX schema: <http://schema.org/>

SELECT ?person ?name ?title ?org
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl>
WHERE {
  ?person a schema:Person ;
          schema:name ?name .
  OPTIONAL { ?person schema:jobTitle ?title . }
  OPTIONAL { ?person schema:worksFor ?orgNode . ?orgNode schema:name ?org . }
}
ORDER BY ?name
```

---

### [Q3 · Commentator Insights](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23sparqlQuery3)

[▶ Run live query](https://linkeddata.uriburner.com/sparql?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3E%0APREFIX%20%3A%20%3Chttps%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23%3E%0A%0ASELECT%20%3Finsight%20%3Fname%20%3FauthorName%0AFROM%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ftony-seale-ontology-is-code-claude_sonnet4.ttl%3E%0AWHERE%20%7B%0A%20%20%3Finsight%20a%20%3ACommentatorInsight%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20schema%3Aname%20%3Fname%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20schema%3Aauthor%20%3Fauthor%20.%0A%20%20%3Fauthor%20schema%3Aname%20%3FauthorName%20.%0A%7D%0AORDER%20BY%20%3FauthorName&format=text%2Fx-html%2Btr)

```sparql
PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/#>

SELECT ?insight ?name ?authorName
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl>
WHERE {
  ?insight a :CommentatorInsight ;
           schema:name ?name ;
           schema:author ?author .
  ?author schema:name ?authorName .
}
ORDER BY ?authorName
```

---

### [Q4 · Engineering Parallels](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23sparqlQuery4)

[▶ Run live query](https://linkeddata.uriburner.com/sparql?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3E%0APREFIX%20%3A%20%3Chttps%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23%3E%0A%0ASELECT%20%3Fparallel%20%3Fname%20%3Fdescription%0AFROM%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Ftony-seale-ontology-is-code-claude_sonnet4.ttl%3E%0AWHERE%20%7B%0A%20%20%3Fparallel%20a%20%3AEngineeringParallel%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20schema%3Aname%20%3Fname%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20schema%3Adescription%20%3Fdescription%20.%0A%7D%0AORDER%20BY%20%3Fname&format=text%2Fx-html%2Btr)

```sparql
PREFIX schema: <http://schema.org/>
PREFIX : <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/#>

SELECT ?parallel ?name ?description
FROM <https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl>
WHERE {
  ?parallel a :EngineeringParallel ;
            schema:name ?name ;
            schema:description ?description .
}
ORDER BY ?name
```

---

## FAQ

**[Q1: What does 'Ontology IS Code' mean?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q1)**

[A1:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a1) An ontology should be treated as a first-class software engineering artefact: written in plain text, compiled to check correctness, version-controlled with Git, governed through pull requests and automated checks, and released with semantic versioning — not stored as rows in a custom database table.

**[Q2: Why do software engineers instinctively put ontologies in databases?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q2)**

[A2:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a2) Because software engineers have spent careers modelling customers, orders, and events as database rows. When an organisation asks for an ontology, the database is the familiar tool. The instinct is understandable but wrong: an ontology is logic, not data.

**[Q3: What does it mean for an ontology to compile?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q3)**

[A3:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a3) Running a reasoner that verifies: all syntax is valid, all classes are satisfiable, and all expected entailments hold. An absent entailment is a test failure. Two contradictory axioms should break the build.

**[Q4: Why should an ontology live in plain text files?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q4)**

[A4:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a4) Plain text gives you diffs, branches, line-level blame, pull requests, and review in context. Especially important now that LLMs are in the loop: you want the LLM to read, navigate, and edit ontology source directly.

**[Q5: How should ontologies be governed?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q5)**

[A5:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a5) With branches, pull requests, code review, automated CI checks (syntax validation, reasoner runs, regression tests), and formal releases. Engineering organisations already do all of this for application code.

**[Q6: What role should LLMs play in ontology development?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q6)**

[A6:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a6) LLMs should have direct access to ontology source files — to read, navigate, and edit them — not only indirect access through APIs. Plain-text RDF (Turtle, OWL/Manchester) is human-readable shorthand that LLMs handle well.

**[Q7: How is an absent entailment like a test failure?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q7)**

[A7:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a7) If you state axioms and expect the reasoner to derive a conclusion, and it does not, that gap reveals a logic error — a missing axiom, wrong domain/range, or incorrect subclass chain. Equivalent to a failing unit test discovered by a customer.

**[Q8: What is the difference between an ontology and a database schema?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q8)**

[A8:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a8) A database schema defines storage structure and constraints for rows. An ontology declares what kinds of things exist, how they relate, and what cannot both be true — it is formal logic that admits automated reasoning.

**[Q9: Can large highly regular ontologies still use table-driven curation?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q9)**

[A9:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a9) For ontologies with >10K highly regular entities (anatomy, biological traits, chemistry), curation in a table mapped to a design pattern is sometimes acceptable — provided the mapping generates compilable Turtle and the result is governed as code.

**[Q10: What is the 'CSS on your marketing site' analogy?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q10)**

[A10:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a10) The artefact deciding what an organisation means by a customer, order, or risk should not be governed less rigorously than the styling on the company website. CSS has branches, PRs, and CI; the core ontology often does not.

**[Q11: What RDF serialisation is best for treating ontologies as code?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q11)**

[A11:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a11) RDF Turtle is most recommended: human-readable, diff-friendly, and compatible with standard SDLC tools. OWL/Manchester Syntax is an alternative for heavily axiom-rich models.

**[Q12: What does 'your ontology is source code for your meaning' imply?](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23q12)**

[A12:](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23a12) The ontology is the primary authoritative specification of what concepts mean in an organisation — not documentation, not a data dictionary, but executable, versioned, tested code that drives downstream systems.

---

## Glossary

| Term | Definition |
|---|---|
| [Ontology](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termOntology) | Formal specification of domain concepts, relationships, and constraints — expressed as axioms amenable to automated reasoning. |
| [Axiom](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termAxiom) | A formal logical statement asserting a fact or constraint, e.g. every Person has exactly one birthdate. |
| [Entailment](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termEntailment) | A conclusion that logically follows from axioms. An absent expected entailment is a test failure. |
| [Satisfiability](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termSatisfiability) | A class is satisfiable if it could have at least one instance. Unsatisfiable classes indicate contradictory axioms — should break the build. |
| [Version Control](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termVersionControl) | A system (typically Git) for tracking changes: branches, diffs, blame, and pull requests. |
| [OWL](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termOWL) | W3C standard language for authoring ontologies, built on Description Logic. Supports rich axiom expressivity and decidable automated reasoning. |
| [RDF Turtle](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termRDFTurtle) | Compact, human-readable plain-text serialisation of RDF. Diff-friendly, LLM-compatible, SDLC-ready. |
| [Reasoner](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termReasoner) | Software (HermiT, Pellet, ELK) that applies Description Logic rules to derive facts and check satisfiability. The "compiler" in ontology-as-code pipelines. |
| [Pull Request](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termPullRequest) | Git mechanism for proposing, reviewing, discussing, and merging changes — bringing peer review to ontology development exactly as for application code. |
| [Formal Logic](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23termFormalLogic) | A precise system for deriving valid conclusions from stated premises. OWL ontologies are grounded in Description Logic, a decidable fragment of first-order logic. |

---

## [How to Treat Your Ontology as Source Code](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23howtoSection)

### [Step 1 · Choose a Plain-Text RDF Notation](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step1)

Select RDF Turtle (.ttl) or OWL/Manchester Syntax as your canonical format. Both are human-readable, diff-friendly, and well-supported by LLMs. Avoid formats that require round-tripping through a GUI tool before edits can be committed.

### [Step 2 · Initialise a Git Repository for the Ontology](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step2)

Create a dedicated Git repository containing only ontology source files. Commit the initial TTL, add a .gitignore for reasoner cache artefacts, and push to a shared remote.

### [Step 3 · Add a CI Pipeline with Reasoner Validation](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step3)

Configure a CI workflow that runs on every commit: validate Turtle syntax (rapper or rdflib), run a reasoner (HermiT or ELK) to check satisfiability, and assert that all expected entailments are present. Fail the build on any violation.

### [Step 4 · Define a Branching Strategy](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step4)

Adopt a branching convention: main for released versions, feature branches for new terms or axioms. Protect main with required CI passes and at least one reviewer approval before merge.

### [Step 5 · Establish a Pull Request and Review Process](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step5)

Require pull requests for all changes. Reviewers check logical correctness, naming conventions, documentation completeness, and test coverage. Use PR templates to prompt authors for motivation, examples, and downstream impact.

### [Step 6 · Integrate LLM Tooling for Assisted Authoring](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step6)

Give your LLM (Claude, GPT, Gemini) direct read/write access to ontology source files — not just an API or MCP wrapper. The LLM can propose new terms, spot duplicate concepts, generate documentation, and draft axioms within the same file-edit workflow used for application code.

### [Step 7 · Define a Release and Semantic Versioning Policy](https://linkeddata.uriburner.com/describe/?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Ftonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54%2F%23step7)

Tag releases using semantic versioning (MAJOR.MINOR.PATCH). A MAJOR bump signals a breaking change (removed terms, incompatible axioms). MINOR adds terms backwards-compatibly. PATCH fixes documentation or non-breaking axiom corrections. Publish a CHANGELOG with each release.

---

## Sources & Provenance

- **Source post:** [Tony Seale — "Ontology IS Code" (LinkedIn, 2026)](https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/)
- **RDF/Turtle KG:** [tony-seale-ontology-is-code-claude_sonnet4.ttl](../rdf/tony-seale-ontology-is-code-claude_sonnet4.ttl)
- **HTML infographic:** [tony-seale-ontology-is-code-claude_sonnet4.html](tony-seale-ontology-is-code-claude_sonnet4.html)
- **Named graph:** `https://linkeddata.uriburner.com/DAV/demos/daas/tony-seale-ontology-is-code-claude_sonnet4.ttl`
- **SPARQL endpoint:** [linkeddata.uriburner.com/sparql](https://linkeddata.uriburner.com/sparql)
- **Resolver:** [URIBurner describe links](https://linkeddata.uriburner.com/fct) via `https://linkeddata.uriburner.com/describe/?url={uri}`
- **Generation:** [Claude Sonnet 4.6](https://www.anthropic.com/claude) · [Cowork Desktop](https://claude.ai/download) · 2026-05-22
- **Skills:** [kg-generator](https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator), [rdf-infographic-skill](https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill)
- **Linked Data platform:** [URIBurner](https://linkeddata.uriburner.com/) — Virtuoso-backed Linked Data resolver/server platform by [OpenLink Software](https://www.openlinksw.com/)
