@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,284 @@
1
+ # C-box — SHACL shapes for discovery A-box projections.
2
+ # These are graph-ingestion shapes for public discovery data and restricted
3
+ # penetration findings. They are not authority checks.
4
+
5
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
6
+ @prefix apdisc: <https://agenticprimitives.dev/ns/discovery#> .
7
+ @prefix apreg: <https://agenticprimitives.dev/ns/registry#> .
8
+ @prefix apsec: <https://agenticprimitives.dev/ns/security-exposure#> .
9
+ @prefix aptrust: <https://agenticprimitives.dev/ns/trust#> .
10
+ @prefix prov: <http://www.w3.org/ns/prov#> .
11
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
12
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
13
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
14
+
15
+ apreg:RegistryEntryShape a sh:NodeShape ;
16
+ rdfs:label "RegistryEntry shape" ;
17
+ sh:targetClass apreg:RegistryEntry ;
18
+ sh:property [
19
+ sh:path apreg:registryId ;
20
+ sh:minCount 1 ;
21
+ sh:maxCount 1 ;
22
+ sh:datatype xsd:string ;
23
+ sh:message "RegistryEntry must have exactly one registryId."
24
+ ] ;
25
+ sh:property [
26
+ sh:path apreg:entryId ;
27
+ sh:minCount 1 ;
28
+ sh:maxCount 1 ;
29
+ sh:datatype xsd:string ;
30
+ sh:message "RegistryEntry must have exactly one entryId."
31
+ ] ;
32
+ sh:property [
33
+ sh:path apreg:subjectAgent ;
34
+ sh:minCount 1 ;
35
+ sh:maxCount 1 ;
36
+ sh:class ap:Agent ;
37
+ sh:message "RegistryEntry must point to exactly one Smart Agent subject."
38
+ ] ;
39
+ sh:property [
40
+ sh:path apreg:cardHash ;
41
+ sh:minCount 1 ;
42
+ sh:maxCount 1 ;
43
+ sh:datatype xsd:string ;
44
+ sh:pattern "^sha256:[0-9a-fA-F]{64}$" ;
45
+ sh:message "RegistryEntry.cardHash must be sha256:<64 hex>."
46
+ ] ;
47
+ sh:property [
48
+ sh:path apreg:hasBindingProof ;
49
+ sh:minCount 1 ;
50
+ sh:maxCount 1 ;
51
+ sh:class apreg:RegistryEntryBindingProof ;
52
+ sh:message "RegistryEntry must carry exactly one binding proof."
53
+ ] ;
54
+ sh:property [
55
+ sh:path apreg:bindingProofHash ;
56
+ sh:minCount 1 ;
57
+ sh:maxCount 1 ;
58
+ sh:datatype xsd:string ;
59
+ sh:pattern "^sha256:[0-9a-fA-F]{64}$" ;
60
+ sh:message "RegistryEntry.bindingProofHash must be sha256:<64 hex>."
61
+ ] ;
62
+ sh:property [
63
+ sh:path apreg:lifecycleStatus ;
64
+ sh:minCount 1 ;
65
+ sh:maxCount 1 ;
66
+ sh:class apreg:RegistryLifecycleStatus ;
67
+ sh:message "RegistryEntry must project exactly one lifecycle status."
68
+ ] ;
69
+ sh:property [
70
+ sh:path apreg:expiresAt ;
71
+ sh:maxCount 1 ;
72
+ sh:datatype xsd:dateTime ;
73
+ sh:message "RegistryEntry.expiresAt, if present, must be a single dateTime (absent = non-expiring)."
74
+ ] .
75
+
76
+ apreg:SignedAgentCardShape a sh:NodeShape ;
77
+ rdfs:label "SignedAgentCard shape" ;
78
+ sh:targetClass apreg:SignedAgentCard ;
79
+ sh:property [
80
+ sh:path apreg:cardHash ;
81
+ sh:minCount 1 ;
82
+ sh:maxCount 1 ;
83
+ sh:datatype xsd:string ;
84
+ sh:pattern "^sha256:[0-9a-fA-F]{64}$" ;
85
+ sh:message "SignedAgentCard.cardHash must be sha256:<64 hex>."
86
+ ] ;
87
+ sh:property [
88
+ sh:path apreg:cardSubject ;
89
+ sh:minCount 1 ;
90
+ sh:maxCount 1 ;
91
+ sh:class ap:Agent ;
92
+ sh:message "SignedAgentCard must point to exactly one Smart Agent subject."
93
+ ] .
94
+
95
+ apreg:RegistryEntryBindingProofShape a sh:NodeShape ;
96
+ rdfs:label "RegistryEntryBindingProof shape" ;
97
+ sh:targetClass apreg:RegistryEntryBindingProof ;
98
+ sh:property [
99
+ sh:path apreg:proofHash ;
100
+ sh:minCount 1 ;
101
+ sh:maxCount 1 ;
102
+ sh:datatype xsd:string ;
103
+ sh:pattern "^sha256:[0-9a-fA-F]{64}$" ;
104
+ sh:message "RegistryEntryBindingProof.proofHash must be sha256:<64 hex>."
105
+ ] ;
106
+ sh:property [
107
+ sh:path apreg:cardHash ;
108
+ sh:minCount 1 ;
109
+ sh:maxCount 1 ;
110
+ sh:datatype xsd:string ;
111
+ sh:pattern "^sha256:[0-9a-fA-F]{64}$" ;
112
+ sh:message "RegistryEntryBindingProof.cardHash must be sha256:<64 hex>."
113
+ ] .
114
+
115
+ apreg:ExternalRegistryFacetShape a sh:NodeShape ;
116
+ rdfs:label "ExternalRegistryFacet shape" ;
117
+ sh:targetClass apreg:ExternalRegistryFacet ;
118
+ sh:property [
119
+ sh:path apreg:externalSurface ;
120
+ sh:minCount 1 ;
121
+ sh:maxCount 1 ;
122
+ sh:in ("erc8004" "hcs10" "hcs11" "hcs14" "hcs26" "ans" "dns-aid" "oasf" "a2a" "mcp-registry" "nanda") ;
123
+ sh:message "ExternalRegistryFacet.externalSurface must be a known projection surface."
124
+ ] ;
125
+ sh:property [
126
+ sh:path apreg:externalIdentifier ;
127
+ sh:minCount 1 ;
128
+ sh:maxCount 1 ;
129
+ sh:datatype xsd:string ;
130
+ sh:message "ExternalRegistryFacet must have one external identifier."
131
+ ] ;
132
+ sh:property [
133
+ sh:path apreg:projectionOf ;
134
+ sh:minCount 1 ;
135
+ sh:message "ExternalRegistryFacet must point back to an AP-native projection target."
136
+ ] .
137
+
138
+ apdisc:CandidateQueryShape a sh:NodeShape ;
139
+ rdfs:label "CandidateQuery shape" ;
140
+ sh:targetClass apdisc:CandidateQuery ;
141
+ sh:property [
142
+ sh:path apdisc:queryHash ;
143
+ sh:minCount 1 ;
144
+ sh:maxCount 1 ;
145
+ sh:datatype xsd:string ;
146
+ sh:message "CandidateQuery must record the canonical query hash."
147
+ ] ;
148
+ sh:property [
149
+ sh:path apdisc:usesGraphSnapshot ;
150
+ sh:minCount 1 ;
151
+ sh:maxCount 1 ;
152
+ sh:class apdisc:GraphSnapshot ;
153
+ sh:message "CandidateQuery must cite the graph snapshot used."
154
+ ] ;
155
+ sh:property [
156
+ sh:path apdisc:usesInferenceProfile ;
157
+ sh:minCount 1 ;
158
+ sh:maxCount 1 ;
159
+ sh:class apdisc:InferenceProfile ;
160
+ sh:message "CandidateQuery must cite the inference profile used."
161
+ ] .
162
+
163
+ apdisc:MatchCandidateShape a sh:NodeShape ;
164
+ rdfs:label "MatchCandidate shape" ;
165
+ sh:targetClass apdisc:MatchCandidate ;
166
+ sh:property [
167
+ sh:path apdisc:candidateAgent ;
168
+ sh:minCount 1 ;
169
+ sh:maxCount 1 ;
170
+ sh:class ap:Agent ;
171
+ sh:message "MatchCandidate must cite exactly one candidate Smart Agent."
172
+ ] ;
173
+ sh:property [
174
+ sh:path apdisc:hasTrustDetermination ;
175
+ sh:minCount 1 ;
176
+ sh:maxCount 1 ;
177
+ sh:class apdisc:TrustDetermination ;
178
+ sh:message "MatchCandidate must include one trust determination."
179
+ ] ;
180
+ sh:property [
181
+ sh:path apdisc:hasEvidencePath ;
182
+ sh:minCount 1 ;
183
+ sh:class apdisc:EvidencePath ;
184
+ sh:message "MatchCandidate must cite at least one evidence path."
185
+ ] .
186
+
187
+ apdisc:TrustDeterminationShape a sh:NodeShape ;
188
+ rdfs:label "TrustDetermination shape" ;
189
+ sh:targetClass apdisc:TrustDetermination ;
190
+ sh:property [
191
+ sh:path apdisc:confidence ;
192
+ sh:minCount 1 ;
193
+ sh:maxCount 1 ;
194
+ sh:datatype xsd:decimal ;
195
+ sh:minInclusive 0 ;
196
+ sh:maxInclusive 1 ;
197
+ sh:message "TrustDetermination.confidence must be a decimal in [0, 1]."
198
+ ] ;
199
+ sh:property [
200
+ sh:path apdisc:hasEvidencePath ;
201
+ sh:minCount 1 ;
202
+ sh:class apdisc:EvidencePath ;
203
+ sh:message "TrustDetermination must cite evidence paths."
204
+ ] .
205
+
206
+ apsec:ExposureFindingShape a sh:NodeShape ;
207
+ rdfs:label "ExposureFinding shape" ;
208
+ sh:targetClass apsec:ExposureFinding ;
209
+ sh:property [
210
+ sh:path apsec:severity ;
211
+ sh:minCount 1 ;
212
+ sh:maxCount 1 ;
213
+ sh:class apsec:Severity ;
214
+ sh:message "ExposureFinding must have one severity."
215
+ ] ;
216
+ sh:property [
217
+ sh:path apsec:findingStatus ;
218
+ sh:minCount 1 ;
219
+ sh:maxCount 1 ;
220
+ sh:class apsec:FindingStatus ;
221
+ sh:message "ExposureFinding must have one triage status."
222
+ ] ;
223
+ sh:property [
224
+ sh:path apsec:affectsAgent ;
225
+ sh:minCount 1 ;
226
+ sh:class ap:Agent ;
227
+ sh:message "ExposureFinding must cite affected Smart Agent(s)."
228
+ ] ;
229
+ sh:property [
230
+ sh:path apsec:basedOnEvidencePath ;
231
+ sh:minCount 1 ;
232
+ sh:class apdisc:EvidencePath ;
233
+ sh:message "ExposureFinding must cite an evidence path."
234
+ ] .
235
+
236
+ # ── Offering (spec 286) ────────────────────────────────────────────────────────────────────────
237
+ # `apdisc:OfferingShape` has been named by the indexer (`SHAPE.Offering`, recorded as the facet's
238
+ # shapeIri on every crawl) since spec 286, and has never existed. This is it.
239
+ #
240
+ # WHAT IT CONSTRAINS, AND WHAT IT DELIBERATELY DOES NOT. Everything an Offering says about ITSELF —
241
+ # effect, exposure, family, status, version, name, blurb — is the host's own claim about its own
242
+ # service, so there is no codelist this repo could impose that would be more than a guess, and a
243
+ # pinned value space would make an unrecognised value indistinguishable from an absent one. Those
244
+ # properties are therefore unconstrained here ON PURPOSE.
245
+ #
246
+ # What IS constrained is the part the substrate itself produces and consumes: identity (skillId,
247
+ # ofAgent), the two-valued lexical space the MCP reads with `=== 'true'`, and the three provenance
248
+ # properties without which a crawled assertion cannot be aged, diffed or challenged.
249
+ apdisc:OfferingShape a sh:NodeShape ;
250
+ rdfs:label "Offering shape" ;
251
+ sh:targetClass apdisc:Offering ;
252
+ sh:property [
253
+ sh:path apdisc:skillId ;
254
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
255
+ sh:message "Offering must carry exactly one skillId — it is the offering's identity component (the A-box IRI derives from it), and the projector drops any card entry without one."
256
+ ] ;
257
+ sh:property [
258
+ sh:path apdisc:ofAgent ;
259
+ sh:minCount 1 ; sh:maxCount 1 ; sh:class ap:Agent ;
260
+ sh:message "Offering must back-link to exactly one Agent. An offering advertising two agents' services is two offerings, and a single-tenant crawl already requires the card's self-reported agentId to equal the SA being crawled."
261
+ ] ;
262
+ sh:property [
263
+ sh:path apdisc:hasInputSchema ;
264
+ sh:maxCount 1 ; sh:in ( "true" "false" ) ;
265
+ sh:message "Offering.hasInputSchema, if present, is the lexical string 'true' or 'false'. The MCP reads it as `value === 'true'`, so ANY third value reads as false — a silent miss, which is exactly what ADR-0013 forbids. The set is pinned here rather than in the T-box because it is a fact about the live serialization, not about the concept."
266
+ ] ;
267
+ # ── Provenance of the crawl. A host-asserted fact with no observation point and no observation
268
+ # time is a rumour with a subject IRI; these three are what make an Offering evidence.
269
+ sh:property [
270
+ sh:path apdisc:sourceEndpoint ;
271
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
272
+ sh:message "Offering must record the endpoint it was crawled from. Without it, 'who asserted this?' has no answer."
273
+ ] ;
274
+ sh:property [
275
+ sh:path apdisc:observedAt ;
276
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:integer ;
277
+ sh:message "Offering must record WHEN it was observed, in unix seconds (xsd:integer — the projector writes a bare Turtle integer). Without it nothing can decay, and a 2019 advertisement ranks as fresh."
278
+ ] ;
279
+ sh:property [
280
+ sh:path apdisc:cardDigest ;
281
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
282
+ sh:pattern "^sha256:[0-9a-f]{64}$" ;
283
+ sh:message "Offering.cardDigest must be sha256:<64 lowercase hex> over the raw card body. It is what makes 'which advertisements must be re-examined now this host's card changed?' answerable without having stored the card — the same role a pinned playbook content hash plays in a realization contract."
284
+ ] .
@@ -0,0 +1,92 @@
1
+ # C-box — SHACL for the FamilyOffice (apfo:) RELATIONSHIP archetypes. One NodeShape
2
+ # per apfo relationship class, validating the WELL-FORMEDNESS of that relationship's
3
+ # Situation: its agent role bindings (the who) plus its typed body (the what kind),
4
+ # where the kind is pinned to a CLOSED cbox SKOS scheme via sh:in ( … ). Mirrors
5
+ # cbox/capability-catalog-shapes.shacl.ttl (a shape per class, an sh:message per
6
+ # constraint, the concept IRIs inlined) — the codelists these shapes constrain live
7
+ # in cbox/familyoffice-vocabulary.ttl and the classes + role/body predicates in
8
+ # tbox/familyoffice.ttl.
9
+ #
10
+ # These are STRUCTURE shapes, not authority: a conforming Guardianship is a
11
+ # well-formed guardianship RECORD, never a grant of legal control (control rides
12
+ # the delegation/entitlement layer, never an apfo: Situation). The New City portal
13
+ # derives a flat ShapeDef from each of these NodeShapes and validates a relationship
14
+ # record with it BEFORE a vault-first write — so a malformed relationship (a missing
15
+ # ward, an ownership kind outside the scheme) fails at the app boundary, not after it
16
+ # has already been persisted to a vault.
17
+
18
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
19
+ @prefix apfo: <https://agenticprimitives.dev/ns/familyoffice#> .
20
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
21
+
22
+ # ─── Guardianship — a directed guardian→ward oversight ─────────────────────
23
+ apfo:GuardianshipShape a sh:NodeShape ;
24
+ sh:targetClass apfo:Guardianship ;
25
+ rdfs:label "GuardianshipShape" ;
26
+ sh:property [ sh:path apfo:guardian ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
27
+ sh:message "A guardianship binds exactly one apfo:guardian (an agent IRI — the address IS the identity, never a name literal)." ] ;
28
+ sh:property [ sh:path apfo:ward ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
29
+ sh:message "A guardianship binds exactly one apfo:ward. A guardian with no ward is not a guardianship — the fragmented old encoding (a kinship link + a 0-bps custodial edge) is exactly what this canonical record replaces." ] ;
30
+ sh:property [ sh:path apfo:hasRoleKind ; sh:minCount 1 ; sh:maxCount 1 ;
31
+ sh:in ( apfo:LegalGuardian apfo:Custodian apfo:PowerOfAttorney ) ;
32
+ sh:message "The body must name exactly one guardianship roleKind from the closed cbox scheme: apfo:LegalGuardian (the default), apfo:Custodian, or apfo:PowerOfAttorney. A bare enum or a concept outside the scheme is rejected." ] .
33
+
34
+ # ─── Trusteeship — a trustee's fiduciary role over a trust entity ──────────
35
+ apfo:TrusteeshipShape a sh:NodeShape ;
36
+ sh:targetClass apfo:Trusteeship ;
37
+ rdfs:label "TrusteeshipShape" ;
38
+ sh:property [ sh:path apfo:trustee ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
39
+ sh:message "A trusteeship binds exactly one apfo:trustee (an agent IRI)." ] ;
40
+ sh:property [ sh:path apfo:trust ; sh:minCount 1 ; sh:maxCount 1 ;
41
+ sh:message "A trusteeship binds exactly one apfo:trust — the trust entity the trustee is fiduciary over." ] ;
42
+ sh:property [ sh:path apfo:hasRoleKind ; sh:minCount 1 ; sh:maxCount 1 ;
43
+ sh:in ( apfo:Trustee apfo:SuccessorTrustee ) ;
44
+ sh:message "The body must name exactly one trusteeship roleKind from the closed cbox scheme: apfo:Trustee or apfo:SuccessorTrustee." ] .
45
+
46
+ # ─── Ownership — an owner's interest in an asset or entity ─────────────────
47
+ apfo:OwnershipShape a sh:NodeShape ;
48
+ sh:targetClass apfo:Ownership ;
49
+ rdfs:label "OwnershipShape" ;
50
+ sh:property [ sh:path apfo:owner ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
51
+ sh:message "An ownership binds exactly one apfo:owner (an agent IRI)." ] ;
52
+ sh:property [ sh:path apfo:ownedAsset ; sh:minCount 1 ; sh:maxCount 1 ;
53
+ sh:message "An ownership binds exactly one apfo:ownedAsset — the asset or entity the interest is in." ] ;
54
+ sh:property [ sh:path apfo:hasOwnershipKind ; sh:minCount 1 ; sh:maxCount 1 ;
55
+ sh:in ( apfo:SoleOwnership apfo:JointOwnership apfo:CommunityProperty apfo:BeneficialInterest apfo:TrustOwnership ) ;
56
+ sh:message "The body must name exactly one ownershipKind from the closed cbox scheme: apfo:SoleOwnership, apfo:JointOwnership, apfo:CommunityProperty, apfo:BeneficialInterest, or apfo:TrustOwnership." ] .
57
+
58
+ # ─── SpouseRelation — a symmetric spousal kinship ─────────────────────────
59
+ apfo:SpouseRelationShape a sh:NodeShape ;
60
+ sh:targetClass apfo:SpouseRelation ;
61
+ rdfs:label "SpouseRelationShape" ;
62
+ sh:property [ sh:path apfo:spouseA ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
63
+ sh:message "A spouse relation binds exactly one apfo:spouseA (an agent IRI). The A/B slots are a canonical ordering for a stable hash, not a rank." ] ;
64
+ sh:property [ sh:path apfo:spouseB ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
65
+ sh:message "A spouse relation binds exactly one apfo:spouseB (an agent IRI)." ] ;
66
+ sh:property [ sh:path apfo:hasKinshipKind ; sh:minCount 1 ; sh:maxCount 1 ;
67
+ sh:in ( apfo:Spouse ) ;
68
+ sh:message "The body of a spouse relation must name the apfo:Spouse kinshipKind concept, and only it." ] .
69
+
70
+ # ─── ParentChildRelation — a directed parent→child kinship ────────────────
71
+ apfo:ParentChildRelationShape a sh:NodeShape ;
72
+ sh:targetClass apfo:ParentChildRelation ;
73
+ rdfs:label "ParentChildRelationShape" ;
74
+ sh:property [ sh:path apfo:parent ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
75
+ sh:message "A parent-child relation binds exactly one apfo:parent (an agent IRI)." ] ;
76
+ sh:property [ sh:path apfo:child ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
77
+ sh:message "A parent-child relation binds exactly one apfo:child (an agent IRI)." ] ;
78
+ sh:property [ sh:path apfo:hasKinshipKind ; sh:minCount 1 ; sh:maxCount 1 ;
79
+ sh:in ( apfo:Parent apfo:Child apfo:Grandparent apfo:StepParent apfo:Adoptive ) ;
80
+ sh:message "The body must name exactly one directed-kinship concept from the closed cbox scheme: apfo:Parent, apfo:Child, apfo:Grandparent, apfo:StepParent, or apfo:Adoptive." ] .
81
+
82
+ # ─── SiblingRelation — a symmetric sibling kinship ────────────────────────
83
+ apfo:SiblingRelationShape a sh:NodeShape ;
84
+ sh:targetClass apfo:SiblingRelation ;
85
+ rdfs:label "SiblingRelationShape" ;
86
+ sh:property [ sh:path apfo:siblingA ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
87
+ sh:message "A sibling relation binds exactly one apfo:siblingA (an agent IRI). The A/B slots are a canonical ordering for a stable hash, not a rank." ] ;
88
+ sh:property [ sh:path apfo:siblingB ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ;
89
+ sh:message "A sibling relation binds exactly one apfo:siblingB (an agent IRI)." ] ;
90
+ sh:property [ sh:path apfo:hasKinshipKind ; sh:minCount 1 ; sh:maxCount 1 ;
91
+ sh:in ( apfo:Sibling ) ;
92
+ sh:message "The body of a sibling relation must name the apfo:Sibling kinshipKind concept, and only it." ] .
@@ -0,0 +1,48 @@
1
+ # C-box — FamilyOffice controlled vocabularies (apfo:). Closed SKOS codelists for
2
+ # kinship kinds, fiduciary/oversight role kinds, and ownership kinds — the concept
3
+ # values an apfo: relationship Situation names in its body (the A-box→C-box link).
4
+ # Mirrors cbox/scope-vocabulary.ttl. Deliberately coarse, cross-party classes.
5
+
6
+ @prefix apfo: <https://agenticprimitives.dev/ns/familyoffice#> .
7
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
8
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
9
+
10
+ # ─── kinshipKind — the kind of family tie ─────────────────────────────────
11
+ apfo:kinshipKind a skos:ConceptScheme ;
12
+ rdfs:label "kinshipKind" ;
13
+ rdfs:comment "The kind of kinship a Kinship situation asserts. Symmetric kinds (spouse/sibling) vs directed (parent/child) — see the class hierarchy in tbox/familyoffice.ttl." ;
14
+ skos:hasTopConcept apfo:Spouse, apfo:Parent, apfo:Child, apfo:Sibling,
15
+ apfo:Grandparent, apfo:StepParent, apfo:Adoptive .
16
+ apfo:Spouse a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "spouse" .
17
+ apfo:Parent a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "parent" .
18
+ apfo:Child a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "child" .
19
+ apfo:Sibling a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "sibling" .
20
+ apfo:Grandparent a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "grandparent" .
21
+ apfo:StepParent a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "step-parent" .
22
+ apfo:Adoptive a skos:Concept ; skos:inScheme apfo:kinshipKind ; skos:prefLabel "adoptive parent" .
23
+
24
+ # ─── roleKind — fiduciary / oversight roles (guardianship, trusteeship, estate) ──
25
+ apfo:roleKind a skos:ConceptScheme ;
26
+ rdfs:label "roleKind" ;
27
+ rdfs:comment "The fiduciary/oversight role a Guardianship or Trusteeship asserts. LegalGuardian is the guardianship default." ;
28
+ skos:hasTopConcept apfo:LegalGuardian, apfo:Trustee, apfo:SuccessorTrustee,
29
+ apfo:Beneficiary, apfo:PowerOfAttorney, apfo:Custodian, apfo:Executor .
30
+ apfo:LegalGuardian a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "legal guardian" .
31
+ apfo:Trustee a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "trustee" .
32
+ apfo:SuccessorTrustee a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "successor trustee" .
33
+ apfo:Beneficiary a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "beneficiary" .
34
+ apfo:PowerOfAttorney a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "power of attorney" .
35
+ apfo:Custodian a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "custodian" .
36
+ apfo:Executor a skos:Concept ; skos:inScheme apfo:roleKind ; skos:prefLabel "executor" .
37
+
38
+ # ─── ownershipKind — the kind of ownership interest ───────────────────────
39
+ apfo:ownershipKind a skos:ConceptScheme ;
40
+ rdfs:label "ownershipKind" ;
41
+ rdfs:comment "The kind of ownership interest an Ownership situation asserts." ;
42
+ skos:hasTopConcept apfo:SoleOwnership, apfo:JointOwnership, apfo:CommunityProperty,
43
+ apfo:BeneficialInterest, apfo:TrustOwnership .
44
+ apfo:SoleOwnership a skos:Concept ; skos:inScheme apfo:ownershipKind ; skos:prefLabel "sole" .
45
+ apfo:JointOwnership a skos:Concept ; skos:inScheme apfo:ownershipKind ; skos:prefLabel "joint" .
46
+ apfo:CommunityProperty a skos:Concept ; skos:inScheme apfo:ownershipKind ; skos:prefLabel "community property" .
47
+ apfo:BeneficialInterest a skos:Concept ; skos:inScheme apfo:ownershipKind ; skos:prefLabel "beneficial" .
48
+ apfo:TrustOwnership a skos:Concept ; skos:inScheme apfo:ownershipKind ; skos:prefLabel "trust-held" .
@@ -0,0 +1,36 @@
1
+ # C-box — geo controlled vocabularies (spec 251). Closed SKOS codelists for the generic
2
+ # geo substrate: geo feature KINDS (on-chain-bound) + geo RELATIONS (off-chain claim SDK).
3
+ #
4
+ # LOCKSTEP (ADR-0009): the on-chain `GeoFeatureRegistry.KIND_*` constants equal
5
+ # keccak256(<the geoKind concept URI>) declared here; asserted by the lockstep gate.
6
+ #
7
+ # NEUTRAL public geography ONLY (spec 251 GFR-07). A feature is a generic public place —
8
+ # never tagged with operational/sensitivity/ministry data. Sensitivity is an OFF-chain
9
+ # app policy OVER neutral features. The agent↔feature ASSOCIATION is an off-chain vault
10
+ # credential, never on chain; there is NO on-chain skill↔geo mapping.
11
+
12
+ @prefix apg: <https://agenticprimitives.dev/ns/geo#> .
13
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
14
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
15
+
16
+ # ─── geoKind — 5 values, ON-CHAIN-BOUND (GeoFeatureRegistry.KIND_*) ─────────
17
+ apg:geoKind a skos:ConceptScheme ;
18
+ rdfs:label "geoKind" ;
19
+ rdfs:comment "The on-chain-bound geo-feature kind. keccak256 of each concept URI equals the matching GeoFeatureRegistry.KIND_* constant (ADR-0009 lockstep). Generic public geography only." ;
20
+ skos:hasTopConcept apg:Planet, apg:Region, apg:Country, apg:AdminArea, apg:Custom .
21
+ apg:Planet a skos:Concept ; skos:inScheme apg:geoKind ; skos:prefLabel "planet" .
22
+ apg:Region a skos:Concept ; skos:inScheme apg:geoKind ; skos:prefLabel "region" .
23
+ apg:Country a skos:Concept ; skos:inScheme apg:geoKind ; skos:prefLabel "country" .
24
+ apg:AdminArea a skos:Concept ; skos:inScheme apg:geoKind ; skos:prefLabel "admin-area" .
25
+ apg:Custom a skos:Concept ; skos:inScheme apg:geoKind ; skos:prefLabel "custom" .
26
+
27
+ # ─── geoRelation — used by the OFF-CHAIN geo claim credential (not on chain) ──
28
+ apg:geoRelation a skos:ConceptScheme ;
29
+ rdfs:label "geoRelation" ;
30
+ rdfs:comment "Relation a claim credential asserts between a subject SA and a geo feature. Off chain only; never an on-chain row (it would leak operational association)." ;
31
+ skos:hasTopConcept apg:servesWithin, apg:operatesIn, apg:licensedIn, apg:residentOf, apg:originIn .
32
+ apg:servesWithin a skos:Concept ; skos:inScheme apg:geoRelation ; skos:prefLabel "servesWithin" .
33
+ apg:operatesIn a skos:Concept ; skos:inScheme apg:geoRelation ; skos:prefLabel "operatesIn" .
34
+ apg:licensedIn a skos:Concept ; skos:inScheme apg:geoRelation ; skos:prefLabel "licensedIn" .
35
+ apg:residentOf a skos:Concept ; skos:inScheme apg:geoRelation ; skos:prefLabel "residentOf" .
36
+ apg:originIn a skos:Concept ; skos:inScheme apg:geoRelation ; skos:prefLabel "originIn" .
@@ -0,0 +1,22 @@
1
+ # C-box — skill layer disambiguation (ADR-0050).
2
+ # Use aps:skillLayer to tag which sense of "skill" applies in prose, tooling, and adapters.
3
+
4
+ @prefix aps: <https://agenticprimitives.dev/ns/skill#> .
5
+ @prefix apguide: <https://agenticprimitives.dev/ns/guidance#> .
6
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
7
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
8
+
9
+ aps:skillLayer a skos:ConceptScheme ;
10
+ rdfs:label "skillLayer" ;
11
+ rdfs:comment "Which architectural layer a 'skill' reference belongs to — never collapse layers." ;
12
+ skos:hasTopConcept aps:GuidanceSkillLayer, aps:ExecutableSkillLayer .
13
+
14
+ aps:GuidanceSkillLayer a skos:Concept ; skos:inScheme aps:skillLayer ;
15
+ skos:prefLabel "guidance" ;
16
+ rdfs:seeAlso apguide:AgentSkillPackage ;
17
+ rdfs:comment "Agent Skill packages (SKILL.md) — steers coding agents only." .
18
+
19
+ aps:ExecutableSkillLayer a skos:Concept ; skos:inScheme aps:skillLayer ;
20
+ skos:prefLabel "executable" ;
21
+ rdfs:seeAlso aps:CapabilityDefinition , aps:Skill , aps:SkillClaim ;
22
+ rdfs:comment "Smart Agent capabilities: CapabilityDefinition, claims, OASF/A2A/MCP projections." .