@agenticprimitives/ontology 1.0.0-alpha.4 → 1.0.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +59 -21
  2. package/cbox/agent-facet-shapes.shacl.ttl +130 -0
  3. package/cbox/capability-catalog-shapes.shacl.ttl +284 -0
  4. package/cbox/card-projection-shapes.shacl.ttl +216 -0
  5. package/cbox/consultation-shapes.shacl.ttl +85 -0
  6. package/cbox/content-vocabulary.ttl +52 -0
  7. package/cbox/controlled-vocabularies.ttl +224 -4
  8. package/cbox/discovery-graph-shapes.shacl.ttl +284 -0
  9. package/cbox/familyoffice-shapes.shacl.ttl +92 -0
  10. package/cbox/familyoffice-vocabulary.ttl +48 -0
  11. package/cbox/geo-vocabulary.ttl +36 -0
  12. package/cbox/guidance-vocabulary.ttl +22 -0
  13. package/cbox/interaction-shapes.shacl.ttl +218 -0
  14. package/cbox/interaction-vocabulary.ttl +159 -0
  15. package/cbox/judgment-shapes.shacl.ttl +83 -0
  16. package/cbox/naming-registry-shapes.shacl.ttl +272 -0
  17. package/cbox/org-team-shapes.shacl.ttl +184 -0
  18. package/cbox/privacy-credential-shapes.shacl.ttl +187 -0
  19. package/cbox/profile-facet-vocabulary.ttl +50 -0
  20. package/cbox/registry-vocabulary.ttl +86 -0
  21. package/cbox/run-measures-shapes.shacl.ttl +59 -0
  22. package/cbox/run-provenance-shapes.shacl.ttl +264 -0
  23. package/cbox/scope-vocabulary.ttl +112 -0
  24. package/cbox/skill-grounding-vocabulary.ttl +18 -0
  25. package/cbox/skill-vocabulary.ttl +50 -0
  26. package/context.jsonld +37 -1
  27. package/dist/arg-types.d.ts +60 -0
  28. package/dist/arg-types.d.ts.map +1 -0
  29. package/dist/arg-types.js +143 -0
  30. package/dist/arg-types.js.map +1 -0
  31. package/dist/artifacts.d.ts +9 -2
  32. package/dist/artifacts.d.ts.map +1 -1
  33. package/dist/artifacts.js +153 -2
  34. package/dist/artifacts.js.map +1 -1
  35. package/dist/contact-fields.d.ts +28 -0
  36. package/dist/contact-fields.d.ts.map +1 -0
  37. package/dist/contact-fields.js +38 -0
  38. package/dist/contact-fields.js.map +1 -0
  39. package/dist/decisions.d.ts +69 -0
  40. package/dist/decisions.d.ts.map +1 -0
  41. package/dist/decisions.js +98 -0
  42. package/dist/decisions.js.map +1 -0
  43. package/dist/evaluation-context.d.ts +134 -0
  44. package/dist/evaluation-context.d.ts.map +1 -0
  45. package/dist/evaluation-context.js +136 -0
  46. package/dist/evaluation-context.js.map +1 -0
  47. package/dist/governance.d.ts +84 -0
  48. package/dist/governance.d.ts.map +1 -0
  49. package/dist/governance.js +88 -0
  50. package/dist/governance.js.map +1 -0
  51. package/dist/grounded-vocabulary.d.ts +29 -0
  52. package/dist/grounded-vocabulary.d.ts.map +1 -0
  53. package/dist/grounded-vocabulary.js +110 -0
  54. package/dist/grounded-vocabulary.js.map +1 -0
  55. package/dist/household.d.ts +19 -0
  56. package/dist/household.d.ts.map +1 -0
  57. package/dist/household.js +41 -0
  58. package/dist/household.js.map +1 -0
  59. package/dist/index.d.ts +1091 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1323 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/outcomes.d.ts +47 -0
  64. package/dist/outcomes.d.ts.map +1 -0
  65. package/dist/outcomes.js +40 -0
  66. package/dist/outcomes.js.map +1 -0
  67. package/dist/participant-vocabulary.d.ts +57 -0
  68. package/dist/participant-vocabulary.d.ts.map +1 -0
  69. package/dist/participant-vocabulary.js +66 -0
  70. package/dist/participant-vocabulary.js.map +1 -0
  71. package/dist/party-roles.d.ts +115 -0
  72. package/dist/party-roles.d.ts.map +1 -0
  73. package/dist/party-roles.js +343 -0
  74. package/dist/party-roles.js.map +1 -0
  75. package/dist/payload-classes.d.ts +22 -0
  76. package/dist/payload-classes.d.ts.map +1 -0
  77. package/dist/payload-classes.js +30 -0
  78. package/dist/payload-classes.js.map +1 -0
  79. package/dist/plan-shapes.d.ts +18 -0
  80. package/dist/plan-shapes.d.ts.map +1 -0
  81. package/dist/plan-shapes.js +38 -0
  82. package/dist/plan-shapes.js.map +1 -0
  83. package/dist/principles.generated.d.ts +11 -0
  84. package/dist/principles.generated.d.ts.map +1 -0
  85. package/dist/principles.generated.js +293 -0
  86. package/dist/principles.generated.js.map +1 -0
  87. package/dist/published-works.d.ts +13 -0
  88. package/dist/published-works.d.ts.map +1 -0
  89. package/dist/published-works.js +18 -0
  90. package/dist/published-works.js.map +1 -0
  91. package/dist/relations.d.ts +44 -0
  92. package/dist/relations.d.ts.map +1 -0
  93. package/dist/relations.js +104 -0
  94. package/dist/relations.js.map +1 -0
  95. package/dist/run-measures-context.d.ts +74 -0
  96. package/dist/run-measures-context.d.ts.map +1 -0
  97. package/dist/run-measures-context.js +77 -0
  98. package/dist/run-measures-context.js.map +1 -0
  99. package/dist/run-provenance-context.d.ts +315 -0
  100. package/dist/run-provenance-context.d.ts.map +1 -0
  101. package/dist/run-provenance-context.js +323 -0
  102. package/dist/run-provenance-context.js.map +1 -0
  103. package/dist/transitions.d.ts +42 -0
  104. package/dist/transitions.d.ts.map +1 -0
  105. package/dist/transitions.js +100 -0
  106. package/dist/transitions.js.map +1 -0
  107. package/dist/vault-records.d.ts +74 -0
  108. package/dist/vault-records.d.ts.map +1 -0
  109. package/dist/vault-records.js +777 -0
  110. package/dist/vault-records.js.map +1 -0
  111. package/dist/versions.generated.d.ts +262 -0
  112. package/dist/versions.generated.d.ts.map +1 -0
  113. package/dist/versions.generated.js +318 -0
  114. package/dist/versions.generated.js.map +1 -0
  115. package/evaluation.jsonld +133 -0
  116. package/mappings/actor-context-standards.ttl +89 -0
  117. package/mappings/agent-discovery-standards.ttl +127 -0
  118. package/mappings/collaboration-crosswalk-actors.ttl +30 -0
  119. package/mappings/collaboration-crosswalk-authority.ttl +31 -0
  120. package/mappings/collaboration-crosswalk-guidance.ttl +29 -0
  121. package/mappings/collaboration-crosswalk-intent.ttl +29 -0
  122. package/mappings/collaboration-crosswalk-messaging.ttl +37 -0
  123. package/mappings/collaboration-crosswalk-organization.ttl +66 -0
  124. package/mappings/collaboration-crosswalk-protocols.ttl +49 -0
  125. package/mappings/collaboration-crosswalk-skills.ttl +50 -0
  126. package/mappings/collaboration-profile.ttl +82 -0
  127. package/mappings/commerce-engagement-crosswalk.ttl +83 -0
  128. package/mappings/spine-standards.ttl +83 -0
  129. package/package.json +31 -9
  130. package/run-measures.jsonld +34 -0
  131. package/run-provenance.jsonld +314 -0
  132. package/tbox/actor-context.ttl +145 -0
  133. package/tbox/agent-resolution.ttl +308 -0
  134. package/tbox/agreement.ttl +77 -0
  135. package/tbox/attestation.ttl +156 -0
  136. package/tbox/card-projection.ttl +350 -0
  137. package/tbox/constraints.ttl +150 -0
  138. package/tbox/contact.ttl +61 -0
  139. package/tbox/content.ttl +76 -0
  140. package/tbox/context.ttl +508 -0
  141. package/tbox/coordination.ttl +263 -0
  142. package/tbox/core.ttl +325 -7
  143. package/tbox/dcat-imports.ttl +19 -0
  144. package/tbox/discovery.ttl +273 -0
  145. package/tbox/dqv-imports.ttl +29 -0
  146. package/tbox/earl-imports.ttl +32 -0
  147. package/tbox/engagement.ttl +349 -0
  148. package/tbox/entitlement.ttl +41 -0
  149. package/tbox/estate.ttl +78 -0
  150. package/tbox/evaluation.ttl +330 -0
  151. package/tbox/execution.ttl +720 -0
  152. package/tbox/familyoffice.ttl +87 -0
  153. package/tbox/fulfillment.ttl +140 -0
  154. package/tbox/geo.ttl +28 -0
  155. package/tbox/governance.ttl +67 -0
  156. package/tbox/guidance.ttl +40 -0
  157. package/tbox/household.ttl +142 -0
  158. package/tbox/identity.ttl +133 -6
  159. package/tbox/inference.ttl +177 -0
  160. package/tbox/intents.ttl +241 -0
  161. package/tbox/interaction.ttl +297 -0
  162. package/tbox/messaging.ttl +244 -0
  163. package/tbox/naming.ttl +114 -0
  164. package/tbox/org.ttl +410 -0
  165. package/tbox/payload.ttl +94 -0
  166. package/tbox/payment.ttl +124 -0
  167. package/tbox/plan.ttl +169 -0
  168. package/tbox/principles.ttl +212 -0
  169. package/tbox/privacy-credential.ttl +436 -0
  170. package/tbox/profile.ttl +107 -0
  171. package/tbox/prov-imports.ttl +73 -0
  172. package/tbox/registry.ttl +382 -0
  173. package/tbox/resolution.ttl +108 -0
  174. package/tbox/scope.ttl +59 -0
  175. package/tbox/security-exposure.ttl +102 -0
  176. package/tbox/situation.ttl +56 -0
  177. package/tbox/skills.ttl +316 -0
  178. package/tbox/skos-imports.ttl +54 -0
  179. package/tbox/transition.ttl +63 -0
  180. package/tbox/trust.ttl +210 -0
  181. package/tbox/values.ttl +81 -0
  182. package/tbox/verification-receipt.ttl +134 -0
  183. package/versions.adoption.json +173 -0
@@ -0,0 +1,114 @@
1
+ # T-box — typed agent naming (spec 346 §3, §11; ADR-0061).
2
+ #
3
+ # The name class itself (apnam:NameFacet ⊑ ap:Facet — a resolvable name that points AT an Agent and is
4
+ # never the sole authority, ADR-0006) stays in tbox/identity.ttl with the other facets. This module adds
5
+ # what typed naming needs on top of it:
6
+ #
7
+ # apnam:tld the canonical suffix — NAMES the derived type (.me .org .team .svc
8
+ # .workspace .treasury .registry); a CLAIM checked against the SA's
9
+ # on-chain ap:agentType record, never authority and never structure
10
+ # apnam:ContextualNameIssuance a name issued BY a context (org / team / workspace agent) in its own
11
+ # namespace, current only while its basis delegation is live
12
+ # apnam:ContextualAgentReference a resolved `x@ctx` — a REFERENCE composing the canonical subject
13
+ # with an actor context, a role assignment and the live delegation;
14
+ # never an agent, never a second identity
15
+ #
16
+ # What a suffix is NOT (ADR-0061 §3): the inheritance structure, a root, a role, a technology. Resolution
17
+ # maps suffix → derived type → root; `rpedersen.me@richcanvas.org` still resolves to a Person — the
18
+ # `@richcanvas.org` is context, not classification.
19
+
20
+ @prefix apnam: <https://agenticprimitives.dev/ns/naming#> .
21
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
22
+ @prefix apdel: <https://agenticprimitives.dev/ns/delegation#> .
23
+ @prefix apactor: <https://agenticprimitives.dev/ns/actor#> .
24
+ @prefix aporg: <https://agenticprimitives.dev/ns/org#> .
25
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
26
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
27
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
28
+ @prefix prov: <http://www.w3.org/ns/prov#> .
29
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
30
+
31
+ <https://agenticprimitives.dev/ns/naming> a owl:Ontology ;
32
+ rdfs:label "Agentic Primitives — typed agent naming (spec 346)" ;
33
+ owl:versionInfo "0.1.0" ;
34
+ rdfs:comment "Typed suffixes, contextual name issuance, contextual references. A name is a facet (ADR-0006/ADR-0010): decorative, resolvable, replaceable — never the identifier and never authority." .
35
+
36
+ # ─── The typed suffix ────────────────────────────────────────────────────────
37
+
38
+ apnam:tld a owl:DatatypeProperty ;
39
+ rdfs:domain apnam:NameFacet ;
40
+ rdfs:range xsd:string ;
41
+ rdfs:label "tld" ;
42
+ rdfs:comment "The canonical suffix; names the derived type — derivedTypeForTld. NEVER authority. Values are the prefLabels of apnam:tldScheme (cbox): me org team svc workspace treasury registry; 'ws' is an alias of 'workspace', never stored. Legacy roots (.agent, .impact) carry no tld and are exempt from apnam:TypedAgentNameShape." .
43
+
44
+ apnam:namesDerivedType a owl:ObjectProperty ;
45
+ rdfs:domain skos:Concept ;
46
+ rdfs:range skos:Concept ;
47
+ rdfs:label "namesDerivedType" ;
48
+ rdfs:comment "apnam:tldScheme concept → ap:agentTypeScheme concept: the suffix→derived-type map the resolver applies and TypedAgentNameShape checks a name's target against. Fixed data, not a lookup any caller may widen." .
49
+
50
+ # ─── Contextual issuance ─────────────────────────────────────────────────────
51
+
52
+ apnam:ContextualNameIssuance a owl:Class ;
53
+ rdfs:subClassOf prov:Entity ;
54
+ rdfs:label "ContextualNameIssuance" ;
55
+ rdfs:comment "A name issued by a context (org/team/workspace agent) in its namespace: kind scoped | reference; basis = a membership+delegation, an operatedBy delegation, or a charter mandate. Vault record; anchored on chain iff listing public." .
56
+
57
+ apnam:issuedBy a owl:ObjectProperty ;
58
+ rdfs:domain apnam:ContextualNameIssuance ;
59
+ rdfs:range ap:Agent ;
60
+ rdfs:label "issuedBy" ;
61
+ rdfs:comment "The context that issued the name — an Organization (incl. Team) or a WorkspaceAgent (apnam:ContextualNameIssuanceShape)." .
62
+
63
+ apnam:issuedFor a owl:ObjectProperty ;
64
+ rdfs:domain apnam:ContextualNameIssuance ;
65
+ rdfs:range ap:Agent ;
66
+ rdfs:label "issuedFor" ;
67
+ rdfs:comment "The canonical subject the contextual name refers to. Its own canonical name is untouched by the issuance." .
68
+
69
+ apnam:issuanceBasis a owl:ObjectProperty ;
70
+ rdfs:domain apnam:ContextualNameIssuance ;
71
+ rdfs:range apdel:Delegation ;
72
+ rdfs:label "issuanceBasis" ;
73
+ rdfs:comment "The delegation whose liveness makes the name CURRENT. A reference, never a grant." .
74
+
75
+ apnam:issuanceKind a owl:DatatypeProperty ;
76
+ rdfs:domain apnam:ContextualNameIssuance ;
77
+ rdfs:range xsd:string ;
78
+ rdfs:label "issuanceKind" ;
79
+ rdfs:comment "scoped | reference (spec 346 §3.2 — same syntax, one meaning). A 'reference' issuance names ANOTHER agent in the issuer's namespace, so issuedFor must differ from issuedBy." .
80
+
81
+ apnam:issuedName a owl:DatatypeProperty ;
82
+ rdfs:domain apnam:ContextualNameIssuance ;
83
+ rdfs:range xsd:string ;
84
+ rdfs:label "issuedName" ;
85
+ rdfs:comment "The full contextual form as issued (e.g. rpedersen.me@richcanvas.org)." .
86
+
87
+ # ─── The resolved contextual reference ───────────────────────────────────────
88
+
89
+ apnam:ContextualAgentReference a owl:Class ;
90
+ rdfs:subClassOf prov:Entity ;
91
+ rdfs:label "ContextualAgentReference" ;
92
+ rdfs:comment "A resolved x@ctx: canonical subject + apactor:ActorContext + aporg:RoleAssignment + the live delegation. A reference — never an agent, never an identity." .
93
+
94
+ apnam:referenceSubject a owl:ObjectProperty ;
95
+ rdfs:domain apnam:ContextualAgentReference ;
96
+ rdfs:range ap:Agent ;
97
+ rdfs:label "referenceSubject" ;
98
+ rdfs:comment "The canonical Smart Agent the reference resolves to (ADR-0010)." .
99
+
100
+ apnam:referenceContext a owl:ObjectProperty ;
101
+ rdfs:domain apnam:ContextualAgentReference ;
102
+ rdfs:range apactor:ActorContext ;
103
+ rdfs:label "referenceContext" .
104
+
105
+ apnam:referenceRoleAssignment a owl:ObjectProperty ;
106
+ rdfs:domain apnam:ContextualAgentReference ;
107
+ rdfs:range aporg:RoleAssignment ;
108
+ rdfs:label "referenceRoleAssignment" .
109
+
110
+ apnam:referenceBasis a owl:ObjectProperty ;
111
+ rdfs:domain apnam:ContextualAgentReference ;
112
+ rdfs:range apdel:Delegation ;
113
+ rdfs:label "referenceBasis" ;
114
+ rdfs:comment "The live delegation the reference resolves through. Revoke it and the reference deactivates; the canonical name is untouched (ADR-0061 §6)." .
package/tbox/org.ttl ADDED
@@ -0,0 +1,410 @@
1
+ # T-box — organization membership, roles, enrollment (spec 324 §4–§8); team affiliation, workspace,
2
+ # responsibility (spec 344 §4.2). OrganizationMembership is a Situation — not a delegation, not a
3
+ # directory listing. A Workspace is an ENTITY (a governed coordination plane) — never an agent, never a
4
+ # tenant; its agentive face is the ap:WorkspaceAgent it is coordinatedBy (ADR-0061 §4).
5
+
6
+ @prefix aporg: <https://agenticprimitives.dev/ns/org#> .
7
+ @prefix apsit: <https://agenticprimitives.dev/ns/situation#> .
8
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
9
+ @prefix apdel: <https://agenticprimitives.dev/ns/delegation#> .
10
+ @prefix apent: <https://agenticprimitives.dev/ns/entitlement#> .
11
+ @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
12
+ @prefix apmsg: <https://agenticprimitives.dev/ns/messaging#> .
13
+ @prefix aps: <https://agenticprimitives.dev/ns/skill#> .
14
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
15
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
16
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
17
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
18
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
19
+ @prefix prov: <http://www.w3.org/ns/prov#> .
20
+
21
+ aporg: a owl:Ontology ;
22
+ rdfs:label "Agentic Primitives — organization ontology" ;
23
+ owl:versionInfo "0.4.0" ;
24
+ rdfs:comment "Membership, roles, enrollment instruments (spec 324); team affiliation, workspaces (the governed coordination plane) and responsibilities (spec 344 §4.2). DirectoryListing remains in tbox/messaging.ttl for wire compat." .
25
+
26
+ # ─── Membership ───────────────────────────────────────────────────────
27
+
28
+ aporg:OrganizationMembership a owl:Class ;
29
+ rdfs:subClassOf apsit:Situation ;
30
+ rdfs:label "OrganizationMembership" ;
31
+ rdfs:comment "Private-by-default Situation: exactly one memberAgent + one organizationAgent under an EnrollmentDecision. Member is NOT a class." .
32
+
33
+ aporg:memberAgent a owl:ObjectProperty ;
34
+ rdfs:domain aporg:OrganizationMembership ; rdfs:range ap:Agent ;
35
+ rdfs:label "memberAgent" .
36
+
37
+ aporg:organizationAgent a owl:ObjectProperty ;
38
+ rdfs:domain aporg:OrganizationMembership ; rdfs:range ap:OrganizationAgent ;
39
+ rdfs:label "organizationAgent" .
40
+
41
+ aporg:hasRoleAssignment a owl:ObjectProperty ;
42
+ rdfs:domain aporg:OrganizationMembership ; rdfs:range aporg:RoleAssignment ;
43
+ rdfs:label "hasRoleAssignment" .
44
+
45
+ # Convenience projection only — active membership is resolved externally (SHACL/resolver).
46
+ aporg:memberOf a owl:ObjectProperty ;
47
+ rdfs:domain ap:Agent ; rdfs:range ap:OrganizationAgent ;
48
+ rdfs:label "memberOf" ;
49
+ rdfs:comment "DERIVED: true iff active, valid, disclosable OrganizationMembership exists. Never asserted globally." .
50
+
51
+ # ─── Contacts — membership on the PERSON agent (spec 401) ─────────────────────────────────────────────
52
+ # A contact is an agent a person has let in — a friend, a coach service, an outside runtime, an assistant —
53
+ # admitted by the person with a scoped access grant and recorded in the person's own vault, as an
54
+ # organization records a member. What it IS: the same shape as OrganizationMembership with a PERSON where the
55
+ # organization stands (aporg:contactOf · aporg:contactAgent). What it is NOT: public (ADR-0025 — a contact
56
+ # list is a private link), a class of agent (a contact is a role a relation carries), or authority (the grant
57
+ # is; the role — friend, family, coach, assistant, runtime — authorizes nothing, like a household's kinship).
58
+
59
+ aporg:Contact a owl:Class ;
60
+ rdfs:subClassOf apsit:Situation ;
61
+ rdfs:label "Contact" ;
62
+ rdfs:comment "Private-by-default Situation: exactly one contactAgent + one personAgent (the person who let them in), under the person's own access grant. Membership on a person; never public." .
63
+
64
+ aporg:contactAgent a owl:ObjectProperty ;
65
+ rdfs:domain aporg:Contact ; rdfs:range ap:Agent ;
66
+ rdfs:label "contactAgent" ;
67
+ rdfs:comment "The agent let in — a person, a service (a coach, an outside runtime), an assistant. Never an organization: one belongs to an organization or not." .
68
+
69
+ aporg:contactOf a owl:ObjectProperty ;
70
+ rdfs:domain aporg:Contact ; rdfs:range ap:PersonAgent ;
71
+ rdfs:label "contactOf" ;
72
+ rdfs:comment "The person whose contact this is — the principal of the record, the issuer of the grant." .
73
+
74
+ aporg:contactRole a owl:DatatypeProperty ;
75
+ rdfs:domain aporg:Contact ; rdfs:range xsd:string ;
76
+ rdfs:label "contactRole" ;
77
+ rdfs:comment "Declarative: friend · family · coach · assistant · runtime · other. Authorizes nothing (spec 368's kinship facets are the precedent)." .
78
+
79
+ # ─── Contact roles — the five words a person has for what a contact is TO THEM ───────────────────
80
+ # Individuals, so a role is a fact the ontology names rather than a string a picker owns (agent-vocabulary.md §5).
81
+ # A role is DECLARATIVE: it authorizes nothing; the contact's grant does. A coach is a contact with role coach —
82
+ # there is no Coach class, as there is no Runtime class: both are ap:ServiceAgent with a role.
83
+ aporg:ContactRole a owl:Class ;
84
+ rdfs:label "ContactRole" ;
85
+ rdfs:comment "What a contact is to the person who let them in. Closed set of individuals; declarative; never a basis." .
86
+ aporg:contactRoleOf a owl:ObjectProperty ;
87
+ rdfs:domain aporg:Contact ; rdfs:range aporg:ContactRole ;
88
+ rdfs:label "contactRoleOf" ;
89
+ rdfs:comment "The role as an individual — the object form of aporg:contactRole (the string form is kept for the wire)." .
90
+ aporg:role-friend a aporg:ContactRole ; rdfs:label "friend" ; rdfs:comment "A person you know; becomes mutual when they add you back." .
91
+ aporg:role-family a aporg:ContactRole ; rdfs:label "family" ; rdfs:comment "A person of your household or kin (the household's kinship facet is the precedent, spec 368)." .
92
+ aporg:role-coach a aporg:ContactRole ; rdfs:label "coach" ; rdfs:comment "A SERVICE you consult under a study grant (a canasta coach, a holdem coach). One-way." .
93
+ aporg:role-assistant a aporg:ContactRole ; rdfs:label "assistant" ; rdfs:comment "A SERVICE that acts for you or answers you — an assistant app, an assistant service. One-way." .
94
+ aporg:role-runtime a aporg:ContactRole ; rdfs:label "runtime" ; rdfs:comment "A SERVICE that is your own runtime — Claude Code, goose — paired at your Home (spec 400 W1b). One-way." .
95
+ aporg:role-other a aporg:ContactRole ; rdfs:label "other" ; rdfs:comment "A contact with no role named." .
96
+
97
+ # ─── Roles ────────────────────────────────────────────────────────────
98
+
99
+ aporg:OrganizationRoleDefinition a owl:Class ;
100
+ rdfs:subClassOf prov:Entity ;
101
+ rdfs:label "OrganizationRoleDefinition" ;
102
+ rdfs:comment "Reusable org-scoped role template. Declarative — does not authorize execution." .
103
+
104
+ aporg:OrganizationalPost a owl:Class ;
105
+ rdfs:subClassOf prov:Entity ;
106
+ rdfs:label "OrganizationalPost" ;
107
+ rdfs:comment "Enduring org position (e.g. Acme CFO post), distinct from OrganizationRoleDefinition template. W3C ORG Post pattern (spec 325)." .
108
+
109
+ aporg:RoleAssignment a owl:Class ;
110
+ rdfs:subClassOf apsit:Situation ;
111
+ rdfs:label "RoleAssignment" ;
112
+ rdfs:comment "Connects OrganizationMembership to OrganizationRoleDefinition. Materialized by Delegations — not itself authority." .
113
+
114
+ aporg:assignedMembership a owl:ObjectProperty ;
115
+ rdfs:domain aporg:RoleAssignment ; rdfs:range aporg:OrganizationMembership ;
116
+ rdfs:label "assignedMembership" .
117
+
118
+ aporg:assignedRole a owl:ObjectProperty ;
119
+ rdfs:domain aporg:RoleAssignment ; rdfs:range aporg:OrganizationRoleDefinition ;
120
+ rdfs:label "assignedRole" .
121
+
122
+ aporg:materializedByDelegation a owl:ObjectProperty ;
123
+ rdfs:domain aporg:RoleAssignment ; rdfs:range apdel:Delegation ;
124
+ rdfs:label "materializedByDelegation" .
125
+
126
+ # Spec 427 — what a role OFFERS, and what a membership's role assignment records about itself. None of these is
127
+ # authority: a gate reads the delegation (materializedByDelegation), never a role's name, its access word or its pack.
128
+
129
+ aporg:offersSkillPack a owl:ObjectProperty ;
130
+ rdfs:domain aporg:OrganizationRoleDefinition ; rdfs:range aps:AgentArchetype ;
131
+ rdfs:label "offersSkillPack" ;
132
+ rdfs:comment "A skill pack — an archetype in the skills registry — the role OFFERS the agent of whoever holds it (spec 427). Offers, never installs: only the agent's own custodian writes its playbook, and a pack confers no authority." .
133
+
134
+ aporg:offeredSkillPack a owl:ObjectProperty ;
135
+ rdfs:domain aporg:RoleAssignment ; rdfs:range aps:AgentArchetype ;
136
+ rdfs:label "offeredSkillPack" ;
137
+ rdfs:comment "The skill pack(s) the role offered WHEN IT WAS ASSIGNED, snapshotted on the assignment so the member's Home can offer the pack without resolving the definition. A later change to the definition does not rewrite an assignment." .
138
+
139
+ aporg:roleDefinitionId a owl:DatatypeProperty ;
140
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:string ;
141
+ rdfs:label "roleDefinitionId" ;
142
+ rdfs:comment "The defining organization's own id for the role definition assigned (`roledef:<org>:<slug>@<version>`), kept on the assignment so a roster names the definition without resolving it." .
143
+
144
+ aporg:roleName a owl:DatatypeProperty ;
145
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:string ;
146
+ rdfs:label "roleName" ;
147
+ rdfs:comment "The role's name as a person reads it (\"Field worker\"). A word; authorizes nothing." .
148
+
149
+ aporg:roleDescription a owl:DatatypeProperty ;
150
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:string ;
151
+ rdfs:label "roleDescription" ;
152
+ rdfs:comment "The sentence the organization offered the role with, snapshotted on the assignment." .
153
+
154
+ aporg:roleScope a owl:DatatypeProperty ;
155
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:string ;
156
+ rdfs:label "roleScope" ;
157
+ rdfs:comment "Where the role is held: `organization` or `team`. A team is an organization and holds its own members (spec 344), so a team-scoped role is on the team's membership record." .
158
+
159
+ aporg:accessRole a owl:DatatypeProperty ;
160
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:string ;
161
+ rdfs:label "accessRole" ;
162
+ rdfs:comment "The access role, in the issuing application's vocabulary, whose delegations materialize this role by default (spec 343). It EXPLAINS the access; the delegations are the access." .
163
+
164
+ aporg:assignedBy a owl:ObjectProperty ;
165
+ rdfs:domain aporg:RoleAssignment ; rdfs:range ap:Agent ;
166
+ rdfs:label "assignedBy" ;
167
+ rdfs:comment "The steward whose invitation, or whose later change, named the role." .
168
+
169
+ aporg:assignedAt a owl:DatatypeProperty ;
170
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:dateTime ;
171
+ rdfs:label "assignedAt" .
172
+
173
+ aporg:roleSetAt a owl:DatatypeProperty ;
174
+ rdfs:domain aporg:RoleAssignment ; rdfs:range xsd:dateTime ;
175
+ rdfs:label "roleSetAt" ;
176
+ rdfs:comment "Present only when a steward SET the role after admission. A role so set stands: re-running the member's join never replaces it with the invitation's." .
177
+
178
+ aporg:proposesRoleDefinition a owl:ObjectProperty ;
179
+ rdfs:domain aporg:MembershipInvitation ; rdfs:range aporg:OrganizationRoleDefinition ;
180
+ rdfs:label "proposesRoleDefinition" ;
181
+ rdfs:comment "A role definition an invitation proposes the invitee be assigned on admission (spec 324 §5). A proposal: satisfying the invitation records the role, and grants nothing by itself." .
182
+
183
+ aporg:supportedByEntitlement a owl:ObjectProperty ;
184
+ rdfs:domain aporg:RoleAssignment ; rdfs:range apent:AccessEntitlement ;
185
+ rdfs:label "supportedByEntitlement" .
186
+
187
+ # ─── Enrollment instruments (not membership) ──────────────────────────
188
+
189
+ aporg:EnrollmentPolicy a owl:Class ;
190
+ rdfs:subClassOf prov:Entity ;
191
+ rdfs:label "EnrollmentPolicy" ;
192
+ rdfs:comment "Organization joining policy. 'Admission' is ingress-only (ADR-0043) — use Enrollment for org joining." .
193
+
194
+ aporg:EnrollmentRequirement a owl:Class ;
195
+ rdfs:subClassOf prov:Entity ;
196
+ rdfs:label "EnrollmentRequirement" ;
197
+ rdfs:comment "Eligibility predicate; satisfying it does not create membership." .
198
+
199
+ aporg:MembershipInvitation a owl:Class ;
200
+ rdfs:subClassOf prov:Entity ;
201
+ rdfs:label "MembershipInvitation" ;
202
+ rdfs:comment "Directed enrollment proposal org→agent. Not a membership." .
203
+
204
+ aporg:MembershipInviteLink a owl:Class ;
205
+ rdfs:subClassOf prov:Entity ;
206
+ rdfs:label "MembershipInviteLink" ;
207
+ rdfs:comment "Bearer enrollment instrument (tokenHash only in storage). Not a Delegation." .
208
+
209
+ aporg:MembershipApplication a owl:Class ;
210
+ rdfs:subClassOf prov:Entity ;
211
+ rdfs:label "MembershipApplication" ;
212
+ rdfs:comment "Join request; usually expresses JoinOrganizationIntent via REQUEST act." .
213
+
214
+ aporg:EnrollmentDecision a owl:Class ;
215
+ rdfs:subClassOf prov:Entity ;
216
+ rdfs:label "EnrollmentDecision" ;
217
+ rdfs:comment "Signed approve/reject. Approval creates OrganizationMembership — does not grant arbitrary authority." .
218
+
219
+ aporg:MembershipTermination a owl:Class ;
220
+ rdfs:subClassOf prov:Entity ;
221
+ rdfs:label "MembershipTermination" .
222
+
223
+ aporg:AdmissionExclusion a owl:Class ;
224
+ rdfs:subClassOf prov:Entity ;
225
+ rdfs:label "AdmissionExclusion" ;
226
+ rdfs:comment "Org-level exclusion record — not ingress admission." .
227
+
228
+ aporg:expressesJoinIntent a owl:ObjectProperty ;
229
+ rdfs:domain aporg:MembershipApplication ; rdfs:range apint:JoinOrganizationIntent ;
230
+ rdfs:label "expressesJoinIntent" .
231
+
232
+ # ═══ spec 344 §4.2 — team affiliation, workspaces, responsibility ═════════
233
+
234
+ # ─── Team affiliation (§1.2) ──────────────────────────────────────────
235
+
236
+ aporg:TeamAffiliation a owl:Class ;
237
+ rdfs:subClassOf apsit:Situation ;
238
+ rdfs:comment """Private-by-default Situation: exactly one teamAgent + one affiliatedOrganization +
239
+ one affiliationKind under signed AffiliationDecision evidence. Informational — never authority.
240
+ Cross-org teams hold several 'chartered' affiliations (joint charter) or one from an Alliance.""" .
241
+
242
+ aporg:teamAgent a owl:ObjectProperty ;
243
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range ap:TeamAgent .
244
+ aporg:affiliatedOrganization a owl:ObjectProperty ;
245
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range ap:OrganizationAgent .
246
+ aporg:affiliationKind a owl:ObjectProperty ;
247
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range skos:Concept ;
248
+ rdfs:comment "aporg:affiliationKindScheme — chartered | engaged (cbox)." .
249
+ aporg:mandatedByDelegation a owl:ObjectProperty ;
250
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range apdel:Delegation ;
251
+ rdfs:comment """The chartering org's mandate — the delegation org→team that MATERIALIZES what the
252
+ affiliation only evidences. The gate verifies the delegation, never this record.""" .
253
+
254
+ aporg:AffiliationProposal a owl:Class ; rdfs:subClassOf prov:Entity .
255
+ aporg:AffiliationDecision a owl:Class ; rdfs:subClassOf prov:Entity ;
256
+ rdfs:comment """Signed accept/reject. Both stewards for 'engaged' and post-hoc 'chartered'; the
257
+ chartering steward alone when minted by the team-create ceremony itself.""" .
258
+ aporg:AffiliationTermination a owl:Class ; rdfs:subClassOf prov:Entity ;
259
+ rdfs:comment "Either side, unilaterally. Ends currency; revokes nothing." .
260
+
261
+ aporg:charteredBy a owl:ObjectProperty ;
262
+ rdfs:domain ap:TeamAgent ; rdfs:range ap:OrganizationAgent ;
263
+ rdfs:comment "DERIVED: current 'chartered' TeamAffiliation exists. Never asserted globally." .
264
+ aporg:engagedWith a owl:ObjectProperty ;
265
+ rdfs:domain ap:TeamAgent ; rdfs:range ap:OrganizationAgent ;
266
+ rdfs:comment "DERIVED: current 'engaged' TeamAffiliation exists." .
267
+
268
+ # ─── Boundary cases (§1.1, §1.4) ──────────────────────────────────────
269
+
270
+ aporg:WorkingGroup a owl:Class ; rdfs:subClassOf prov:Entity ;
271
+ rdfs:comment """An informal named collection of agents — NOT an agent: no custody, no authority.
272
+ Promotable by chartering a TeamAgent (a creation ceremony, never a mutation).""" .
273
+
274
+ aporg:InterorganizationalCollaborationArrangement a owl:Class ; rdfs:subClassOf prov:Entity ;
275
+ rdfs:comment """A loose partnership among organizations. Becomes ap:AllianceAgent only when real
276
+ joint authority is delegated.""" .
277
+
278
+ # ─── Workspace: the coordination plane (§2) ───────────────────────────
279
+
280
+ aporg:Workspace a owl:Class ; rdfs:subClassOf prov:Entity ;
281
+ rdfs:comment """A persistent, governed, purpose-bound coordination plane binding participant
282
+ agents, roles, responsibilities, policies, app/agent/resource bindings and representations.
283
+ NOT an agent, NOT a tenant: no custody, no address, no authority of its own. Governance
284
+ inherited from its governor; records in the governor's vault (ADR-0055). Several apps may
285
+ bind to ONE workspace — none of them recreates the org, team, roles, or domain context.""" .
286
+
287
+ aporg:governedBy a owl:ObjectProperty ;
288
+ rdfs:domain aporg:Workspace ; rdfs:range ap:OrganizationAgent ;
289
+ rdfs:comment """Exactly one governing agent (org, team, or alliance). Source of every policy the
290
+ workspace has. Switching workspace = switching authority/policy/disclosure/audit context.""" .
291
+ aporg:workspacePurpose a owl:DatatypeProperty ;
292
+ rdfs:domain aporg:Workspace ; rdfs:range xsd:string .
293
+ aporg:workspaceProfile a owl:ObjectProperty ;
294
+ rdfs:domain aporg:Workspace ; rdfs:range skos:Concept ;
295
+ rdfs:comment """aporg:workspaceProfileScheme. One primary profile; apps declare which profiles
296
+ they support and the catalog matches on it.""" .
297
+ aporg:focusedOn a owl:ObjectProperty ;
298
+ rdfs:domain aporg:Workspace ;
299
+ rdfs:comment """What the collaboration is ABOUT (a field, an initiative — domain profiles narrow
300
+ the range). The focus is not the workspace (review §12: a community or engagement within a
301
+ workspace is not another workspace).""" .
302
+ aporg:workspaceParticipationPolicy a owl:ObjectProperty ;
303
+ rdfs:domain aporg:Workspace ; rdfs:range skos:Concept ;
304
+ rdfs:comment """open (derived from the governor's membership — never asserted) | restricted
305
+ (asserted WorkspaceParticipation records).""" .
306
+
307
+ # Agents layer (§2.1)
308
+ aporg:WorkspaceParticipation a owl:Class ; rdfs:subClassOf apsit:Situation ;
309
+ rdfs:comment """Asserted participation in a RESTRICTED workspace: exactly one participantAgent
310
+ (ANY agent kind) + one inWorkspace, by invitation → accept. An org/team participant projects
311
+ its people in through its own live roster — never copied (the 341 §5.1c resolution pattern;
312
+ Gather27's GatherHost is this record).""" .
313
+ aporg:participantAgent a owl:ObjectProperty ;
314
+ rdfs:domain aporg:WorkspaceParticipation ; rdfs:range ap:Agent .
315
+ aporg:inWorkspace a owl:ObjectProperty ;
316
+ rdfs:domain aporg:WorkspaceParticipation ; rdfs:range aporg:Workspace .
317
+
318
+ aporg:coordinatedBy a owl:ObjectProperty ;
319
+ rdfs:domain aporg:Workspace ; rdfs:range ap:WorkspaceAgent ;
320
+ rdfs:comment """The ap:WorkspaceAgent: a service-kind SA the GOVERNOR delegates to (the
321
+ spec-327 assistant pattern, workspace-scoped). Provides the workspace's A2A/MCP surface —
322
+ projection publishing, notifications, audit. NEVER an independent source of authority:
323
+ revoke the governor's delegation and it is inert. Range narrowed from ap:ServiceAgent to
324
+ ap:WorkspaceAgent by spec 346 §2.2 — the workspace agent is the derived type the
325
+ '.workspace' suffix names.""" .
326
+
327
+ aporg:coordinatesWorkspace a owl:ObjectProperty ;
328
+ rdfs:domain ap:WorkspaceAgent ; rdfs:range aporg:Workspace ;
329
+ owl:inverseOf aporg:coordinatedBy ;
330
+ rdfs:comment """The workspace context this workspace agent custodies and serves. At most one. The
331
+ NAME binds to the workspace agent SA (the workspace's agentive face); the context is a governed
332
+ Entity in the governor's vault (spec 344 §5) and is never itself named.""" .
333
+
334
+ aporg:boundAgent a owl:ObjectProperty ;
335
+ rdfs:domain aporg:Workspace ; rdfs:range ap:Agent ;
336
+ rdfs:comment """A specialized domain agent bound into the workspace. The binding must reference
337
+ which principal it represents (mandate), which responsibility it supports (assignment), and
338
+ which data it may access (grants) — three references, never new authority.""" .
339
+
340
+ # Entities layer (§2.2)
341
+ aporg:WorkspaceRepresentation a owl:Class ; rdfs:subClassOf prov:Entity ;
342
+ rdfs:comment """A workspace-scoped, policy-bounded PROJECTION of a domain entity whose
343
+ authoritative record stays in its custodian's vault. Conventional SaaS: record belongs to
344
+ tenant. Here: entity exists independently; custodian controls the record; the workspace
345
+ receives an authorized representation that can expire or be revoked without the record ever
346
+ moving. Crosswalk: at:DataProjection under an at:DataCovenant; decision record precedent:
347
+ eng:ProjectionManifest (field-domain). NORMATIVE FLOOR: absence of a policy is never public —
348
+ an unclassified representation fails closed.""" .
349
+
350
+ aporg:represents a owl:ObjectProperty ;
351
+ rdfs:domain aporg:WorkspaceRepresentation ;
352
+ rdfs:comment "The domain entity represented. Range open — domain profiles narrow it." .
353
+ aporg:representationOfWorkspace a owl:ObjectProperty ;
354
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range aporg:Workspace .
355
+ aporg:sourceCustodian a owl:ObjectProperty ;
356
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range ap:Agent ;
357
+ rdfs:comment "Whose vault holds the authoritative record. Custody NEVER moves." .
358
+ aporg:localLabel a owl:DatatypeProperty ;
359
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range xsd:string ;
360
+ rdfs:comment "How THIS workspace knows the entity — the org-local-name pattern generalized." .
361
+ aporg:sharingPolicy a owl:ObjectProperty ;
362
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range skos:Concept ;
363
+ rdfs:comment """Disclosure bound on the representation (sensitivity / precision caps — domain
364
+ packs supply the scheme, e.g. eng: sensitivity L0–L5 + gc: location precision).""" .
365
+ aporg:representationValidUntil a owl:DatatypeProperty ;
366
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range xsd:dateTime .
367
+
368
+ aporg:adoptedResource a owl:ObjectProperty ;
369
+ rdfs:domain aporg:Workspace ;
370
+ rdfs:comment """A versioned external resource the workspace adopts for its purpose (the resource
371
+ fabric: provider publishes → HOME discovers/licenses → WORKSPACE adopts a version → APP
372
+ renders). A representation whose source is a provider, not a participant vault.""" .
373
+
374
+ # App bindings (§2.4)
375
+ aporg:boundApp a owl:ObjectProperty ;
376
+ rdfs:domain aporg:Workspace ;
377
+ rdfs:comment """An application (OIDC client) bound into this workspace. PROJECTION ONLY — the
378
+ app's reads still ride its own per-app read grants (spec 341 §4.3); binding grants nothing,
379
+ unbinding revokes nothing but presence. Several apps per workspace is the point (§2.4).""" .
380
+
381
+ apmsg:hostedInWorkspace a owl:ObjectProperty ;
382
+ rdfs:domain apmsg:DiscussionTopic ; rdfs:range aporg:Workspace ;
383
+ rdfs:comment """A topic MAY be hosted in one workspace of the same governor. Absent = the
384
+ org-wide board (today's behavior, unchanged).""" .
385
+
386
+ # ─── Responsibility (§1.5) ────────────────────────────────────────────
387
+
388
+ aporg:ResponsibilityAssignment a owl:Class ; rdfs:subClassOf apsit:Situation ;
389
+ rdfs:comment """A time-scoped, visible commitment: an agent is expected to care for an outcome or
390
+ resource within a scope, under named authority and accountability. NEVER an authorization.
391
+ More durable than an app task: one responsibility → many work items → many apps; survives
392
+ app replacement. Five questions, five concepts (spec 344 §1.5).""" .
393
+
394
+ aporg:responsibleAgent a owl:ObjectProperty ;
395
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range ap:Agent .
396
+ aporg:accountableAgent a owl:ObjectProperty ;
397
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range ap:Agent ;
398
+ rdfs:comment "Who answers for the result. MAY differ from responsibleAgent." .
399
+ aporg:responsibilityKind a owl:ObjectProperty ;
400
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range skos:Concept .
401
+ aporg:responsibilityScope a owl:ObjectProperty ;
402
+ rdfs:domain aporg:ResponsibilityAssignment ;
403
+ rdfs:comment "A workspace, team, engagement, record family — domain profiles narrow the range." .
404
+ aporg:underMandate a owl:ObjectProperty ;
405
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range apdel:Delegation ;
406
+ rdfs:comment "The authority the responsible agent exercises — a reference, not a grant." .
407
+ aporg:expectedOutcome a owl:DatatypeProperty ;
408
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range xsd:string .
409
+ aporg:reviewCadenceDays a owl:DatatypeProperty ;
410
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range xsd:integer .
@@ -0,0 +1,94 @@
1
+ # T-box — WHAT A WRITE CARRIES (spec 410 §7, THESIS-6/THESIS-7's information-flow half).
2
+ #
3
+ # An aggregate limit at the resource says how MUCH may leave (`TreasurySpendPolicy`); this says WHAT KIND of
4
+ # information an act may carry out of the estate. A tool's adapter declares, per argument, the classes its payload
5
+ # carries (`ToolSpec.carries`, `SkillExecutionContractV1.carries`); a mandate's payload-classes caveat
6
+ # (`PayloadClassesEnforcer`) names what the write MAY carry; the verifier compares the two. An argument whose class
7
+ # the caveat does not name is refused — an undeclared payload is not within it.
8
+ #
9
+ # THESE ARE CLASSES OF INFORMATION, NOT OF VALUES. `apval:EmailAddress` says how an argument is READ ("is this
10
+ # well-formed?"); `appay:ContactEmail` says what it DISCLOSES when it leaves ("someone's address is now in the
11
+ # message"). One value can carry several: a free-text body may carry an email address the person typed. The
12
+ # declaration is the ADAPTER AUTHOR's claim about the argument's kind, never an inspection of its content — a
13
+ # classifier reading bodies for phone numbers is exactly the heuristic this vocabulary exists to replace.
14
+ #
15
+ # The one class every free-text argument carries is appay:FreeText: the person's own words, which may carry
16
+ # anything. A mandate that permits FreeText permits what the person chose to write; a mandate that does not
17
+ # refuses a body the planner composed. That is the honest floor, and it is why "text" arguments are declared
18
+ # rather than left undeclared (undeclared = denied under any caveat).
19
+
20
+ @prefix appay: <https://agenticprimitives.dev/ns/payload#> .
21
+ @prefix apval: <https://agenticprimitives.dev/ns/value#> .
22
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
23
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
24
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
25
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
26
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
27
+
28
+ appay: a owl:Ontology ;
29
+ rdfs:label "Agentic Primitives — Payload classes (what a write carries)" ;
30
+ rdfs:comment "The kinds of information an act may carry out of the estate: declared per argument by a tool's adapter, permitted by a mandate's payload-classes caveat, compared by the verifier (spec 410 §7). Classes of DISCLOSURE, not of value syntax (apval:)." .
31
+
32
+ appay:PayloadClass a owl:Class ;
33
+ rdfs:label "PayloadClass" ;
34
+ rdfs:comment "A kind of information a write may carry. Every payload class is a subclass; a caveat names subclasses, never this root (naming the root would permit everything, which is the absence of a caveat said twice)." .
35
+
36
+ appay:FreeText a owl:Class ;
37
+ rdfs:subClassOf appay:PayloadClass ;
38
+ rdfs:label "FreeText" ;
39
+ rdfs:comment "The person's own words, or a body composed on their behalf: may carry anything. The floor every text argument declares. A mandate that does not permit it refuses composed bodies." .
40
+
41
+ appay:ContactEmail a owl:Class ;
42
+ rdfs:subClassOf appay:PayloadClass ;
43
+ rdfs:label "ContactEmail" ;
44
+ rdfs:comment "Someone's email address leaves with the write (an invitation carrying it; a message body that names one)." .
45
+
46
+ appay:ContactPhone a owl:Class ;
47
+ rdfs:subClassOf appay:PayloadClass ;
48
+ rdfs:label "ContactPhone" ;
49
+ rdfs:comment "Someone's phone number leaves with the write." .
50
+
51
+ appay:PostalAddress a owl:Class ;
52
+ rdfs:subClassOf appay:PayloadClass ;
53
+ rdfs:label "PostalAddress" ;
54
+ rdfs:comment "Where someone lives or receives mail leaves with the write." .
55
+
56
+ appay:EventDetails a owl:Class ;
57
+ rdfs:subClassOf appay:PayloadClass ;
58
+ rdfs:label "EventDetails" ;
59
+ rdfs:comment "When and where a gathering happens, and its title — what an invitation or a calendar entry carries." .
60
+
61
+ appay:GivingHistory a owl:Class ;
62
+ rdfs:subClassOf appay:PayloadClass ;
63
+ rdfs:label "GivingHistory" ;
64
+ rdfs:comment "What someone has given, to whom, when — a treasury's or a person's giving records." .
65
+
66
+ appay:Money a owl:Class ;
67
+ rdfs:subClassOf appay:PayloadClass ;
68
+ rdfs:label "Money" ;
69
+ rdfs:comment "Value moves with the write: an amount of an asset. The AMOUNT is bounded by the spend policy and the value caveat; this class says only that the write is a transfer, so a payload caveat that omits it refuses a payment outright." .
70
+
71
+ appay:File a owl:Class ;
72
+ rdfs:subClassOf appay:PayloadClass ;
73
+ rdfs:label "File" ;
74
+ rdfs:comment "A document or attachment leaves with the write, whatever it contains — the file's own classes are not inspected." .
75
+
76
+ appay:MembershipTerms a owl:Class ;
77
+ rdfs:subClassOf appay:PayloadClass ;
78
+ rdfs:label "MembershipTerms" ;
79
+ rdfs:comment "The terms of a membership or a household relation (a role, a kinship word) leave with the write." .
80
+
81
+ appay:PersonalPreference a owl:Class ;
82
+ rdfs:subClassOf appay:PayloadClass ;
83
+ rdfs:label "PersonalPreference" ;
84
+ rdfs:comment "Something the person wants remembered about how they are answered, what they call things, when their routines run — written into their own agent's records." .
85
+
86
+ appay:Instruction a owl:Class ;
87
+ rdfs:subClassOf appay:PayloadClass ;
88
+ rdfs:label "Instruction" ;
89
+ rdfs:comment "A standing instruction or a routine's rule: words that will shape future acts, written into the agent's own records." .
90
+
91
+ appay:CodeChange a owl:Class ;
92
+ rdfs:subClassOf appay:PayloadClass ;
93
+ rdfs:label "CodeChange" ;
94
+ rdfs:comment "Source files or a pull request leave with the write — a build artifact, a PR body." .