@prefix : <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema1: <http://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator#this> a schema1:SoftwareApplication ;
    rdfs:label "kg-generator"@en ;
    schema1:description "Skill used for RDF generation."@en ;
    schema1:name "kg-generator"@en .

<https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill#this> a schema1:SoftwareApplication ;
    rdfs:label "rdf-infographic-skill"@en ;
    schema1:description "Skill used for RDF-backed HTML and Markdown generation."@en ;
    schema1:name "rdf-infographic-skill"@en .

<https://github.com/openai/openai-codex#browser-use> a schema1:SoftwareApplication ;
    rdfs:label "Browser Use"@en ;
    schema1:description "Browser automation used to capture visible LinkedIn post content."@en ;
    schema1:name "Browser Use"@en .

<https://linkeddata.uriburner.com/fct#this> a schema1:WebAPI ;
    rdfs:label "URIBurner resolver"@en ;
    schema1:description "Resolver and SPARQL endpoint used for entity description and live queries."@en ;
    schema1:name "URIBurner resolver"@en .

<https://openai.com/#gpt5-chat> a schema1:SoftwareApplication ;
    rdfs:label "gpt5-chat"@en ;
    schema1:description "LLM interface used to generate this collection."@en ;
    schema1:name "gpt5-chat"@en .

<https://openai.com/codex/#desktop> a schema1:SoftwareApplication ;
    rdfs:label "Codex desktop"@en ;
    schema1:description "Local development environment used for generation and validation."@en ;
    schema1:name "Codex desktop"@en .

<https://virtuoso.openlinksw.com/#this> a schema1:SoftwareApplication ;
    rdfs:label "OpenLink Virtuoso"@en ;
    schema1:description "RDF database and Linked Data server behind URIBurner."@en ;
    schema1:name "OpenLink Virtuoso"@en .

:analysis a schema1:TechArticle ;
    rdfs:label "Ontology Is Source Code Knowledge Graph Collection"@en ;
    schema1:about :sourcePost,
        :term-compileGate,
        :term-ontology,
        :term-ontologyAsCode,
        :term-plainTextSource,
        :term-sourceCodeForMeaning ;
    schema1:description "Generated RDF, HTML, and Markdown collection for Tony Seale's LinkedIn post about treating ontologies as governed source code."@en ;
    schema1:hasPart :commentThread,
        :query-comment-perspectives,
        :query-compile-gates,
        :query-construct-workflow,
        :query-core-practices ;
    schema1:mainEntity :q1,
        :q2,
        :q3,
        :q4,
        :q5 ;
    schema1:mentions :governedLikeCode,
        :ontologyAsCode ;
    schema1:name "Ontology Is Source Code Knowledge Graph Collection"@en ;
    schema1:step :step1,
        :step2,
        :step3,
        :step4,
        :step5 .

:sourceCodeForMeaning a schema1:DefinedTerm ;
    rdfs:label "Source code for meaning"@en ;
    schema1:description "A phrase for the role of an ontology in defining what an organization means by customer, order, risk, product, and other core terms."@en ;
    schema1:name "Source code for meaning"@en ;
    :dependsOn :ontologyAsCode .

<http://dbpedia.org/resource/LinkedIn> a schema1:SoftwareApplication ;
    rdfs:label "LinkedIn"@en ;
    schema1:description "Publishing platform and source location for the social post."@en ;
    schema1:name "LinkedIn"@en .

<https://modelcontextprotocol.io/#this> a schema1:SoftwareApplication ;
    rdfs:label "MCP server"@en ;
    schema1:description "An API-based access path for tools and LLMs that should complement, not replace, direct source access."@en ;
    schema1:name "MCP server"@en .

<https://www.linkedin.com/in/bvanderraadt/#this> a schema1:Person ;
    rdfs:label "Bas van der Raadt"@en ;
    schema1:description "Enterprise ontologist and CTO; commenter noting that ontology-driven systems involve more than RDF syntax."@en ;
    schema1:name "Bas van der Raadt"@en .

<https://www.linkedin.com/in/gauranshtandon/#this> a schema1:Person ;
    rdfs:label "Gauransh Dhruv Tandon"@en ;
    schema1:description "Builder and machine learning engineer; commenter on axioms needing enough strictness for compile checks to bite."@en ;
    schema1:name "Gauransh Dhruv Tandon"@en .

<https://www.linkedin.com/in/juansequeda/#this> a schema1:Person ;
    rdfs:label "Juan Sequeda"@en ;
    schema1:description "Principal data strategist and researcher; commenter warning about vendors reframing themselves as ontology tools."@en ;
    schema1:name "Juan Sequeda"@en .

<https://www.linkedin.com/in/kidehen/#this> a schema1:Person ;
    rdfs:label "Kingsley Uyi Idehen"@en ;
    schema1:description "Founder and CEO at OpenLink Software; commenter emphasizing ontology work as a files-and-filesystem interaction pattern."@en ;
    schema1:name "Kingsley Uyi Idehen"@en .

<https://www.linkedin.com/in/mazzoniandrea/#this> a schema1:Person ;
    rdfs:label "Andrea Mazzoni"@en ;
    schema1:description "Chief data officer; commenter linking ontology codebase technical debt to AI value realization."@en ;
    schema1:name "Andrea Mazzoni"@en .

<https://www.linkedin.com/in/nmatentzoglu/#this> a schema1:Person ;
    rdfs:label "Nicolas Matentzoglu"@en ;
    schema1:description "Independent consultant in semantic technology and knowledge engineering; commenter on large regular ontologies curated from tables."@en ;
    schema1:name "Nicolas Matentzoglu"@en .

<https://www.linkedin.com/in/robert-sanderson/#this> a schema1:Person ;
    rdfs:label "Robert Sanderson"@en ;
    schema1:description "Digital cultural heritage leader at Yale University; commenter distinguishing vocabulary, taxonomy, and ontology as code."@en ;
    schema1:name "Robert Sanderson"@en .

<https://www.linkedin.com/in/robertdschneider/#this> a schema1:Person ;
    rdfs:label "Robert Schneider"@en ;
    schema1:description "Co-founder at FlexVertex; commenter asking about object persistence and object-relational impedance mismatch."@en ;
    schema1:name "Robert Schneider"@en .

<https://www.linkedin.com/in/stephenredmond/#this> a schema1:Person ;
    rdfs:label "Stephen Redmond"@en ;
    schema1:description "Founder at Straitéis AI; commenter describing Turtle as a coding language aligned with SDLC tools."@en ;
    schema1:name "Stephen Redmond"@en .

<https://www.linkedin.com/in/tech-nirvana/#this> a schema1:Person ;
    rdfs:label "Gaurav Malhotra"@en ;
    schema1:description "Builder of AI systems; commenter on executable ubiquitous language and typed programming models for ontology-backed data."@en ;
    schema1:name "Gaurav Malhotra"@en .

<https://www.linkedin.com/in/tonyseale/#this> a schema1:Person ;
    rdfs:label "Tony Seale"@en ;
    schema1:description "Author of the LinkedIn post and The Knowledge Graph Guy."@en ;
    schema1:name "Tony Seale"@en .

:a1 a schema1:Answer ;
    schema1:text "Because it declares organizational meaning using formal logic, relationships, constraints, and axioms; those artifacts need compilation, review, automated checks, and release discipline."@en .

:a2 a schema1:Answer ;
    schema1:text "It means syntax is valid, classes are satisfiable, expected entailments are present, contradictions fail the build, and duplicate concepts are detected before release."@en .

:a3 a schema1:Answer ;
    schema1:text "Plain text gives ontology engineers and LLM agents access to files, diffs, branches, blame, pull requests, and review context."@en .

:a4 a schema1:Answer ;
    schema1:text "Using the same engineering controls applied to code: branches, pull requests, reviews, automated checks, releases, and builds."@en .

:a5 a schema1:Answer ;
    schema1:text "They increase the value of direct source access because an LLM can read, navigate, and edit ontology files like a codebase, instead of only querying an API."@en .

:comment-andrea-mazzoni a schema1:Comment ;
    rdfs:label "Comment by Andrea Mazzoni"@en ;
    schema1:about :governedLikeCode,
        :ontologyTechnicalDebt ;
    schema1:author <https://www.linkedin.com/in/mazzoniandrea/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Andrea Mazzoni"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 8 ;
    schema1:text "The technical debt of the ontology codebase and associated DevOps measures the gap between current state and the value a company can derive from AI."@en .

:comment-bas-van-der-raadt a schema1:Comment ;
    rdfs:label "Comment by Bas van der Raadt"@en ;
    schema1:about :ontologyAsCode,
        :ontologyDrivenSystem,
        :rdfNotationTradeoffs ;
    schema1:author <https://www.linkedin.com/in/bvanderraadt/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "2h"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Bas van der Raadt"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 10 ;
    schema1:text "Ontology as code involves more than producing and processing RDF syntax; an ontology-driven system has more involved and snapshot-based approaches are only part of the story."@en .

:comment-gauransh-tandon a schema1:Comment ;
    rdfs:label "Comment by Gauransh Dhruv Tandon"@en ;
    schema1:about :axiomsWithTeeth,
        :compileGate,
        :vocabularyTaxonomyBoundary ;
    schema1:author <https://www.linkedin.com/in/gauranshtandon/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "3h"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Gauransh Dhruv Tandon"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 9 ;
    schema1:text "The compile step only bites if axioms have teeth; many enterprise ontologies are descriptive vocabularies in OWL clothing without constraints strict enough for a reasoner to disprove."@en .

:comment-gaurav-malhotra a schema1:Comment ;
    rdfs:label "Comment by Gaurav Malhotra"@en ;
    schema1:about :compileGate,
        :executableUbiquitousLanguage,
        :governedLikeCode,
        :plainTextSource ;
    schema1:author <https://www.linkedin.com/in/tech-nirvana/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "2h"@en ;
    schema1:interactionStatistic 1 ;
    schema1:name "Comment by Gaurav Malhotra"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 7 ;
    schema1:text "Ontology should not hide in an EAV table. It should compile, diff, branch, and fail CI when meaning breaks. The real test is executable ubiquitous language rather than a semantic artifact only specialists maintain."@en .

:comment-juan-sequeda a schema1:Comment ;
    rdfs:label "Comment by Juan Sequeda"@en ;
    schema1:about :ontology,
        :vendorReframingRisk ;
    schema1:author <https://www.linkedin.com/in/juansequeda/#this> ;
    schema1:commentCount 1 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 13 ;
    schema1:name "Comment by Juan Sequeda"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 4 ;
    schema1:text "This is why everyone should be careful with new tools and vendors that are now reframing themselves as ontology tools."@en .

:comment-kingsley-idehen a schema1:Comment ;
    rdfs:label "Comment by Kingsley Uyi Idehen"@en ;
    schema1:about :filesAndFilesystemPattern,
        :llmPoweredAgents,
        :quadStoreFolderBinding,
        :rdfNotationTradeoffs ;
    schema1:author <https://www.linkedin.com/in/kidehen/#this> ;
    schema1:commentCount 8 ;
    schema1:dateCreated "11m"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Kingsley Uyi Idehen"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 1 ;
    schema1:text "Yes! The creation and management of ontologies, and even instance data, is a classic files-and-filesystem interaction pattern. Before LLMs this was difficult because RDF notations had tradeoffs: Turtle was human-readable but lacked tooling support, JSON-LD had more tooling support but was less readable, and RDF/XML was challenged on both fronts. Today, the Semantic Web stack gels naturally with LLMs and AI Agents. An agent can express a conceptualization in the notation you prefer and save it to a file; on suitable platforms those files can be copied to a folder transparently bound to a backend RDF DBMS for updating the triple or quad store."@en .

:comment-nicolas-matentzoglu a schema1:Comment ;
    rdfs:label "Comment by Nicolas Matentzoglu"@en ;
    schema1:about :ontology,
        :tableDrivenOntologyPattern ;
    schema1:author <https://www.linkedin.com/in/nmatentzoglu/#this> ;
    schema1:commentCount 1 ;
    schema1:dateCreated "2h"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Nicolas Matentzoglu"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 2 ;
    schema1:text "For huge, highly regular ontologies such as anatomy, biological traits, or chemistry, one can sometimes curate the ontology in a table and map every instance or class to a design pattern that provides the logical modelling."@en .

:comment-robert-sanderson a schema1:Comment ;
    rdfs:label "Comment by Robert Sanderson"@en ;
    schema1:about :ontologyAsCode,
        :vocabularyTaxonomyBoundary ;
    schema1:author <https://www.linkedin.com/in/robert-sanderson/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "14m"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Robert Sanderson"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 3 ;
    schema1:text "That sounds like it should be a vocabulary or taxonomy rather than an ontology, raising the question of whether vocabularies should be treated as code as well."@en .

:comment-robert-schneider a schema1:Comment ;
    rdfs:label "Comment by Robert Schneider"@en ;
    schema1:about :databaseTableAntiPattern,
        :objectRelationalImpedance ;
    schema1:author <https://www.linkedin.com/in/robertdschneider/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 1 ;
    schema1:name "Comment by Robert Schneider"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 6 ;
    schema1:text "A question about developers trying to eliminate object-relational impedance mismatch by persisting data as objects instead of rows in tables or documents."@en .

:comment-stephen-redmond a schema1:Comment ;
    rdfs:label "Comment by Stephen Redmond"@en ;
    schema1:about :plainTextSource,
        :turtleAsCodingLanguage ;
    schema1:author <https://www.linkedin.com/in/stephenredmond/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 0 ;
    schema1:name "Comment by Stephen Redmond"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 12 ;
    schema1:text "Turtle is the coding language of choice because it plays nicely with SDLC tools."@en .

:comment-veronika-heimsbakk-table a schema1:Comment ;
    rdfs:label "Comment by Veronika Heimsbakk"@en ;
    schema1:about :plainTextSource,
        :tableDrivenOntologyPattern ;
    schema1:author <https://www.linkedin.com/in/vheimsbakk/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 11 ;
    schema1:name "Comment by Veronika Heimsbakk"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 11 ;
    schema1:text "If an ontology is in tables, it can be moved into code and iterated from there."@en .

:comment-veronika-heimsbakk-vendors a schema1:Comment ;
    rdfs:label "Comment by Veronika Heimsbakk"@en ;
    schema1:about :ontologyAsCode,
        :rdfNativeTooling ;
    schema1:author <https://www.linkedin.com/in/vheimsbakk/#this> ;
    schema1:commentCount 0 ;
    schema1:dateCreated "4h"@en ;
    schema1:interactionStatistic 3 ;
    schema1:name "Comment by Veronika Heimsbakk"@en ;
    schema1:parentItem :sourcePost ;
    schema1:position 5 ;
    schema1:text "An overview of RDF-native tooling and what major vendors support is relevant to the ontology-as-code discussion."@en .

:expectedEntailments a schema1:DefinedTerm ;
    rdfs:label "Expected entailments"@en ;
    schema1:description "Inferences that the ontology should produce and that can be tested like build expectations."@en ;
    schema1:name "Expected entailments"@en .

:q1 a schema1:Question ;
    schema1:acceptedAnswer :a1 ;
    schema1:name "Why should an ontology be treated as code?"@en .

:q2 a schema1:Question ;
    schema1:acceptedAnswer :a2 ;
    schema1:name "What does it mean for an ontology to compile?"@en .

:q3 a schema1:Question ;
    schema1:acceptedAnswer :a3 ;
    schema1:name "Why is plain text important for ontology work?"@en .

:q4 a schema1:Question ;
    schema1:acceptedAnswer :a4 ;
    schema1:name "How should an ontology be governed?"@en .

:q5 a schema1:Question ;
    schema1:acceptedAnswer :a5 ;
    schema1:name "How do LLMs change ontology engineering?"@en .

:query-comment-perspectives a schema1:SoftwareSourceCode ;
    schema1:codeRepository <https://linkeddata.uriburner.com/sparql> ;
    schema1:name "Query Comment Perspectives"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:targetProduct <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> ;
    schema1:text """PREFIX schema: <http://schema.org/>
PREFIX ex: <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54#>
SELECT ?comment ?authorName ?topicName ?text
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> {
    ex:commentThread schema:hasPart ?comment .
    ?comment schema:author ?author ;
             schema:text ?text ;
             schema:about ?topic .
    ?author schema:name ?authorName .
    ?topic schema:name ?topicName .
  }
}
ORDER BY ?authorName ?topicName""" .

:query-compile-gates a schema1:SoftwareSourceCode ;
    schema1:codeRepository <https://linkeddata.uriburner.com/sparql> ;
    schema1:name "Query Compile Gates"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:targetProduct <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> ;
    schema1:text """PREFIX schema: <http://schema.org/>
PREFIX ex: <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54#>
SELECT ?check ?name ?description
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> {
    ex:compileGate ex:tests ?check .
    ?check schema:name ?name ;
           schema:description ?description .
  }
}
ORDER BY ?name""" .

:query-construct-workflow a schema1:SoftwareSourceCode ;
    schema1:codeRepository <https://linkeddata.uriburner.com/sparql> ;
    schema1:name "Query Construct Workflow"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:targetProduct <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> ;
    schema1:text """PREFIX ex: <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54#>
PREFIX schema: <http://schema.org/>
CONSTRUCT {
  ex:ontologyAsCode ?p ?o .
  ?o schema:name ?name .
}
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> {
    ex:ontologyAsCode ?p ?o .
    OPTIONAL { ?o schema:name ?name }
  }
}""" .

:query-core-practices a schema1:SoftwareSourceCode ;
    schema1:codeRepository <https://linkeddata.uriburner.com/sparql> ;
    schema1:name "Query Core Practices"@en ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:targetProduct <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> ;
    schema1:text """PREFIX schema: <http://schema.org/>
PREFIX ex: <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54#>
SELECT ?practice ?name ?description
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/ontology-is-source-code-tony-seale-gpt5-chat-1.ttl> {
    ex:ontologyAsCode ex:hasComponent ?practice .
    ?practice schema:name ?name ;
              schema:description ?description .
  }
}
ORDER BY ?name""" .

:satisfiableClasses a schema1:DefinedTerm ;
    rdfs:label "Satisfiable classes"@en ;
    schema1:description "Ontology classes that can have possible instances without logical contradiction."@en ;
    schema1:name "Satisfiable classes"@en .

:step1 a schema1:HowToStep ;
    schema1:name "Move ontology definitions into source files"@en ;
    schema1:position 1 ;
    schema1:text "Use RDF/Turtle, OWL, SHACL, or another text-based ontology source format that supports version control."@en .

:step2 a schema1:HowToStep ;
    schema1:name "Add compile and reasoning checks"@en ;
    schema1:position 2 ;
    schema1:text "Validate syntax, class satisfiability, expected entailments, contradictions, and duplicate concept risks in CI."@en .

:step3 a schema1:HowToStep ;
    schema1:name "Review ontology changes in pull requests"@en ;
    schema1:position 3 ;
    schema1:text "Use branches, diffs, contextual comments, and approval rules for ontology changes."@en .

:step4 a schema1:HowToStep ;
    schema1:name "Publish versioned ontology releases"@en ;
    schema1:position 4 ;
    schema1:text "Package, tag, and document ontology releases so downstream systems and agents know which meaning contract they use."@en .

:step5 a schema1:HowToStep ;
    schema1:name "Expose source and services to LLM agents"@en ;
    schema1:position 5 ;
    schema1:text "Let LLMs navigate source files directly while also providing APIs, MCP tools, SPARQL endpoints, and documentation."@en .

:term-compileGate a schema1:DefinedTerm ;
    schema1:description "Automated validation that catches invalid syntax, unsatisfiable classes, missing entailments, contradictions, and duplicates."@en ;
    schema1:name "Compile gate"@en .

:term-ontology a schema1:DefinedTerm ;
    schema1:description "A formal graph of classes, relationships, constraints, and axioms for a domain."@en ;
    schema1:name "Ontology"@en .

:term-ontologyAsCode a schema1:DefinedTerm ;
    schema1:description "Treating ontology source as logic-bearing code that compiles, has tests, and follows engineering governance."@en ;
    schema1:name "Ontology as code"@en .

:term-plainTextSource a schema1:DefinedTerm ;
    schema1:description "Maintaining ontology definitions in files to enable diffs, branches, pull requests, blame, and source review."@en ;
    schema1:name "Plain-text source"@en .

:term-sourceCodeForMeaning a schema1:DefinedTerm ;
    schema1:description "The role of ontology as the formal source for what organizational concepts mean."@en ;
    schema1:name "Source code for meaning"@en .

<https://www.linkedin.com/in/vheimsbakk/#this> a schema1:Person ;
    rdfs:label "Veronika Heimsbakk"@en ;
    schema1:description "Knowledge graph specialist; commenter pointing to RDF-native tooling and table-to-code workflows."@en ;
    schema1:name "Veronika Heimsbakk"@en .

:automatedOntologyChecks a schema1:DefinedTerm ;
    rdfs:label "Automated ontology checks"@en ;
    schema1:description "Build checks that catch syntax errors, unsatisfiable classes, unexpected entailments, contradictions, and duplicate concepts."@en ;
    schema1:name "Automated ontology checks"@en .

:axiomsWithTeeth a schema1:DefinedTerm ;
    rdfs:label "Axioms with teeth"@en ;
    schema1:description "Strict logical axioms that allow a reasoner or compile step to disprove invalid ontology states."@en ;
    schema1:name "Axioms with teeth"@en .

:commentThread a schema1:CreativeWork ;
    rdfs:label "LinkedIn discussion thread"@en ;
    schema1:about :axiomsWithTeeth,
        :compileGate,
        :databaseTableAntiPattern,
        :executableUbiquitousLanguage,
        :filesAndFilesystemPattern,
        :governedLikeCode,
        :llmPoweredAgents,
        :objectRelationalImpedance,
        :ontology,
        :ontologyAsCode,
        :ontologyDrivenSystem,
        :ontologyTechnicalDebt,
        :plainTextSource,
        :quadStoreFolderBinding,
        :rdfNativeTooling,
        :rdfNotationTradeoffs,
        :tableDrivenOntologyPattern,
        :turtleAsCodingLanguage,
        :vendorReframingRisk,
        :vocabularyTaxonomyBoundary ;
    schema1:description "Visible LinkedIn comments captured from the source post, starting with Kingsley Uyi Idehen's comment."@en ;
    schema1:hasPart :comment-andrea-mazzoni,
        :comment-bas-van-der-raadt,
        :comment-gauransh-tandon,
        :comment-gaurav-malhotra,
        :comment-juan-sequeda,
        :comment-kingsley-idehen,
        :comment-nicolas-matentzoglu,
        :comment-robert-sanderson,
        :comment-robert-schneider,
        :comment-stephen-redmond,
        :comment-veronika-heimsbakk-table,
        :comment-veronika-heimsbakk-vendors ;
    schema1:name "LinkedIn discussion thread"@en .

:executableUbiquitousLanguage a schema1:DefinedTerm ;
    rdfs:label "Executable ubiquitous language"@en ;
    schema1:description "A programming model where ontology concepts become daily engineering objects and methods."@en ;
    schema1:name "Executable ubiquitous language"@en .

:filesAndFilesystemPattern a schema1:DefinedTerm ;
    rdfs:label "Files-and-filesystem pattern"@en ;
    schema1:description "Kingsley Idehen's framing of ontology and instance-data management as a classic source-file workflow."@en ;
    schema1:name "Files-and-filesystem pattern"@en .

:llmPoweredAgents a schema1:DefinedTerm ;
    rdfs:label "LLM-powered agents"@en ;
    schema1:description "AI agents that can generate, edit, and manage ontology files when loosely coupled with appropriate skills."@en ;
    schema1:name "LLM-powered agents"@en .

:llmReadableSource a schema1:DefinedTerm ;
    rdfs:label "LLM-readable source"@en ;
    schema1:description "A design principle where large language models can read, navigate, and edit ontology source directly like a codebase."@en ;
    schema1:name "LLM-readable source"@en ;
    :contrastsWith <https://modelcontextprotocol.io/#this> .

:objectRelationalImpedance a schema1:DefinedTerm ;
    rdfs:label "Object-relational impedance mismatch"@en ;
    schema1:description "Developer concern about persisting objects instead of rows, tables, or documents."@en ;
    schema1:name "Object-relational impedance mismatch"@en .

:ontologyDrivenSystem a schema1:DefinedTerm ;
    rdfs:label "Ontology-driven system"@en ;
    schema1:description "A system whose semantics and behavior are driven by ontology artifacts beyond just RDF syntax snapshots."@en ;
    schema1:name "Ontology-driven system"@en .

:ontologyTechnicalDebt a schema1:DefinedTerm ;
    rdfs:label "Ontology technical debt"@en ;
    schema1:description "The gap between an ontology codebase's current engineering quality and the value the organization can derive from AI."@en ;
    schema1:name "Ontology technical debt"@en .

:pullRequestReview a schema1:DefinedTerm ;
    rdfs:label "Pull request review"@en ;
    schema1:description "Review workflow for ontology changes in context."@en ;
    schema1:name "Pull request review"@en .

:quadStoreFolderBinding a schema1:DefinedTerm ;
    rdfs:label "Folder-to-quad-store binding"@en ;
    schema1:description "A platform pattern where files copied to a folder update a backend RDF DBMS triple or quad store."@en ;
    schema1:name "Folder-to-quad-store binding"@en .

:rdfNativeTooling a schema1:DefinedTerm ;
    rdfs:label "RDF-native tooling"@en ;
    schema1:description "Tools and vendor capabilities for RDF-native authoring, storage, reasoning, and publishing."@en ;
    schema1:name "RDF-native tooling"@en .

:turtleAsCodingLanguage a schema1:DefinedTerm ;
    rdfs:label "Turtle as coding language"@en ;
    schema1:description "The view that RDF Turtle fits SDLC-oriented ontology engineering because it works well with code tools."@en ;
    schema1:name "Turtle as coding language"@en .

:vendorReframingRisk a schema1:DefinedTerm ;
    rdfs:label "Ontology-tool vendor reframing risk"@en ;
    schema1:description "Risk that new tools or vendors reposition themselves as ontology tooling without adequate semantic rigor."@en ;
    schema1:name "Ontology-tool vendor reframing risk"@en .

:databaseTableAntiPattern a schema1:DefinedTerm ;
    rdfs:label "Database-table ontology anti-pattern"@en ;
    schema1:description "Modeling an ontology as rows in a custom table, losing code review, diffs, compilation, and formal reasoning."@en ;
    schema1:name "Database-table ontology anti-pattern"@en ;
    :contrastsWith :plainTextSource .

:rdfNotationTradeoffs a schema1:DefinedTerm ;
    rdfs:label "RDF notation tradeoffs"@en ;
    schema1:description "Differences among Turtle, JSON-LD, and RDF/XML in human readability and tooling support."@en ;
    schema1:name "RDF notation tradeoffs"@en .

:tableDrivenOntologyPattern a schema1:DefinedTerm ;
    rdfs:label "Table-driven ontology pattern"@en ;
    schema1:description "A pattern where highly regular large ontologies are curated in tables and mapped to design patterns."@en ;
    schema1:name "Table-driven ontology pattern"@en .

:vocabularyTaxonomyBoundary a schema1:DefinedTerm ;
    rdfs:label "Vocabulary and taxonomy boundary"@en ;
    schema1:description "The distinction between vocabularies, taxonomies, and ontologies raised in the comments."@en ;
    schema1:name "Vocabulary and taxonomy boundary"@en .

:ontology a schema1:DefinedTerm ;
    rdfs:label "Ontology"@en ;
    schema1:description "A formal graph of interrelated concepts, relationships, constraints, and axioms."@en ;
    schema1:name "Ontology"@en .

:compileGate a schema1:DefinedTerm ;
    rdfs:label "Compile gate"@en ;
    schema1:description "A validation gate where ontology syntax, satisfiability, entailments, contradiction checks, and duplicate concept checks must pass."@en ;
    schema1:name "Compile gate"@en ;
    :tests :automatedOntologyChecks,
        :expectedEntailments,
        :satisfiableClasses .

:governedLikeCode a schema1:DefinedTerm ;
    rdfs:label "Governed like code"@en ;
    schema1:description "Ontology governance using branches, pull requests, reviews, automated checks, releases, and builds."@en ;
    schema1:name "Governed like code"@en ;
    :supports :automatedOntologyChecks,
        :pullRequestReview .

:ontologyAsCode a schema1:DefinedTerm ;
    rdfs:label "Ontology is code"@en ;
    schema1:description "The central claim that an ontology is logic and source code for organizational meaning, not a database table."@en ;
    schema1:name "Ontology is code"@en ;
    :hasComponent :compileGate,
        :governedLikeCode,
        :ontology,
        :plainTextSource .

:plainTextSource a schema1:DefinedTerm ;
    rdfs:label "Plain-text ontology source"@en ;
    schema1:description "Ontology files maintained as source artifacts that support diffs, branches, blame, and pull requests."@en ;
    schema1:name "Plain-text ontology source"@en ;
    :supports :llmReadableSource,
        :pullRequestReview .

:sourcePost a schema1:SocialMediaPosting ;
    rdfs:label "Did you start building your ontology as rows in a custom database table?"@en ;
    schema1:about :ontologyAsCode ;
    schema1:author <https://www.linkedin.com/in/tonyseale/#this> ;
    schema1:commentCount 38 ;
    schema1:datePublished "2026-05-22"^^xsd:date ;
    schema1:description "Tony Seale LinkedIn post arguing that ontologies should compile, live in plain text, and be governed like source code."@en ;
    schema1:hasPart :commentThread ;
    schema1:interactionStatistic 345 ;
    schema1:mentions :compileGate,
        :databaseTableAntiPattern,
        :governedLikeCode,
        :llmReadableSource,
        :plainTextSource ;
    schema1:name "Did you start building your ontology as rows in a custom database table?"@en ;
    schema1:publisher <http://dbpedia.org/resource/LinkedIn> ;
    schema1:text """Did you start building your ontology as a set of rows in a custom database table?

The instinct is completely understandable. As software engineers we have spent our careers putting things into databases: customers, orders, events. So when the organisation says it needs an ontology, the database is the tool to hand.

But please let me suggest a different way of looking at the problem. Because an ontology really is not that kind of artefact.

Ontology IS Code.

It is where your organisation declares what kinds of things exist, how they relate, and what cannot both be true. It is logic. It is expressive. It is a graph of interrelated concepts that build on one another. Formal logic, expressed as a set of rigorous axioms.

So treat it that way.

It should compile. Not just parse. Compile. The syntax should be valid. The classes should be satisfiable. The entailments should be the ones you expected. An absent entailment is a test failure, not a curiosity you discover six months later in production. If the model says two things that cannot both be true, the build should break. If a new term silently duplicates an existing concept, the build should break.

It should live in plain text. You would not write your application code in a database table. You want files, diffs, branches, blame, pull requests and review in context. All of this is just as true for the classes in your ontology.

It is especially true now that we have large language models in the loop. You do not only want the LLM reaching for your ontology through an API or an MCP server. You want it to read, navigate and edit the source directly, exactly the way it works with a codebase.

It should be governed like code. Branches. Pull requests. Reviews. Automated checks. Releases. Builds.

None of this needs inventing. Your engineering organisation already does all of it, often for code that carries far less conceptual weight. The artefact that decides what your organisation means by a customer, an order, a risk, a product should not be governed less rigorously than the CSS on your marketing site.

Compile it. Branch it. Review it. Ship it.

Because it is not a table. Not a schema.

Your ontology is source code for your meaning."""@en ;
    schema1:url <https://www.linkedin.com/posts/tonyseale_did-you-start-building-your-ontology-as-a-share-7463353332565356545-jY54/> .

