Community ontology: Elements of Software - #86
Open
daocoding wants to merge 2 commits into
Open
Conversation
The essential entities of any SaaS product, modeled with ontological discipline. 19 entity types, 27 relationships, 60 properties. The map demonstrates the patterns that keep a business schema honest: - Person, Organization and software Agent as interchangeable Parties — relations any actor can hold (assigned to, authored by, performed by) point at Party once instead of duplicating per kind - Lead, Customer, Vendor as reified Roles a Party plays over a time span, rather than promoted to classes - One Task with a subtask-of self-relation instead of a Subtask class - Pipeline stages as an enum property on Deal, not a class chain - The recurring-revenue chain readable off the graph: Subscription is billed by Invoices, settled by Payments - SavedView, Automation, Permission and AuditEvent as first-class records — including agents in the audit trail on the same terms as people Validated with npm run catalogue:build (entry compiles into public/catalogue.json) and the RDF parses at full fidelity. Co-Authored-By: Claude Fable 5 <[email protected]>
Author
|
@microsoft-github-policy-service agree |
The rdfs:comments said "class" where this repo says "entity type" —
same concept, this project's register. Comment-only change; no
structural edits. ("first-class records" is the English idiom, kept.)
Co-Authored-By: Claude Fable 5 <[email protected]>
This was referenced Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
A community catalogue entry: Elements of Software — the essential entities of any SaaS product, modeled with ontological discipline. 19 entity types · 27 relationships · 60 properties.
catalogue/community/daocoding/elements-of-software/Why this ontology
Most business software re-invents the same schema, and usually re-invents the same modeling mistakes with it. This map shows the canonical patterns in one place, with each entity's description explaining the choice it embodies:
assigned to,authored by,performed by) point at Party once, instead of being duplicated per kind. Since the format has no inheritance, the taxonomy is drawn as explicitis aedges — which makes the pattern visible in the graph.validFrom/validTo), rather than promoted to classes. Promoting roles to classes is the most common modeling mistake in CRM-shaped software.subtask ofself-relation instead of a Subtask class.stageenum; advancing a prospect is an update, not a migration across Lead/Opportunity/Deal classes.when / if / thenas data with an owner), Permission, and AuditEvent — with agents appearing in the audit trail on the same terms as people.Validation
npm run catalogue:buildsucceeds — the entry compiles intopublic/catalogue.json(72 entries)metadata.jsonconforms tocatalogue/metadata-schema.jsonont:cardinality,ont:fromEntityId/ont:toEntityId,ont:propertyType,ont:enumValues,ont:isIdentifier,ont:unit)npm test: 387 passed; the 7 failures insrc/lib/github.test.tsare present on a clean checkout ofmainin my environment and are unrelated to this change🤖 Generated with Claude Code