@agenticprimitives/ontology 1.0.0-alpha.21 → 1.0.0-alpha.23
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.
- package/README.md +11 -0
- package/cbox/card-projection-shapes.shacl.ttl +216 -0
- package/cbox/controlled-vocabularies.ttl +172 -4
- package/cbox/naming-registry-shapes.shacl.ttl +272 -0
- package/cbox/org-team-shapes.shacl.ttl +184 -0
- package/cbox/registry-vocabulary.ttl +86 -0
- package/cbox/run-provenance-shapes.shacl.ttl +172 -0
- package/context.jsonld +7 -1
- package/dist/arg-types.d.ts +60 -0
- package/dist/arg-types.d.ts.map +1 -0
- package/dist/arg-types.js +143 -0
- package/dist/arg-types.js.map +1 -0
- package/dist/artifacts.d.ts +4 -2
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +22 -0
- package/dist/artifacts.js.map +1 -1
- package/dist/contact-fields.d.ts +28 -0
- package/dist/contact-fields.d.ts.map +1 -0
- package/dist/contact-fields.js +38 -0
- package/dist/contact-fields.js.map +1 -0
- package/dist/decisions.d.ts +69 -0
- package/dist/decisions.d.ts.map +1 -0
- package/dist/decisions.js +98 -0
- package/dist/decisions.js.map +1 -0
- package/dist/household.d.ts +19 -0
- package/dist/household.d.ts.map +1 -0
- package/dist/household.js +41 -0
- package/dist/household.js.map +1 -0
- package/dist/index.d.ts +230 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +275 -1
- package/dist/index.js.map +1 -1
- package/dist/party-roles.d.ts +106 -0
- package/dist/party-roles.d.ts.map +1 -0
- package/dist/party-roles.js +305 -0
- package/dist/party-roles.js.map +1 -0
- package/dist/plan-shapes.d.ts +18 -0
- package/dist/plan-shapes.d.ts.map +1 -0
- package/dist/plan-shapes.js +38 -0
- package/dist/plan-shapes.js.map +1 -0
- package/dist/relations.d.ts +44 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +104 -0
- package/dist/relations.js.map +1 -0
- package/dist/run-provenance-context.d.ts +211 -0
- package/dist/run-provenance-context.d.ts.map +1 -0
- package/dist/run-provenance-context.js +219 -0
- package/dist/run-provenance-context.js.map +1 -0
- package/dist/vault-records.d.ts +74 -0
- package/dist/vault-records.d.ts.map +1 -0
- package/dist/vault-records.js +330 -0
- package/dist/vault-records.js.map +1 -0
- package/mappings/agent-discovery-standards.ttl +24 -3
- package/mappings/collaboration-crosswalk-organization.ttl +22 -0
- package/mappings/collaboration-crosswalk-skills.ttl +5 -0
- package/package.json +4 -2
- package/run-provenance.jsonld +106 -0
- package/tbox/actor-context.ttl +11 -0
- package/tbox/agent-resolution.ttl +6 -6
- package/tbox/card-projection.ttl +350 -0
- package/tbox/contact.ttl +61 -0
- package/tbox/context.ttl +114 -0
- package/tbox/coordination.ttl +17 -0
- package/tbox/core.ttl +232 -12
- package/tbox/execution.ttl +168 -0
- package/tbox/household.ttl +142 -0
- package/tbox/interaction.ttl +13 -0
- package/tbox/naming.ttl +114 -0
- package/tbox/org.ttl +188 -4
- package/tbox/profile.ttl +7 -0
- package/tbox/prov-imports.ttl +65 -0
- package/tbox/registry.ttl +159 -4
- package/tbox/skills.ttl +62 -0
- package/tbox/values.ttl +81 -0
package/README.md
CHANGED
|
@@ -55,6 +55,17 @@ Bounded to generic AP primitives: identity, credential, custody, delegation, aud
|
|
|
55
55
|
|
|
56
56
|
The discovery ontology deliberately builds from the domain-derived vocabulary shape in Agent Explorer's `apps/ontology/ontology` modules — `core.ttl`, `discovery.ttl`, `descriptors.ttl`, `erc8004.ttl`, `hol.ttl`, `oasf.ttl`, and `trust.ttl` — while refining it into AP-native namespaces rooted in PROV-O and DOLCE+DnS/DUL.
|
|
57
57
|
|
|
58
|
+
### Module map (additions by spec)
|
|
59
|
+
|
|
60
|
+
| Concern | T-box | C-box |
|
|
61
|
+
|---------|-------|-------|
|
|
62
|
+
| Identity, kinds, derived types | `tbox/core.ttl`, `tbox/identity.ttl` | `cbox/controlled-vocabularies.ttl`, `cbox/canonical-agent-id-shape.shacl.ttl` |
|
|
63
|
+
| Typed naming, registry core (spec 346) | `tbox/naming.ttl`, `tbox/registry.ttl` | `cbox/naming-registry-shapes.shacl.ttl`, `cbox/registry-vocabulary.ttl` |
|
|
64
|
+
| Capabilities, claims, taxonomy mappings (specs 251/325/347 §5) | `tbox/skills.ttl` (`aps:SkillTaxonomyMapping` — `relation` = a SKOS mapping property) | `cbox/skill-vocabulary.ttl`, `cbox/capability-catalog-shapes.shacl.ttl` |
|
|
65
|
+
| **Canonical profile → A2A Agent Card → projection → publication → external identity binding (spec 347 §11; ADR-0062)** | `tbox/card-projection.ttl` — a second module of the `ap:` core namespace; PROV-O-grounded (generation/publication ⊑ `prov:Activity`; artifact/releases ⊑ `prov:Entity`; publisher/adapter ⊑ `prov:SoftwareAgent`); "canonical agent" ≡ `ap:Agent`, no second class | `cbox/card-projection-shapes.shacl.ttl` — public card metadata; projection provenance (all **eight** digests as named sub-properties of `ap:hasDigest`); external binding; **public disclosure boundary** (SPARQL-targeted at `ap:disclosureScope "public"`: no loopback / private / link-local endpoint, no vault locator; absence of scope is private). Codelists `ap:lossCategoryScheme`, card-release / projection-instance / binding lifecycles, `ap:bindingVerificationStateScheme`, `ap:digestRoleScheme` in `cbox/controlled-vocabularies.ttl` |
|
|
66
|
+
| Agentic interaction (spec 340) | `tbox/interaction.ttl` | `cbox/interaction-shapes.shacl.ttl`, `cbox/interaction-vocabulary.ttl` |
|
|
67
|
+
| Coordination / engagement / execution (specs 332/336/330) | `tbox/coordination.ttl`, `tbox/engagement.ttl`, `tbox/execution.ttl`, `tbox/plan.ttl` | — |
|
|
68
|
+
|
|
58
69
|
## What this is NOT
|
|
59
70
|
|
|
60
71
|
- Not the TS types — `@agenticprimitives/types` owns `CanonicalAgentId`, `Assurance`, etc.; this package names the IRIs. One brand.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# C-box — SHACL shapes for the A2A Agent Card, projection provenance, external identity bindings
|
|
2
|
+
# and the public/private disclosure boundary (spec 347 §11; ADR-0062).
|
|
3
|
+
#
|
|
4
|
+
# STRUCTURE, NEVER PERMISSION — AND NEVER AUTHORITY. A conformant card is still only a description;
|
|
5
|
+
# a conformant artifact is still only a payload; a conformant binding is evidence that an external
|
|
6
|
+
# record points at the SA, never a grant. What these refuse is a record that misleads on its face:
|
|
7
|
+
#
|
|
8
|
+
# a card with no interface URL — "how to interact" that says nothing
|
|
9
|
+
# an artifact missing one of eight digests — provenance with a hole nobody can audit later
|
|
10
|
+
# an artifact with no loss report link — (not refused: an EMPTY report is a statement; what is
|
|
11
|
+
# refused is a loss with a made-up category)
|
|
12
|
+
# a binding with no verification state — 'unverified' silently read as 'verified'
|
|
13
|
+
# a PUBLIC artifact naming localhost / 10.x — a private endpoint about to be published
|
|
14
|
+
# a PUBLIC artifact carrying a vault ref — a private locator leaking into a registry
|
|
15
|
+
#
|
|
16
|
+
# THE EIGHT DIGESTS are modelled as eight named DATATYPE sub-properties of ap:hasDigest (see the
|
|
17
|
+
# T-box note): eight sh:property blocks with minCount 1 say "all eight" in SHACL-Core, with no SPARQL.
|
|
18
|
+
#
|
|
19
|
+
# THE DISCLOSURE BOUNDARY targets ONLY nodes marked ap:disclosureScope "public" (a SPARQL target;
|
|
20
|
+
# the house harness registers shacl-engine's sparql targetResolvers). Absence of the scope is
|
|
21
|
+
# PRIVATE: an unmarked artifact is exempt here and MUST NOT be published. The endpoint checks are
|
|
22
|
+
# sh:not/sh:pattern negations; the vault-reference check is its own NodeShape because it scans every
|
|
23
|
+
# literal one hop deep, which needs SPARQL, and shacl-engine compiles one sh:sparql per shape.
|
|
24
|
+
#
|
|
25
|
+
# SUBCLASS HANDLING. sh:class ap:Agent relies on the rdfs:subClassOf* closure the harness materializes.
|
|
26
|
+
|
|
27
|
+
@prefix ap: <https://agenticprimitives.dev/ns/core#> .
|
|
28
|
+
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
29
|
+
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
30
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
31
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
32
|
+
|
|
33
|
+
# ─── (1) Public card metadata ───────────────────────────────────────────────
|
|
34
|
+
|
|
35
|
+
ap:PublicCardMetadataShape a sh:NodeShape ;
|
|
36
|
+
rdfs:label "Public A2A card metadata shape" ;
|
|
37
|
+
sh:targetClass ap:A2AAgentCard ;
|
|
38
|
+
|
|
39
|
+
sh:property [
|
|
40
|
+
sh:path ap:describesAgent ;
|
|
41
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:class ap:Agent ;
|
|
42
|
+
sh:message "An A2AAgentCard describes exactly one canonical Agent — the card points AT the SA; it is never the identity (ADR-0010, ADR-0062 §2)." ;
|
|
43
|
+
] ;
|
|
44
|
+
sh:property [
|
|
45
|
+
sh:path ap:cardName ;
|
|
46
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
47
|
+
sh:message "An A2AAgentCard MUST carry exactly one non-empty cardName (A2A 1.0 AgentCard.name)." ;
|
|
48
|
+
] ;
|
|
49
|
+
sh:property [
|
|
50
|
+
sh:path ap:interfaceUrl ;
|
|
51
|
+
sh:minCount 1 ; sh:datatype xsd:anyURI ;
|
|
52
|
+
sh:message "An A2AAgentCard MUST list at least one interface URL (supportedInterfaces) — a card that says nothing about how to interact describes nothing (spec 347 §4.4)." ;
|
|
53
|
+
] ;
|
|
54
|
+
sh:property [
|
|
55
|
+
sh:path ap:protocolVersion ;
|
|
56
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
57
|
+
sh:message "An A2AAgentCard MUST pin exactly one protocolVersion." ;
|
|
58
|
+
] ;
|
|
59
|
+
sh:property [
|
|
60
|
+
sh:path ap:disclosureScope ;
|
|
61
|
+
sh:maxCount 1 ; sh:in ( "public" "private" ) ;
|
|
62
|
+
sh:message "disclosureScope is 'public' or 'private'; absence is private." ;
|
|
63
|
+
] .
|
|
64
|
+
|
|
65
|
+
# ─── (2) Projection provenance — all eight digests ─────────────────────────
|
|
66
|
+
|
|
67
|
+
ap:ProjectionProvenanceShape a sh:NodeShape ;
|
|
68
|
+
rdfs:label "Projection provenance shape" ;
|
|
69
|
+
sh:targetClass ap:ProjectionArtifact ;
|
|
70
|
+
|
|
71
|
+
sh:property [
|
|
72
|
+
sh:path ap:describesAgent ;
|
|
73
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:class ap:Agent ;
|
|
74
|
+
sh:message "A ProjectionArtifact describes exactly one canonical Agent." ;
|
|
75
|
+
] ;
|
|
76
|
+
sh:property [
|
|
77
|
+
sh:path ap:projectsTo ;
|
|
78
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
79
|
+
sh:message "A ProjectionArtifact MUST name the target family it was projected for (ap:projectsTo)." ;
|
|
80
|
+
] ;
|
|
81
|
+
sh:property [
|
|
82
|
+
sh:path prov:wasGeneratedBy ;
|
|
83
|
+
sh:minCount 1 ; sh:class ap:ProjectionGeneration ;
|
|
84
|
+
sh:message "A ProjectionArtifact MUST record the ProjectionGeneration that produced it (prov:wasGeneratedBy) — a payload with no generating activity has no provenance." ;
|
|
85
|
+
] ;
|
|
86
|
+
sh:property [
|
|
87
|
+
sh:path ap:hasLoss ;
|
|
88
|
+
sh:class ap:ProjectionLoss ;
|
|
89
|
+
sh:message "Every ap:hasLoss value MUST be a ProjectionLoss." ;
|
|
90
|
+
] ;
|
|
91
|
+
|
|
92
|
+
# The eight digests. Each exactly once, each a sha256.
|
|
93
|
+
sh:property [ sh:path ap:hasSourceDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
94
|
+
sh:message "Digest 1/8 missing or malformed: hasSourceDigest (the ProjectionInputBundle) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
95
|
+
sh:property [ sh:path ap:hasDefinitionDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
96
|
+
sh:message "Digest 2/8 missing or malformed: hasDefinitionDigest (the ProjectionDefinition) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
97
|
+
sh:property [ sh:path ap:hasTargetSpecificationDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
98
|
+
sh:message "Digest 3/8 missing or malformed: hasTargetSpecificationDigest (the pinned target spec) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
99
|
+
sh:property [ sh:path ap:hasAdapterDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
100
|
+
sh:message "Digest 4/8 missing or malformed: hasAdapterDigest (the adapter build) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
101
|
+
sh:property [ sh:path ap:hasConfigurationDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
102
|
+
sh:message "Digest 5/8 missing or malformed: hasConfigurationDigest (the instance configuration) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
103
|
+
sh:property [ sh:path ap:hasArtifactDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
104
|
+
sh:message "Digest 6/8 missing or malformed: hasArtifactDigest (the emitted payload) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
105
|
+
sh:property [ sh:path ap:hasCanonicalProfileDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
106
|
+
sh:message "Digest 7/8 missing or malformed: hasCanonicalProfileDigest (the profile release) — every artifact records all eight digests (spec 347 §6.4)." ] ;
|
|
107
|
+
sh:property [ sh:path ap:hasSelectedCardDigest ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "^sha256:[0-9a-f]{64}$" ;
|
|
108
|
+
sh:message "Digest 8/8 missing or malformed: hasSelectedCardDigest (the released card consumed) — every artifact records all eight digests (spec 347 §6.4)." ] .
|
|
109
|
+
|
|
110
|
+
ap:ProjectionLossShape a sh:NodeShape ;
|
|
111
|
+
rdfs:label "Projection loss shape" ;
|
|
112
|
+
sh:targetClass ap:ProjectionLoss ;
|
|
113
|
+
sh:property [
|
|
114
|
+
sh:path ap:lossCategory ;
|
|
115
|
+
sh:minCount 1 ; sh:maxCount 1 ;
|
|
116
|
+
sh:in ( "unsupported" "truncated" "approximateMapping" "omittedByPolicy" "targetDefault" "manualActionRequired" ) ;
|
|
117
|
+
sh:message "A ProjectionLoss MUST carry exactly one lossCategory from ap:lossCategoryScheme: unsupported | truncated | approximateMapping | omittedByPolicy | targetDefault | manualActionRequired." ;
|
|
118
|
+
] ;
|
|
119
|
+
sh:property [
|
|
120
|
+
sh:path ap:lossExplanation ;
|
|
121
|
+
sh:minCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
122
|
+
sh:message "A ProjectionLoss MUST explain itself — a loss nobody can read is not a report." ;
|
|
123
|
+
] .
|
|
124
|
+
|
|
125
|
+
# ─── (3) External identity binding ──────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
ap:ExternalIdentityBindingShape a sh:NodeShape ;
|
|
128
|
+
rdfs:label "External identity binding shape" ;
|
|
129
|
+
sh:targetClass ap:ExternalIdentityBinding ;
|
|
130
|
+
|
|
131
|
+
sh:property [
|
|
132
|
+
sh:path ap:describesAgent ;
|
|
133
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:class ap:Agent ;
|
|
134
|
+
sh:message "An ExternalIdentityBinding binds exactly one canonical Agent — the external id points AT the SA, never replaces it (ADR-0010)." ;
|
|
135
|
+
] ;
|
|
136
|
+
sh:property [
|
|
137
|
+
sh:path ap:targetFamily ;
|
|
138
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
139
|
+
sh:message "An ExternalIdentityBinding MUST name its target family." ;
|
|
140
|
+
] ;
|
|
141
|
+
sh:property [
|
|
142
|
+
sh:path ap:externalId ;
|
|
143
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:minLength 1 ;
|
|
144
|
+
sh:message "An ExternalIdentityBinding MUST carry exactly one externalId." ;
|
|
145
|
+
] ;
|
|
146
|
+
sh:property [
|
|
147
|
+
sh:path ap:verificationState ;
|
|
148
|
+
sh:minCount 1 ; sh:maxCount 1 ; sh:in ( "unverified" "verified" "failed" ) ;
|
|
149
|
+
sh:message "An ExternalIdentityBinding MUST record exactly one verificationState from ap:bindingVerificationStateScheme (unverified | verified | failed) — 'unverified' is RECORDED, never silently read as verified." ;
|
|
150
|
+
] ;
|
|
151
|
+
sh:property [
|
|
152
|
+
sh:path ap:lifecycleState ;
|
|
153
|
+
sh:maxCount 1 ; sh:in ( "pendingVerification" "active" "stale" "suspended" "superseded" "revoked" ) ;
|
|
154
|
+
sh:message "A binding lifecycleState MUST be an ap:bindingLifecycleStateScheme value: pendingVerification | active | stale | suspended | superseded | revoked." ;
|
|
155
|
+
] .
|
|
156
|
+
|
|
157
|
+
# ─── (4) Public disclosure boundary ─────────────────────────────────────────
|
|
158
|
+
# Targets ONLY artifacts / cards marked public. The regex refuses loopback (localhost, 127/8, ::1,
|
|
159
|
+
# 0.0.0.0), RFC 1918 (10/8, 172.16/12, 192.168/16), link-local (169.254/16) and *.local / *.internal
|
|
160
|
+
# / *.localhost hosts. An unmarked node is private and exempt — and must never be published.
|
|
161
|
+
|
|
162
|
+
ap:PublicDisclosureBoundaryShape a sh:NodeShape ;
|
|
163
|
+
rdfs:label "Public disclosure boundary shape" ;
|
|
164
|
+
sh:target [
|
|
165
|
+
sh:select """
|
|
166
|
+
SELECT ?this WHERE {
|
|
167
|
+
?this <https://agenticprimitives.dev/ns/core#disclosureScope> "public" .
|
|
168
|
+
{ ?this a <https://agenticprimitives.dev/ns/core#ProjectionArtifact> }
|
|
169
|
+
UNION
|
|
170
|
+
{ ?this a <https://agenticprimitives.dev/ns/core#A2AAgentCard> }
|
|
171
|
+
}
|
|
172
|
+
""" ;
|
|
173
|
+
] ;
|
|
174
|
+
|
|
175
|
+
sh:property [
|
|
176
|
+
sh:path ap:cardUri ;
|
|
177
|
+
sh:not [
|
|
178
|
+
sh:pattern "^[a-z][a-z0-9+.-]*://(localhost|127\\.[0-9]+\\.[0-9]+\\.[0-9]+|0\\.0\\.0\\.0|\\[::1\\]|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|192\\.168\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+\\.[0-9]+|169\\.254\\.[0-9]+\\.[0-9]+|[^/:]+\\.(local|internal|localhost))(:[0-9]+)?([/?#]|$)" ;
|
|
179
|
+
sh:flags "i" ;
|
|
180
|
+
] ;
|
|
181
|
+
sh:message "A PUBLIC artifact's cardUri MUST NOT be a loopback, private-range, link-local or *.local/*.internal address — a private endpoint is about to be published (spec 347 §11 disclosure boundary)." ;
|
|
182
|
+
] ;
|
|
183
|
+
sh:property [
|
|
184
|
+
sh:path ap:interfaceUrl ;
|
|
185
|
+
sh:not [
|
|
186
|
+
sh:pattern "^[a-z][a-z0-9+.-]*://(localhost|127\\.[0-9]+\\.[0-9]+\\.[0-9]+|0\\.0\\.0\\.0|\\[::1\\]|10\\.[0-9]+\\.[0-9]+\\.[0-9]+|192\\.168\\.[0-9]+\\.[0-9]+|172\\.(1[6-9]|2[0-9]|3[01])\\.[0-9]+\\.[0-9]+|169\\.254\\.[0-9]+\\.[0-9]+|[^/:]+\\.(local|internal|localhost))(:[0-9]+)?([/?#]|$)" ;
|
|
187
|
+
sh:flags "i" ;
|
|
188
|
+
] ;
|
|
189
|
+
sh:message "A PUBLIC artifact's interfaceUrl MUST NOT be a loopback, private-range, link-local or *.local/*.internal address — a private endpoint is about to be published (spec 347 §11 disclosure boundary)." ;
|
|
190
|
+
] .
|
|
191
|
+
|
|
192
|
+
# Its own NodeShape: one sh:sparql per shape (shacl-engine compiles them as one unit). Scans every
|
|
193
|
+
# literal on the node and one hop below it (losses, nested descriptors) for a vault locator.
|
|
194
|
+
ap:PublicArtifactNoVaultRefShape a sh:NodeShape ;
|
|
195
|
+
rdfs:label "Public artifact carries no vault reference" ;
|
|
196
|
+
sh:target [
|
|
197
|
+
sh:select """
|
|
198
|
+
SELECT ?this WHERE {
|
|
199
|
+
?this <https://agenticprimitives.dev/ns/core#disclosureScope> "public" .
|
|
200
|
+
{ ?this a <https://agenticprimitives.dev/ns/core#ProjectionArtifact> }
|
|
201
|
+
UNION
|
|
202
|
+
{ ?this a <https://agenticprimitives.dev/ns/core#A2AAgentCard> }
|
|
203
|
+
}
|
|
204
|
+
""" ;
|
|
205
|
+
] ;
|
|
206
|
+
sh:sparql [
|
|
207
|
+
sh:message "A PUBLIC artifact MUST NOT carry a vault reference (urn:ap:vault… / vault:…) anywhere in its literals — the vault is the private record (ADR-0055); a locator into it is not public data (spec 347 §11 disclosure boundary)." ;
|
|
208
|
+
sh:select """
|
|
209
|
+
SELECT $this ?p ?v WHERE {
|
|
210
|
+
{ $this ?p ?v }
|
|
211
|
+
UNION
|
|
212
|
+
{ $this ?p1 ?n . ?n ?p ?v . FILTER(!isLiteral(?n)) }
|
|
213
|
+
FILTER(isLiteral(?v) && REGEX(STR(?v), "^\\\\s*(urn:ap:vault|vault:)", "i"))
|
|
214
|
+
}
|
|
215
|
+
""" ;
|
|
216
|
+
] .
|
|
@@ -2,20 +2,22 @@
|
|
|
2
2
|
# Spec 225 §6. These closed sets are the off-chain source of truth that the
|
|
3
3
|
# on-chain OntologyTermRegistry enum-sets (ADR-0009) bind in lockstep, and that
|
|
4
4
|
# the @agenticprimitives/types unions (AgentType, CredentialKind, Assurance,
|
|
5
|
-
# CredentialRole) mirror. NOTE (audit P1-4): agentKind (
|
|
6
|
-
# are DISTINCT vocabularies.
|
|
5
|
+
# CredentialRole) mirror. NOTE (audit P1-4): agentKind (3), profileType (8; agent-profile
|
|
6
|
+
# ProfileType) and agentType (7 derived types; spec 346) are DISTINCT vocabularies.
|
|
7
7
|
|
|
8
8
|
@prefix ap: <https://agenticprimitives.dev/ns/core#> .
|
|
9
9
|
@prefix apcr: <https://agenticprimitives.dev/ns/credential#> .
|
|
10
10
|
@prefix apcus: <https://agenticprimitives.dev/ns/custody#> .
|
|
11
11
|
@prefix apid: <https://agenticprimitives.dev/ns/identity#> .
|
|
12
|
+
@prefix apnam: <https://agenticprimitives.dev/ns/naming#> .
|
|
13
|
+
@prefix aporg: <https://agenticprimitives.dev/ns/org#> .
|
|
12
14
|
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
|
13
15
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
14
16
|
|
|
15
|
-
# ─── agentKind —
|
|
17
|
+
# ─── agentKind — 3 values, on-chain-bound (ADR-0009 enum / types.AgentType) ──
|
|
16
18
|
ap:agentKind a skos:ConceptScheme ;
|
|
17
19
|
rdfs:label "agentKind" ;
|
|
18
|
-
rdfs:comment "The 3-value on-chain-bound kind (person/org/service). Distinct from profileType (
|
|
20
|
+
rdfs:comment "The 3-value on-chain-bound ROOT kind (person/org/service) carried on the NAME node; 'service' names the ap:ApplicationAgent root (ADR-0046 amendment). Distinct from profileType (8 values; agent-profile/HCS-11) and from ap:agentTypeScheme (the 7 DERIVED types on the SA subject; spec 346 §2.3). treasury is NOT an agentKind — it is a profileType ⊂ service (ap:Treasury rdfs:subClassOf ap:ServiceAgent; tbox/core); team and alliance are NOT agentKinds — they are profileTypes ⊂ org (ap:TeamAgent / ap:AllianceAgent rdfs:subClassOf ap:OrganizationAgent; spec 344 §4.4). Never new agentKinds." ;
|
|
19
21
|
skos:hasTopConcept ap:Person, ap:OrgKind, ap:Service .
|
|
20
22
|
ap:Person a skos:Concept ; skos:inScheme ap:agentKind ; skos:prefLabel "person" .
|
|
21
23
|
ap:OrgKind a skos:Concept ; skos:inScheme ap:agentKind ; skos:prefLabel "org" .
|
|
@@ -55,3 +57,169 @@ ap:Custodied a skos:Concept ; skos:inScheme ap:controlStatusScheme ; skos:p
|
|
|
55
57
|
rdfs:comment "EVM (eip155) — custodied via ERC-4337/ERC-1271." .
|
|
56
58
|
ap:IdentifierOnly a skos:Concept ; skos:inScheme ap:controlStatusScheme ; skos:prefLabel "identifier-only" ;
|
|
57
59
|
rdfs:comment "hedera:* / solana:* — addressable, not custodied by this stack." .
|
|
60
|
+
|
|
61
|
+
# ─── agentType — the 7 DERIVED types, on-chain-bound (spec 346 §2; ADR-0061) ─
|
|
62
|
+
# AGENT_TYPE_ENUM / types.DerivedAgentType. Person and Organization are their own derived type (the
|
|
63
|
+
# trivial specialization) so every agent has exactly one. rootClassFor: team→org;
|
|
64
|
+
# service|workspace|treasury|registry→service. The 3-value ap:agentKind scheme above
|
|
65
|
+
# is UNCHANGED — nothing is ever added to the root trichotomy.
|
|
66
|
+
ap:agentTypeScheme a skos:ConceptScheme ;
|
|
67
|
+
rdfs:label "agentType" ;
|
|
68
|
+
rdfs:comment "9 values, on-chain-bound (AGENT_TYPE_ENUM / types.DerivedAgentType): person org team service workspace treasury registry church circle. rootClassFor: team→org; service|workspace|treasury|registry→service. Each concept rdfs:seeAlso the OWL class it projects (tbox/core)." ;
|
|
69
|
+
skos:hasTopConcept ap:PersonType, ap:OrgType, ap:TeamType, ap:ServiceType, ap:WorkspaceType, ap:TreasuryType, ap:RegistryType, ap:ChurchType, ap:CircleType .
|
|
70
|
+
ap:PersonType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "person" ; rdfs:seeAlso ap:PersonAgent .
|
|
71
|
+
ap:OrgType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "org" ; rdfs:seeAlso ap:OrganizationAgent .
|
|
72
|
+
ap:TeamType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "team" ; rdfs:seeAlso ap:TeamAgent .
|
|
73
|
+
ap:ServiceType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "service" ; rdfs:seeAlso ap:ServiceAgent .
|
|
74
|
+
ap:WorkspaceType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "workspace" ; rdfs:seeAlso ap:WorkspaceAgent .
|
|
75
|
+
ap:TreasuryType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "treasury" ; rdfs:seeAlso ap:Treasury .
|
|
76
|
+
ap:RegistryType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "registry" ; rdfs:seeAlso ap:RegistryAgent .
|
|
77
|
+
ap:ChurchType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "church" ; rdfs:seeAlso ap:ChurchAgent .
|
|
78
|
+
ap:CircleType a skos:Concept ; skos:inScheme ap:agentTypeScheme ; skos:prefLabel "circle" ; rdfs:seeAlso ap:CircleAgent .
|
|
79
|
+
|
|
80
|
+
# ─── tld — the typed name suffixes (spec 346 §3.1; ADR-0061 §3) ──────────
|
|
81
|
+
# A suffix NAMES a derived type — never the inheritance structure, a root, a role, or a technology.
|
|
82
|
+
# apnam:namesDerivedType is the suffix→derived-type map the resolver applies (derivedTypeForTld);
|
|
83
|
+
# apnam:TypedAgentNameShape checks a name's suffix against its target's ap:agentType. `.alliance`
|
|
84
|
+
# and `.agent` are reserved/inactive and deliberately NOT concepts here; `.ws` is an alias, not a tld.
|
|
85
|
+
apnam:tldScheme a skos:ConceptScheme ;
|
|
86
|
+
rdfs:label "tld" ;
|
|
87
|
+
rdfs:comment "The 7 active typed suffixes: me org team svc workspace treasury registry. Each names exactly one ap:agentTypeScheme concept (apnam:namesDerivedType)." ;
|
|
88
|
+
skos:hasTopConcept apnam:MeTld, apnam:OrgTld, apnam:TeamTld, apnam:SvcTld, apnam:WorkspaceTld, apnam:TreasuryTld, apnam:RegistryTld, apnam:ChurchTld, apnam:CircleTld .
|
|
89
|
+
apnam:ChurchTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "church" ; apnam:namesDerivedType ap:ChurchType .
|
|
90
|
+
apnam:CircleTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "circle" ; apnam:namesDerivedType ap:CircleType .
|
|
91
|
+
apnam:MeTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "me" ; apnam:namesDerivedType ap:PersonType .
|
|
92
|
+
apnam:OrgTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "org" ; apnam:namesDerivedType ap:OrgType .
|
|
93
|
+
apnam:TeamTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "team" ; apnam:namesDerivedType ap:TeamType .
|
|
94
|
+
apnam:SvcTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "svc" ; apnam:namesDerivedType ap:ServiceType .
|
|
95
|
+
apnam:WorkspaceTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "workspace" ; skos:altLabel "ws" ; apnam:namesDerivedType ap:WorkspaceType .
|
|
96
|
+
apnam:TreasuryTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "treasury" ; apnam:namesDerivedType ap:TreasuryType .
|
|
97
|
+
apnam:RegistryTld a skos:Concept ; skos:inScheme apnam:tldScheme ; skos:prefLabel "registry" ; apnam:namesDerivedType ap:RegistryType .
|
|
98
|
+
|
|
99
|
+
# ─── Team affiliation + workspace schemes (spec 344 §4.4) ─────────────────
|
|
100
|
+
# profileType gains team ⊂ org and alliance ⊂ org (see the ap:agentKind note above). Never new agentKinds.
|
|
101
|
+
|
|
102
|
+
aporg:affiliationKindScheme a skos:ConceptScheme ;
|
|
103
|
+
rdfs:label "affiliationKind" ;
|
|
104
|
+
skos:hasTopConcept aporg:CharteredAffiliation, aporg:EngagedAffiliation .
|
|
105
|
+
aporg:CharteredAffiliation a skos:Concept ; skos:inScheme aporg:affiliationKindScheme ; skos:prefLabel "chartered" .
|
|
106
|
+
aporg:EngagedAffiliation a skos:Concept ; skos:inScheme aporg:affiliationKindScheme ; skos:prefLabel "engaged" .
|
|
107
|
+
|
|
108
|
+
aporg:workspacePolicyScheme a skos:ConceptScheme ;
|
|
109
|
+
rdfs:label "workspaceParticipationPolicy" ;
|
|
110
|
+
skos:hasTopConcept aporg:OpenWorkspace, aporg:RestrictedWorkspace .
|
|
111
|
+
aporg:OpenWorkspace a skos:Concept ; skos:inScheme aporg:workspacePolicyScheme ; skos:prefLabel "open" .
|
|
112
|
+
aporg:RestrictedWorkspace a skos:Concept ; skos:inScheme aporg:workspacePolicyScheme ; skos:prefLabel "restricted" .
|
|
113
|
+
|
|
114
|
+
aporg:workspaceProfileScheme a skos:ConceptScheme ;
|
|
115
|
+
rdfs:label "workspaceProfile" ;
|
|
116
|
+
rdfs:comment """coordination | field-operations | data-collection | mobilization |
|
|
117
|
+
personal-project — domain packs extend. An app binding declares supported profiles.""" ;
|
|
118
|
+
skos:hasTopConcept aporg:CoordinationProfile, aporg:FieldOperationsProfile, aporg:DataCollectionProfile,
|
|
119
|
+
aporg:MobilizationProfile, aporg:PersonalProjectProfile .
|
|
120
|
+
aporg:CoordinationProfile a skos:Concept ; skos:inScheme aporg:workspaceProfileScheme ; skos:prefLabel "coordination" .
|
|
121
|
+
aporg:FieldOperationsProfile a skos:Concept ; skos:inScheme aporg:workspaceProfileScheme ; skos:prefLabel "field-operations" .
|
|
122
|
+
aporg:DataCollectionProfile a skos:Concept ; skos:inScheme aporg:workspaceProfileScheme ; skos:prefLabel "data-collection" .
|
|
123
|
+
aporg:MobilizationProfile a skos:Concept ; skos:inScheme aporg:workspaceProfileScheme ; skos:prefLabel "mobilization" .
|
|
124
|
+
aporg:PersonalProjectProfile a skos:Concept ; skos:inScheme aporg:workspaceProfileScheme ; skos:prefLabel "personal-project" .
|
|
125
|
+
|
|
126
|
+
aporg:workspaceRoleScheme a skos:ConceptScheme ;
|
|
127
|
+
rdfs:label "workspaceRole" ;
|
|
128
|
+
rdfs:comment """Workspace Steward · Security/Data Steward · Contributor · Partner Observer —
|
|
129
|
+
templates, never the authorization model. Assignment = aporg:RoleAssignment scoped to the
|
|
130
|
+
workspace.""" ;
|
|
131
|
+
skos:hasTopConcept aporg:WorkspaceStewardRole, aporg:SecurityDataStewardRole, aporg:ContributorRole, aporg:PartnerObserverRole .
|
|
132
|
+
aporg:WorkspaceStewardRole a skos:Concept ; skos:inScheme aporg:workspaceRoleScheme ; skos:prefLabel "workspace-steward" .
|
|
133
|
+
aporg:SecurityDataStewardRole a skos:Concept ; skos:inScheme aporg:workspaceRoleScheme ; skos:prefLabel "security-data-steward" .
|
|
134
|
+
aporg:ContributorRole a skos:Concept ; skos:inScheme aporg:workspaceRoleScheme ; skos:prefLabel "contributor" .
|
|
135
|
+
aporg:PartnerObserverRole a skos:Concept ; skos:inScheme aporg:workspaceRoleScheme ; skos:prefLabel "partner-observer" .
|
|
136
|
+
|
|
137
|
+
# ═══ Card projection codelists (spec 347 §3 / §6.4 / §11; ADR-0062; tbox/card-projection.ttl) ═══
|
|
138
|
+
# Mirrored by registry-kit/projection + agent-profile/a2a TS unions; the .ttl is the source of truth.
|
|
139
|
+
|
|
140
|
+
# ─── lossCategory — what a projector could not represent faithfully (§6.4 ProjectionLossV1) ──
|
|
141
|
+
ap:lossCategoryScheme a skos:ConceptScheme ;
|
|
142
|
+
rdfs:label "lossCategory" ;
|
|
143
|
+
rdfs:comment "ProjectionLossV1.category: unsupported truncated approximateMapping omittedByPolicy targetDefault manualActionRequired. A projector ALWAYS emits a loss report; an empty one is a statement, a missing one is a defect." ;
|
|
144
|
+
skos:hasTopConcept ap:LossUnsupported, ap:LossTruncated, ap:LossApproximateMapping, ap:LossOmittedByPolicy, ap:LossTargetDefault, ap:LossManualActionRequired .
|
|
145
|
+
ap:LossUnsupported a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "unsupported" ;
|
|
146
|
+
rdfs:comment "The target has no place for this fact at all." .
|
|
147
|
+
ap:LossTruncated a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "truncated" ;
|
|
148
|
+
rdfs:comment "Represented, but cut to a target limit (length, count)." .
|
|
149
|
+
ap:LossApproximateMapping a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "approximateMapping" ;
|
|
150
|
+
rdfs:comment "Represented by a close/broad/narrow taxon or field, not an exact one." .
|
|
151
|
+
ap:LossOmittedByPolicy a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "omittedByPolicy" ;
|
|
152
|
+
rdfs:comment "Deliberately withheld by the disclosure policy (never a defect of the target)." .
|
|
153
|
+
ap:LossTargetDefault a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "targetDefault" ;
|
|
154
|
+
rdfs:comment "The target required a value the source does not have; a target default was written." .
|
|
155
|
+
ap:LossManualActionRequired a skos:Concept ; skos:inScheme ap:lossCategoryScheme ; skos:prefLabel "manualActionRequired" ;
|
|
156
|
+
rdfs:comment "Cannot be completed by a pure projector — a human or an approval must act." .
|
|
157
|
+
|
|
158
|
+
# ─── cardReleaseState — the card lifecycle (§3) ──
|
|
159
|
+
ap:cardReleaseStateScheme a skos:ConceptScheme ;
|
|
160
|
+
rdfs:label "cardReleaseState" ;
|
|
161
|
+
rdfs:comment "draft → validated → approvalPending → approved → signed → published → superseded | deprecated | revoked. Editing at approved or later creates a NEW draft; a revoked release is not projection-ready." ;
|
|
162
|
+
skos:hasTopConcept ap:CardDraft, ap:CardValidated, ap:CardApprovalPending, ap:CardApproved, ap:CardSigned, ap:CardPublished, ap:CardSuperseded, ap:CardDeprecated, ap:CardRevoked .
|
|
163
|
+
ap:CardDraft a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "draft" .
|
|
164
|
+
ap:CardValidated a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "validated" .
|
|
165
|
+
ap:CardApprovalPending a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "approvalPending" .
|
|
166
|
+
ap:CardApproved a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "approved" .
|
|
167
|
+
ap:CardSigned a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "signed" .
|
|
168
|
+
ap:CardPublished a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "published" .
|
|
169
|
+
ap:CardSuperseded a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "superseded" .
|
|
170
|
+
ap:CardDeprecated a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "deprecated" .
|
|
171
|
+
ap:CardRevoked a skos:Concept ; skos:inScheme ap:cardReleaseStateScheme ; skos:prefLabel "revoked" .
|
|
172
|
+
|
|
173
|
+
# ─── projectionInstanceState — the projection lifecycle (§3) ──
|
|
174
|
+
ap:projectionInstanceStateScheme a skos:ConceptScheme ;
|
|
175
|
+
rdfs:label "projectionInstanceState" ;
|
|
176
|
+
rdfs:comment "unconfigured → configured → ready → generated → approvalPending → publishing → published → drifted | stale | failed | retired. A remote change is a DRIFT that yields an import proposal, never a canonical write." ;
|
|
177
|
+
skos:hasTopConcept ap:ProjectionUnconfigured, ap:ProjectionConfigured, ap:ProjectionReady, ap:ProjectionGenerated, ap:ProjectionApprovalPending, ap:ProjectionPublishing, ap:ProjectionPublished, ap:ProjectionDrifted, ap:ProjectionStale, ap:ProjectionFailed, ap:ProjectionRetired .
|
|
178
|
+
ap:ProjectionUnconfigured a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "unconfigured" .
|
|
179
|
+
ap:ProjectionConfigured a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "configured" .
|
|
180
|
+
ap:ProjectionReady a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "ready" .
|
|
181
|
+
ap:ProjectionGenerated a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "generated" .
|
|
182
|
+
ap:ProjectionApprovalPending a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "approvalPending" .
|
|
183
|
+
ap:ProjectionPublishing a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "publishing" .
|
|
184
|
+
ap:ProjectionPublished a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "published" .
|
|
185
|
+
ap:ProjectionDrifted a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "drifted" .
|
|
186
|
+
ap:ProjectionStale a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "stale" .
|
|
187
|
+
ap:ProjectionFailed a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "failed" .
|
|
188
|
+
ap:ProjectionRetired a skos:Concept ; skos:inScheme ap:projectionInstanceStateScheme ; skos:prefLabel "retired" .
|
|
189
|
+
|
|
190
|
+
# ─── bindingLifecycleState — the external identity binding lifecycle (§3) ──
|
|
191
|
+
ap:bindingLifecycleStateScheme a skos:ConceptScheme ;
|
|
192
|
+
rdfs:label "bindingLifecycleState" ;
|
|
193
|
+
rdfs:comment "pendingVerification → active → stale | suspended | superseded | revoked (ExternalIdentityBindingV1.lifecycle.state)." ;
|
|
194
|
+
skos:hasTopConcept ap:BindingPendingVerification, ap:BindingActive, ap:BindingStale, ap:BindingSuspended, ap:BindingSuperseded, ap:BindingRevoked .
|
|
195
|
+
ap:BindingPendingVerification a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "pendingVerification" .
|
|
196
|
+
ap:BindingActive a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "active" .
|
|
197
|
+
ap:BindingStale a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "stale" .
|
|
198
|
+
ap:BindingSuspended a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "suspended" .
|
|
199
|
+
ap:BindingSuperseded a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "superseded" .
|
|
200
|
+
ap:BindingRevoked a skos:Concept ; skos:inScheme ap:bindingLifecycleStateScheme ; skos:prefLabel "revoked" .
|
|
201
|
+
|
|
202
|
+
# ─── bindingVerificationState — was the external record checked against the canonical agent? ──
|
|
203
|
+
ap:bindingVerificationStateScheme a skos:ConceptScheme ;
|
|
204
|
+
rdfs:label "bindingVerificationState" ;
|
|
205
|
+
rdfs:comment "ExternalIdentityBindingV1.verification.state: unverified | verified | failed. 'unverified' is RECORDED, never silently equal to 'verified' (the spec 346 receipt rule, applied to bindings)." ;
|
|
206
|
+
skos:hasTopConcept ap:BindingUnverified, ap:BindingVerified, ap:BindingVerificationFailed .
|
|
207
|
+
ap:BindingUnverified a skos:Concept ; skos:inScheme ap:bindingVerificationStateScheme ; skos:prefLabel "unverified" .
|
|
208
|
+
ap:BindingVerified a skos:Concept ; skos:inScheme ap:bindingVerificationStateScheme ; skos:prefLabel "verified" .
|
|
209
|
+
ap:BindingVerificationFailed a skos:Concept ; skos:inScheme ap:bindingVerificationStateScheme ; skos:prefLabel "failed" .
|
|
210
|
+
|
|
211
|
+
# ─── digestRole — the eight digests every artifact / receipt records (§6.4) ──
|
|
212
|
+
# The T-box carries them as eight named sub-properties of ap:hasDigest; this scheme names the roles
|
|
213
|
+
# for a store that prefers a reified (digest, role) form. Each concept rdfs:seeAlso its property.
|
|
214
|
+
ap:digestRoleScheme a skos:ConceptScheme ;
|
|
215
|
+
rdfs:label "digestRole" ;
|
|
216
|
+
rdfs:comment "source-bundle definition target-specification adapter configuration artifact canonical-profile selected-card. ap:ProjectionProvenanceShape requires ALL eight on every ProjectionArtifact." ;
|
|
217
|
+
skos:hasTopConcept ap:SourceBundleDigestRole, ap:DefinitionDigestRole, ap:TargetSpecificationDigestRole, ap:AdapterDigestRole, ap:ConfigurationDigestRole, ap:ArtifactDigestRole, ap:CanonicalProfileDigestRole, ap:SelectedCardDigestRole .
|
|
218
|
+
ap:SourceBundleDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "source-bundle" ; rdfs:seeAlso ap:hasSourceDigest .
|
|
219
|
+
ap:DefinitionDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "definition" ; rdfs:seeAlso ap:hasDefinitionDigest .
|
|
220
|
+
ap:TargetSpecificationDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "target-specification" ; rdfs:seeAlso ap:hasTargetSpecificationDigest .
|
|
221
|
+
ap:AdapterDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "adapter" ; rdfs:seeAlso ap:hasAdapterDigest .
|
|
222
|
+
ap:ConfigurationDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "configuration" ; rdfs:seeAlso ap:hasConfigurationDigest .
|
|
223
|
+
ap:ArtifactDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "artifact" ; rdfs:seeAlso ap:hasArtifactDigest .
|
|
224
|
+
ap:CanonicalProfileDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "canonical-profile" ; rdfs:seeAlso ap:hasCanonicalProfileDigest .
|
|
225
|
+
ap:SelectedCardDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "selected-card" ; rdfs:seeAlso ap:hasSelectedCardDigest .
|