{
"$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?"
}