{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreieqvz4qziit5wv2ityhjgzki3fruz6oqjkpdfho5l73bespstjjim",
    "uri": "at://did:plc:3peywwdnn4jkfvqowpviodbf/app.bsky.feed.post/3mne6fop53mt2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreicvc7np54oskzbua3lb6fb22wyz43s2z6dev647pbezy5tjbh7muy"
    },
    "mimeType": "image/png",
    "size": 306209
  },
  "path": "/blog/2026/05/29/how-do-i-create-a-software-ontology/",
  "publishedAt": "2026-05-29T00:00:00.000Z",
  "site": "https://jeffbailey.us",
  "tags": [
    "How-To",
    "Software Architecture",
    "Domain-Driven Design",
    "software ontology"
  ],
  "textContent": "Two senior engineers argued for an hour over a bug. The fix took ten minutes, but the argument lasted fifty. One meant “active subscription” when saying _customer_ , the other meant “any account.” Both were correct but lacked a shared model.\n\nA software ontology is an explicit, agreed-upon domain model, including concepts, meanings, and relationships. In DDD, it covers ubiquitous language, bounded contexts, and aggregates. This guide creates one.\n\n## Goal\n\nCreate a software ontology for a domain: a model that identifies key concepts, defines them once, classifies (entity, value object, or aggregate), and maps relationships and boundaries. The final artifact is an agreed-upon model reflected in the code.",
  "title": "How Do I Create a Software Ontology?"
}