Skip to content

Community ontology: Elements of Software - #86

Open
daocoding wants to merge 2 commits into
microsoft:mainfrom
daocoding:community/elements-of-software
Open

Community ontology: Elements of Software#86
daocoding wants to merge 2 commits into
microsoft:mainfrom
daocoding:community/elements-of-software

Conversation

@daocoding

Copy link
Copy Markdown

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:

  • Party — Person, Organization and software Agent as interchangeable actors. Relations any actor can hold (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 explicit is a edges — which makes the pattern visible in the graph.
  • Role, reified — Lead, Customer, Vendor and Employee as roles a Party plays over a time span (validFrom/validTo), rather than promoted to classes. Promoting roles to classes is the most common modeling mistake in CRM-shaped software.
  • One Task that nests — a subtask of self-relation instead of a Subtask class.
  • Pipeline as a property — Deal carries a stage enum; advancing a prospect is an update, not a migration across Lead/Opportunity/Deal classes.
  • The revenue chain on the graph — Subscription held by Party, billed by Invoice, settled by Payment.
  • Views, rules and the trail as first-class records — SavedView (a Kanban is a way of looking; a saved view is a record), Automation (when / if / then as data with an owner), Permission, and AuditEvent — with agents appearing in the audit trail on the same terms as people.

Validation

  • npm run catalogue:build succeeds — the entry compiles into public/catalogue.json (72 entries)
  • metadata.json conforms to catalogue/metadata-schema.json
  • RDF follows the existing community conventions (ont:cardinality, ont:fromEntityId/ont:toEntityId, ont:propertyType, ont:enumValues, ont:isIdentifier, ont:unit)
  • npm test: 387 passed; the 7 failures in src/lib/github.test.ts are present on a clean checkout of main in my environment and are unrelated to this change

🤖 Generated with Claude Code

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]>
@daocoding

Copy link
Copy Markdown
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant