@agenticprimitives/ontology 0.1.0-alpha.2 → 1.0.0-alpha.10

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.
@@ -0,0 +1,150 @@
1
+ # T-box — constraint + assumption vocabulary (spine Layer 3).
2
+ # Anoma CSP-shaped + ERC-7683 resolver-assumption pattern.
3
+ # Spec 225 §11.5; D-38 + D-39 + D-43.
4
+ # Owning runtime SHACL: packages/intent-marketplace/src/shapes/constraints.shacl.ttl.
5
+
6
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
7
+ @prefix apcst: <https://agenticprimitives.dev/ns/constraint#> .
8
+ @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
9
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
11
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
12
+ @prefix prov: <http://www.w3.org/ns/prov#> .
13
+
14
+ apcst: a owl:Ontology ;
15
+ rdfs:label "Agentic Primitives — constraint + assumption ontology" ;
16
+ owl:versionInfo "0.1.0" ;
17
+ rdfs:comment "First-class typed constraints (Anoma CSP-shape) + resolver-assumption set (ERC-7683 parallel). Spec 225 §11.5." .
18
+
19
+ # ─── ConstraintSet classes ────────────────────────────────────────────
20
+
21
+ apcst:ConstraintSet a owl:Class ;
22
+ rdfs:label "ConstraintSet" ;
23
+ rdfs:comment "A typed bag of Constraints (hard + soft) + per-field DisclosurePolicy. CSP-shaped. NOT freeform payload (D-38)." .
24
+
25
+ apcst:Constraint a owl:Class ;
26
+ rdfs:label "Constraint" ;
27
+ rdfs:comment "A single typed constraint: variable + domain + source + rationale. Discriminated by domain.kind." .
28
+
29
+ apcst:HardConstraint a owl:Class ;
30
+ rdfs:subClassOf apcst:Constraint ;
31
+ rdfs:label "HardConstraint" ;
32
+ rdfs:comment "Enforceable invariant; matchmaker MUST reject if violated." .
33
+
34
+ apcst:SoftConstraint a owl:Class ;
35
+ rdfs:subClassOf apcst:Constraint ;
36
+ rdfs:label "SoftConstraint" ;
37
+ rdfs:comment "Scorer preference; contributes to composite score (per spec 239 §7.2)." .
38
+
39
+ # ─── Constraint domain classes (CSP-shaped) ───────────────────────────
40
+
41
+ apcst:ConstraintDomain a owl:Class ;
42
+ rdfs:label "ConstraintDomain" ;
43
+ rdfs:comment "Abstract CSP domain. Subclasses: EnumDomain, RangeDomain, SetDomain, PredicateDomain." .
44
+
45
+ apcst:EnumDomain a owl:Class ;
46
+ rdfs:subClassOf apcst:ConstraintDomain ;
47
+ rdfs:label "EnumDomain" ;
48
+ rdfs:comment "Constraint domain over a fixed enumeration of allowed string values." .
49
+
50
+ apcst:RangeDomain a owl:Class ;
51
+ rdfs:subClassOf apcst:ConstraintDomain ;
52
+ rdfs:label "RangeDomain" ;
53
+ rdfs:comment "Constraint domain over a numeric/temporal range [min, max] in a named unit." .
54
+
55
+ apcst:SetDomain a owl:Class ;
56
+ rdfs:subClassOf apcst:ConstraintDomain ;
57
+ rdfs:label "SetDomain" ;
58
+ rdfs:comment "Constraint domain over an allowed-set (optionally with a denied-set)." .
59
+
60
+ apcst:PredicateDomain a owl:Class ;
61
+ rdfs:subClassOf apcst:ConstraintDomain ;
62
+ rdfs:label "PredicateDomain" ;
63
+ rdfs:comment "Constraint domain expressed as a SHACL or JSONPath predicate body." .
64
+
65
+ # ─── AssumptionSet classes (ERC-7683 parallel) ────────────────────────
66
+
67
+ apcst:AssumptionSet a owl:Class ;
68
+ rdfs:label "AssumptionSet" ;
69
+ rdfs:comment "Resolver-asserted assumptions + risks + required validations. Solvers MUST validate before bidding. ERC-7683 pattern." .
70
+
71
+ apcst:NamedAssumption a owl:Class ;
72
+ rdfs:label "NamedAssumption" ;
73
+ rdfs:comment "A specific resolver assumption: name + trustLevel + optional evidence ref." .
74
+
75
+ apcst:ValidationRequirement a owl:Class ;
76
+ rdfs:label "ValidationRequirement" ;
77
+ rdfs:comment "Something that MUST be validated before commitment / payment / fulfillment. Links to Layer 14 (Validation)." .
78
+
79
+ # ─── Properties ───────────────────────────────────────────────────────
80
+
81
+ apcst:variable a owl:DatatypeProperty ;
82
+ rdfs:domain apcst:Constraint ;
83
+ rdfs:range xsd:string ;
84
+ rdfs:label "variable" ;
85
+ rdfs:comment "The CSP variable name (e.g. 'geo', 'requiredCredential', 'capacity')." .
86
+
87
+ apcst:domain a owl:ObjectProperty ;
88
+ rdfs:domain apcst:Constraint ;
89
+ rdfs:range apcst:ConstraintDomain ;
90
+ rdfs:label "domain" .
91
+
92
+ apcst:source a owl:DatatypeProperty ;
93
+ rdfs:domain apcst:Constraint ;
94
+ rdfs:range xsd:string ;
95
+ rdfs:label "source" ;
96
+ rdfs:comment "Constraint source provenance (D-43): 'user-asserted' | 'llm-inferred' | 'policy-imposed'. Inferred + sensitive constraints redactable before publication." .
97
+
98
+ apcst:rationale a owl:DatatypeProperty ;
99
+ rdfs:domain apcst:Constraint ;
100
+ rdfs:range xsd:string ;
101
+ rdfs:label "rationale" ;
102
+ rdfs:comment "Human-readable explanation (esp. for llm-inferred / policy-imposed constraints)." .
103
+
104
+ apcst:strength a owl:DatatypeProperty ;
105
+ rdfs:domain apcst:Constraint ;
106
+ rdfs:range xsd:string ;
107
+ rdfs:label "strength" ;
108
+ rdfs:comment "'hard' | 'soft' — discriminator for HardConstraint vs SoftConstraint subclassing." .
109
+
110
+ apcst:enforcement a owl:DatatypeProperty ;
111
+ rdfs:domain apcst:Constraint ;
112
+ rdfs:range xsd:string ;
113
+ rdfs:label "enforcement" ;
114
+ rdfs:comment "Where the constraint is enforced: 'pre-execution' | 'agreement' | 'ranking' (per AI-engagement-model semantic-caveats pattern)." .
115
+
116
+ apcst:fieldDisclosure a owl:DatatypeProperty ;
117
+ rdfs:domain apcst:ConstraintSet ;
118
+ rdfs:range xsd:string ;
119
+ rdfs:label "fieldDisclosure" ;
120
+ rdfs:comment "JSON-encoded { fieldPath → VisibilityTier } map. Per-field DisclosurePolicy (D-42)." .
121
+
122
+ apcst:resolverId a owl:DatatypeProperty ;
123
+ rdfs:domain apcst:AssumptionSet ;
124
+ rdfs:range xsd:string ;
125
+ rdfs:label "resolverId" ;
126
+ rdfs:comment "The Resolver agent's identifier (version-pinned)." .
127
+
128
+ apcst:trustLevel a owl:DatatypeProperty ;
129
+ rdfs:domain apcst:NamedAssumption ;
130
+ rdfs:range xsd:string ;
131
+ rdfs:label "trustLevel" ;
132
+ rdfs:comment "'asserted' | 'verified' | 'oracle' | 'zkp'." .
133
+
134
+ apcst:risk a owl:DatatypeProperty ;
135
+ rdfs:domain apcst:NamedAssumption ;
136
+ rdfs:range xsd:string ;
137
+ rdfs:label "risk" ;
138
+ rdfs:comment "Human-readable risk tag (e.g. 'inventory', 'sla', 'merchant-trust')." .
139
+
140
+ apcst:evidenceRef a owl:ObjectProperty ;
141
+ rdfs:domain apcst:NamedAssumption ;
142
+ rdfs:range prov:Entity ;
143
+ rdfs:label "evidenceRef" ;
144
+ rdfs:comment "Optional pointer to a VC / attestation backing the assumption." .
145
+
146
+ apcst:expiresAt a owl:DatatypeProperty ;
147
+ rdfs:domain apcst:NamedAssumption ;
148
+ rdfs:range xsd:dateTime ;
149
+ rdfs:label "expiresAt" ;
150
+ rdfs:comment "Assumption validity expiration. Downstream consumers MUST recheck if expired." .
@@ -0,0 +1,53 @@
1
+ # T-box — generic verifiable-content substrate (spec 266). Names, resolves, and
2
+ # verifies CONTENT that lives off-platform and is controlled by third-party rights
3
+ # holders. NEUTRAL substrate — NO domain/faith/vertical vocabulary (ADR-0033 R4).
4
+ #
5
+ # FRBR-aligned: CanonicalLocus = Work (edition-independent coordinate, scheme-
6
+ # anchored, never an Agent); CorpusManifest = Expression/Manifestation (issuer-
7
+ # owned, committed); ContentDescriptor = Item (the deliverable leaf — points AT
8
+ # off-chain text, NEVER contains it; ADR-0033 R3).
9
+
10
+ @prefix apcnt: <https://agenticprimitives.dev/ns/content#> .
11
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
12
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
13
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
14
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
15
+
16
+ apcnt:CanonicalLocus a rdfs:Class ;
17
+ rdfs:label "CanonicalLocus" ;
18
+ rdfs:comment "FRBR Work. An edition-independent coordinate into a structured corpus (a passage address). Identified by a deterministic locusId computed from a normalized (scheme, path) reference. SCHEME-anchored: never registered, never an Agent, has no owner (ADR-0033)." .
19
+
20
+ apcnt:CorpusManifest a rdfs:Class ;
21
+ rdfs:label "CorpusManifest" ;
22
+ rdfs:comment "FRBR Expression/Manifestation. A versioned body of renderings published by an issuer Smart Agent, committed by a Merkle corpusRoot + a signed manifestHash. Public anchor; the rendering text stays off-platform." .
23
+
24
+ apcnt:ContentDescriptor a rdfs:Class ;
25
+ rdfs:label "ContentDescriptor" ;
26
+ rdfs:comment "FRBR Item. The deliverable trust leaf for one (corpus, locus): commitment + retrievalPointer + issuer signature + access policy. Points AT off-chain text; NEVER contains it (ADR-0033 R3). Trust = issuer signature, not platform claim (R5)." .
27
+
28
+ apcnt:CitationAssertion a rdfs:Class ;
29
+ rdfs:label "CitationAssertion" ;
30
+ rdfs:comment "A provenance credential: a party cited a locus from a corpus, the rendering commitment matched, under a given entitlement. The AI-safe citation record (W3C VC 2.0 + PROV-O)." .
31
+
32
+ apcnt:Entitlement a rdfs:Class ;
33
+ rdfs:label "Entitlement" ;
34
+ rdfs:comment "A credential asserting a subject Smart Agent may access a corpus under stated terms. Gates the resolve/retrieve path for licensed/private corpora; optional for public ones." .
35
+
36
+ apcnt:locusOf a rdf:Property ; rdfs:domain apcnt:ContentDescriptor ; rdfs:range apcnt:CanonicalLocus ;
37
+ rdfs:comment "The CanonicalLocus (by locusId) this descriptor renders." .
38
+ apcnt:renderedBy a rdf:Property ; rdfs:domain apcnt:ContentDescriptor ; rdfs:range apcnt:CorpusManifest ;
39
+ rdfs:comment "The CorpusManifest (by corpusRef) this descriptor belongs to." .
40
+ apcnt:commitsTo a rdf:Property ; rdfs:domain apcnt:ContentDescriptor ;
41
+ rdfs:comment "keccak256 of the canonicalized off-chain rendering text. Binds the descriptor to a specific rendering WITHOUT revealing it." .
42
+ apcnt:retrievalPointer a rdf:Property ; rdfs:domain apcnt:ContentDescriptor ;
43
+ rdfs:comment "A URI/locator for the off-chain rendering text. NEVER the text itself (ADR-0033 R3)." .
44
+ apcnt:corpusRoot a rdf:Property ; rdfs:domain apcnt:CorpusManifest ;
45
+ rdfs:comment "Merkle root over the per-locus descriptor commitments of the corpus." .
46
+ apcnt:issuedBy a rdf:Property ; rdfs:domain apcnt:CorpusManifest ; rdfs:range ap:CanonicalAgentId ;
47
+ rdfs:comment "The issuer Smart Agent (Address) that published + signed the corpus/descriptors." .
48
+ apcnt:accessPolicy a rdf:Property ;
49
+ rdfs:comment "An apcnt:accessPolicy value (C-box codelist): public | licensed | private." .
50
+ apcnt:proofPolicy a rdf:Property ;
51
+ rdfs:comment "An apcnt:proofPolicy value (C-box codelist): signature | merkle-inclusion | zk." .
52
+ apcnt:citesLocus a rdf:Property ; rdfs:domain apcnt:CitationAssertion ; rdfs:range apcnt:CanonicalLocus .
53
+ apcnt:underEntitlement a rdf:Property ; rdfs:domain apcnt:CitationAssertion ; rdfs:range apcnt:Entitlement .
@@ -0,0 +1,140 @@
1
+ # T-box — fulfillment vocabulary (spine Layers 10–12).
2
+ # A2A Task + Message + Artifact aligned; spec 244 + spec 245.
3
+ # Spec 225 §11.5.
4
+ # Owning runtime SHACL: packages/fulfillment/src/shapes/fulfillment.shacl.ttl.
5
+
6
+ @prefix apful: <https://agenticprimitives.dev/ns/fulfillment#> .
7
+ @prefix apagr: <https://agenticprimitives.dev/ns/agreement#> .
8
+ @prefix appay: <https://agenticprimitives.dev/ns/payment#> .
9
+ @prefix apvc: <https://agenticprimitives.dev/ns/credential#> .
10
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
11
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
12
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
13
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
14
+ @prefix prov: <http://www.w3.org/ns/prov#> .
15
+
16
+ apful: a owl:Ontology ;
17
+ rdfs:label "Agentic Primitives — fulfillment ontology" ;
18
+ owl:versionInfo "0.1.0" ;
19
+ rdfs:comment "Layers 10–12 of the spine. FulfillmentCase + Task + Message + Artifact + HandoffPolicy + IntentTraceSpan." .
20
+
21
+ # ─── Operational containers (Layer 10) ────────────────────────────────
22
+
23
+ apful:FulfillmentCase a owl:Class ;
24
+ rdfs:subClassOf prov:Activity ;
25
+ rdfs:label "FulfillmentCase" ;
26
+ rdfs:comment "Operational container per-Agreement. Lifecycle: drafted → clarified → expressed → acknowledged → proposed → accepted → committed → in_progress → fulfilled → validated → archived. FLF-INV-01: lifecycle synced with AgreementRegistry status." .
27
+
28
+ apful:FulfillmentTopology a owl:Class ;
29
+ rdfs:label "FulfillmentTopology" ;
30
+ rdfs:comment "Task composition discriminator: 'linear' | 'parallel' | 'dag'." .
31
+
32
+ # ─── Tasks (Layer 11; A2A-canonical) ──────────────────────────────────
33
+
34
+ apful:Task a owl:Class ;
35
+ rdfs:subClassOf prov:Activity ;
36
+ rdfs:label "Task" ;
37
+ rdfs:comment "Executable unit of work inside a FulfillmentCase. A2A state machine: submitted | working | completed | failed | canceled | input-required | rejected | auth-required. Spec 245 + spec 244 §5." .
38
+
39
+ apful:HandoffPolicy a owl:Class ;
40
+ rdfs:label "HandoffPolicy" ;
41
+ rdfs:comment "First-class authority binding for cross-agent handoffs. allowedTargets + allowedClasses + requiresUserApproval + preservePrivacyTier + allowedScopes + maxHopCount. FLF-6." .
42
+
43
+ # ─── Communication vs deliverables (Layer 12 separation) ─────────────
44
+
45
+ apful:Message a owl:Class ;
46
+ rdfs:label "Message" ;
47
+ rdfs:comment "A2A-style communication artifact. Bodies in JV per D-46.1. A2A-INV-04 + FLF-INV-04: NEVER in public registry." .
48
+
49
+ apful:Artifact a owl:Class ;
50
+ rdfs:subClassOf prov:Entity ;
51
+ rdfs:label "Artifact" ;
52
+ rdfs:comment "A2A-style deliverable. Hash-anchored; body in vault. FLF-INV-05: bodies vault-resident; only hashes in registry. Promotable to EvidenceCredential." .
53
+
54
+ apful:ArtifactKind a owl:Class ;
55
+ rdfs:label "ArtifactKind" ;
56
+ rdfs:comment "Kind discriminator: document | signed-tx | validation-report | receipt | summary | proof | generated-file | attestation | custom." .
57
+
58
+ # ─── Provenance tree (cross-cutting, Decision 7 of ADR-0024) ─────────
59
+
60
+ apful:IntentTraceSpan a owl:Class ;
61
+ rdfs:subClassOf prov:Activity ;
62
+ rdfs:label "IntentTraceSpan" ;
63
+ rdfs:comment "Typed trace span emitted on layer-cross transitions. Parent/child tree forms case audit (FLF-INV-15). spanType: parse | clarify | resolve | match | handoff | tool_call | wallet_simulation | user_approval | execution | validation | task_state_change | lifecycle_transition." .
64
+
65
+ # ─── Properties ───────────────────────────────────────────────────────
66
+
67
+ apful:hasParentAgreement a owl:ObjectProperty ;
68
+ rdfs:domain apful:FulfillmentCase ;
69
+ rdfs:range apagr:AgreementCommitment ;
70
+ rdfs:label "hasParentAgreement" .
71
+
72
+ apful:topology a owl:DatatypeProperty ;
73
+ rdfs:domain apful:FulfillmentCase ;
74
+ rdfs:range xsd:string ;
75
+ rdfs:label "topology" .
76
+
77
+ apful:taskState a owl:DatatypeProperty ;
78
+ rdfs:domain apful:Task ;
79
+ rdfs:range xsd:string ;
80
+ rdfs:label "taskState" ;
81
+ rdfs:comment "A2A canonical states. FLF-INV-13: no backward transitions except input-required→working and auth-required→submitted." .
82
+
83
+ apful:assignee a owl:ObjectProperty ;
84
+ rdfs:domain apful:Task ;
85
+ rdfs:range ap:Agent ;
86
+ rdfs:label "assignee" .
87
+
88
+ apful:assigneeKind a owl:DatatypeProperty ;
89
+ rdfs:domain apful:Task ;
90
+ rdfs:range xsd:string ;
91
+ rdfs:label "assigneeKind" ;
92
+ rdfs:comment "'person' | 'org' | 'agent' | 'oracle' | 'hybrid'." .
93
+
94
+ apful:permissionGrantRef a owl:DatatypeProperty ;
95
+ rdfs:domain apful:Task ;
96
+ rdfs:range xsd:string ;
97
+ rdfs:label "permissionGrantRef" ;
98
+ rdfs:comment "FLF-INV-02: every Task has an authorizing delegation reference." .
99
+
100
+ apful:paymentMandateRef a owl:ObjectProperty ;
101
+ rdfs:domain apful:Task ;
102
+ rdfs:range appay:PaymentMandate ;
103
+ rdfs:label "paymentMandateRef" ;
104
+ rdfs:comment "FLF-INV-11: payment mandate bound to this task via PMT-3 context binding (taskId)." .
105
+
106
+ apful:sender a owl:ObjectProperty ;
107
+ rdfs:domain apful:Message ;
108
+ rdfs:range ap:Agent ;
109
+ rdfs:label "sender" .
110
+
111
+ apful:bodyRef a owl:DatatypeProperty ;
112
+ rdfs:domain apful:Message ;
113
+ rdfs:range xsd:anyURI ;
114
+ rdfs:label "bodyRef" .
115
+
116
+ apful:bodyHash a owl:DatatypeProperty ;
117
+ rdfs:domain apful:Artifact ;
118
+ rdfs:range xsd:hexBinary ;
119
+ rdfs:label "bodyHash" .
120
+
121
+ apful:artifactKind a owl:DatatypeProperty ;
122
+ rdfs:domain apful:Artifact ;
123
+ rdfs:range xsd:string ;
124
+ rdfs:label "artifactKind" .
125
+
126
+ apful:disclosurePolicy a owl:DatatypeProperty ;
127
+ rdfs:domain apful:Artifact ;
128
+ rdfs:range xsd:string ;
129
+ rdfs:label "disclosurePolicy" ;
130
+ rdfs:comment "Per-field DisclosurePolicy (D-42). JSON-encoded." .
131
+
132
+ apful:spanType a owl:DatatypeProperty ;
133
+ rdfs:domain apful:IntentTraceSpan ;
134
+ rdfs:range xsd:string ;
135
+ rdfs:label "spanType" .
136
+
137
+ apful:parentSpan a owl:ObjectProperty ;
138
+ rdfs:domain apful:IntentTraceSpan ;
139
+ rdfs:range apful:IntentTraceSpan ;
140
+ rdfs:label "parentSpan" .
package/tbox/geo.ttl ADDED
@@ -0,0 +1,28 @@
1
+ # T-box — generic geo substrate (spec 251). The geo FEATURE is a public on-chain
2
+ # definition (GeoFeatureRegistry; geometry hash + roots + coarse bbox, exact GeoJSON off
3
+ # chain). The geo CLAIM (agent↔feature association) is an off-chain vault credential.
4
+ # NEUTRAL public geography only — never operational/sensitivity data on chain; no on-chain
5
+ # skill↔geo mapping.
6
+
7
+ @prefix apg: <https://agenticprimitives.dev/ns/geo#> .
8
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
9
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
10
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
11
+
12
+ apg:GeoFeature a rdfs:Class ;
13
+ rdfs:label "GeoFeature" ;
14
+ rdfs:comment "A versioned, PUBLIC, generic geographic feature. Anchored on chain by GeoFeatureRegistry (geometryHash + coverage/source roots + coarse bbox; exact geometry off chain via metadataURI). Neutral public geography only." .
15
+
16
+ apg:GeoClaim a rdfs:Class ;
17
+ rdfs:label "GeoClaim" ;
18
+ rdfs:comment "An OFF-CHAIN verifiable credential asserting a subject Smart Agent's relation to an apg:GeoFeature (pinned featureId+version). Private vault credential; the association is NEVER on chain (it would leak operational data)." .
19
+
20
+ apg:featureId a rdf:Property ; rdfs:domain apg:GeoClaim ; rdfs:range apg:GeoFeature ;
21
+ rdfs:comment "The on-chain (featureId, version) this claim credential references." .
22
+ apg:hasGeoKind a rdf:Property ; rdfs:domain apg:GeoFeature ;
23
+ rdfs:comment "An apg:geoKind value (C-box codelist; on-chain-bound)." .
24
+ apg:geometryHash a rdf:Property ; rdfs:domain apg:GeoFeature ;
25
+ rdfs:comment "keccak256 of the canonical GeoJSON (which lives off chain)." .
26
+ apg:claimSubject a rdf:Property ; rdfs:domain apg:GeoClaim ; rdfs:range ap:CanonicalAgentId .
27
+ apg:claimRelation a rdf:Property ; rdfs:domain apg:GeoClaim ;
28
+ rdfs:comment "An apg:geoRelation value (C-box codelist)." .
@@ -0,0 +1,137 @@
1
+ # T-box — intent vocabulary (spine Layer 2 + 7).
2
+ # Anoma CSP alignment + ERC-7521 + UFO-C/ValueFlows.
3
+ # Spec 225 §11.5 (substrate spine vocabulary scope expansion).
4
+ # Owning runtime SHACL shapes: packages/intent-marketplace/src/shapes/ (PD-19).
5
+
6
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
7
+ @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
8
+ @prefix apcst: <https://agenticprimitives.dev/ns/constraint#> .
9
+ @prefix apres: <https://agenticprimitives.dev/ns/resolution#> .
10
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
11
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
12
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
13
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
14
+ @prefix prov: <http://www.w3.org/ns/prov#> .
15
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
16
+ @prefix vf: <https://w3id.org/valueflows#> .
17
+ @prefix ufo-c: <http://purl.org/nemo/ufo-c#> .
18
+
19
+ apint: a owl:Ontology ;
20
+ rdfs:label "Agentic Primitives — intent ontology" ;
21
+ owl:versionInfo "0.1.0" ;
22
+ rdfs:comment "T-box for the intent-marketplace substrate. Anoma CSP-aligned + ERC-7521 + ERC-7683 + UFO-C/ValueFlows. Spec 225 §11.5." .
23
+
24
+ # ─── Intent + lifecycle classes ────────────────────────────────────────
25
+
26
+ apint:Desire a owl:Class ;
27
+ rdfs:subClassOf ufo-c:Intention ;
28
+ rdfs:label "Desire" ;
29
+ rdfs:comment "An actor's latent want — internal BDI state. NOT addressable; NOT a commitment. Becomes actionable only when committed to an Intent. Layer 1 of the spine; out-of-scope for W1 substrate (engagement plane only)." .
30
+
31
+ apint:Intent a owl:Class ;
32
+ rdfs:subClassOf ufo-c:Intention , vf:Intent ;
33
+ rdfs:label "Intent" ;
34
+ rdfs:comment "An actor's signed declarative statement of a desired end-state — direction + object (SKOS) + topic + constraints + expectedOutcome. NOT a plan; not a transaction; not a task. CSP-shaped per Anoma alignment. Layer 2 of the spine." .
35
+
36
+ apint:ReceiveIntent a owl:Class ;
37
+ rdfs:subClassOf apint:Intent ;
38
+ rdfs:label "ReceiveIntent" ;
39
+ rdfs:comment "Intent with direction='receive': actor wants to be the recipient of the object." .
40
+
41
+ apint:GiveIntent a owl:Class ;
42
+ rdfs:subClassOf apint:Intent ;
43
+ rdfs:label "GiveIntent" ;
44
+ rdfs:comment "Intent with direction='give': actor wants to be the provider of the object." .
45
+
46
+ apint:MatchInitiation a owl:Class ;
47
+ rdfs:subClassOf prov:Activity ;
48
+ rdfs:label "MatchInitiation" ;
49
+ rdfs:comment "A broker's act of initiating a match between two compatible Intents. Distinct from IntentMatch (the accepted relation). Smart-agent SS-03 invariant." .
50
+
51
+ apint:IntentMatch a owl:Class ;
52
+ rdfs:subClassOf prov:Activity ;
53
+ rdfs:label "IntentMatch" ;
54
+ rdfs:comment "An accepted compatibility relation between two Intents. Layer 7 of the spine. Smart-agent SS-02 invariant: both parties signal acceptance before promotion." .
55
+
56
+ apint:Commitment a owl:Class ;
57
+ rdfs:subClassOf vf:Commitment ;
58
+ rdfs:label "Commitment" ;
59
+ rdfs:comment "A dual-signed envelope produced from an IntentMatch; the input to the Agreement layer (spec 241). Layer 7→8 bridge." .
60
+
61
+ apint:Proposal a owl:Class ;
62
+ rdfs:subClassOf prov:Entity ;
63
+ rdfs:label "Proposal" ;
64
+ rdfs:comment "A signed candidate solution to an expressed Intent. UniswapX-Order / CoW-Order-book-entry shape. Layer 5 of the spine. Pool Lane (W2)." .
65
+
66
+ apint:SolverBid a owl:Class ;
67
+ rdfs:subClassOf apint:Proposal ;
68
+ rdfs:label "SolverBid" ;
69
+ rdfs:comment "A solver's competitive bid + match score + reason + predicted outcome + cost estimate + trust certificate. Layer 6 of the spine. CoW / UniswapX / ERC-7683 solver competition. Pool/Proposal Lane (W2)." .
70
+
71
+ # ─── Intent properties ────────────────────────────────────────────────
72
+
73
+ apint:direction a owl:DatatypeProperty ;
74
+ rdfs:domain apint:Intent ;
75
+ rdfs:range xsd:string ;
76
+ rdfs:label "direction" ;
77
+ rdfs:comment "'receive' or 'give'. Single-class on Intent (Smart-agent SS-01 invariant). Matching rule: direction MUST be opposite + object MUST be equal." .
78
+
79
+ apint:object a owl:ObjectProperty ;
80
+ rdfs:domain apint:Intent ;
81
+ rdfs:range skos:Concept ;
82
+ rdfs:label "object" ;
83
+ rdfs:comment "The SKOS concept (e.g. apint:NeedCoaching) describing WHAT is wanted/offered. Matching rule: must be exactly equal between matched pair." .
84
+
85
+ apint:topic a owl:DatatypeProperty ;
86
+ rdfs:domain apint:Intent ;
87
+ rdfs:range xsd:string ;
88
+ rdfs:label "topic" ;
89
+ rdfs:comment "Free-text topic refinement; matched by topicSimilarity score (not equality)." .
90
+
91
+ apint:expressedBy a owl:ObjectProperty ;
92
+ rdfs:domain apint:Intent ;
93
+ rdfs:range ap:Agent ;
94
+ rdfs:label "expressedBy" ;
95
+ rdfs:comment "The Agent SA address that signed the Intent." .
96
+
97
+ apint:addressedTo a owl:ObjectProperty ;
98
+ rdfs:domain apint:Intent ;
99
+ rdfs:range ap:Agent ;
100
+ rdfs:label "addressedTo" ;
101
+ rdfs:comment "The intended recipients/audience of the Intent (broker, counterparty class, etc.)." .
102
+
103
+ apint:hasConstraintSet a owl:ObjectProperty ;
104
+ rdfs:domain apint:Intent ;
105
+ rdfs:range apcst:ConstraintSet ;
106
+ rdfs:label "hasConstraintSet" ;
107
+ rdfs:comment "Anoma-CSP-shaped constraints. First-class typed structure, NOT freeform payload (D-38)." .
108
+
109
+ apint:hasAssumptionSet a owl:ObjectProperty ;
110
+ rdfs:domain apint:Intent ;
111
+ rdfs:range apcst:AssumptionSet ;
112
+ rdfs:label "hasAssumptionSet" ;
113
+ rdfs:comment "Resolver-asserted assumptions (ERC-7683 pattern). Solvers MUST validate before bidding." .
114
+
115
+ apint:expectedOutcome a owl:ObjectProperty ;
116
+ rdfs:domain apint:Intent ;
117
+ rdfs:range prov:Entity ;
118
+ rdfs:label "expectedOutcome" ;
119
+ rdfs:comment "What success looks like — referenced when constructing OutcomeCredential at Layer 13." .
120
+
121
+ apint:visibility a owl:DatatypeProperty ;
122
+ rdfs:domain apint:Intent ;
123
+ rdfs:range xsd:string ;
124
+ rdfs:label "visibility" ;
125
+ rdfs:comment "Five-tier visibility: Public | PublicCoarse | PrivateCommitment | PrivateZK | OffchainOnly. Per privacy doc §4 Layer 2." .
126
+
127
+ apint:status a owl:DatatypeProperty ;
128
+ rdfs:domain apint:Intent ;
129
+ rdfs:range xsd:string ;
130
+ rdfs:label "status" ;
131
+ rdfs:comment "Intent state-machine status (per spec 239 §5)." .
132
+
133
+ apint:matchedWith a owl:ObjectProperty ;
134
+ rdfs:domain apint:IntentMatch ;
135
+ rdfs:range apint:Intent ;
136
+ rdfs:label "matchedWith" ;
137
+ rdfs:comment "An IntentMatch links exactly two compatible Intents (cardinality 2; enforced by SHACL in intent-marketplace)." .
@@ -0,0 +1,124 @@
1
+ # T-box — payment vocabulary (spine Layer 9b).
2
+ # x402 + AP2 + ERC-4337 paymaster aligned; spec 243.
3
+ # Spec 225 §11.5.
4
+ # Owning runtime SHACL: packages/payments/src/shapes/payment.shacl.ttl.
5
+
6
+ @prefix appay: <https://agenticprimitives.dev/ns/payment#> .
7
+ @prefix apvc: <https://agenticprimitives.dev/ns/credential#> .
8
+ @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
9
+ @prefix apagr: <https://agenticprimitives.dev/ns/agreement#> .
10
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
11
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
12
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
13
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
14
+
15
+ appay: a owl:Ontology ;
16
+ rdfs:label "Agentic Primitives — payment ontology" ;
17
+ owl:versionInfo "0.1.0" ;
18
+ rdfs:comment "Layer 9b of the spine. PaymentMandate + ContextBinding + MandateConstraints + Mode discrimination + PaymentReceipt." .
19
+
20
+ # ─── Core classes ─────────────────────────────────────────────────────
21
+
22
+ appay:PaymentMandate a owl:Class ;
23
+ rdfs:label "PaymentMandate" ;
24
+ rdfs:comment "Signed, scoped, context-bound payment authority. Distinct from PermissionGrant (which authorizes ACTIONS) and Agreement (which commits PARTIES). AP2 + x402 + ERC-4337 paymaster aligned." .
25
+
26
+ appay:OpenPaymentMandate a owl:Class ;
27
+ rdfs:subClassOf appay:PaymentMandate ;
28
+ rdfs:label "OpenPaymentMandate" ;
29
+ rdfs:comment "Autonomous-execution-allowed mandate. Refuses final-charge (PMT-10.1); closed mandate required for terminal transactions." .
30
+
31
+ appay:ClosedPaymentMandate a owl:Class ;
32
+ rdfs:subClassOf appay:PaymentMandate ;
33
+ rdfs:label "ClosedPaymentMandate" ;
34
+ rdfs:comment "One-shot mandate frozen to a specific target + amount. PMT-INV-14: maxRedemptions = 1 always." .
35
+
36
+ appay:PaymentReceipt a owl:Class ;
37
+ rdfs:subClassOf apvc:VerifiableCredential ;
38
+ rdfs:label "PaymentReceipt" ;
39
+ rdfs:comment "Immutable VC issued by rail executor on successful redemption. Asserted to AttestationRegistry; PMT-INV-11: no revoke entrypoint." .
40
+
41
+ appay:MandateConstraints a owl:Class ;
42
+ rdfs:label "MandateConstraints" ;
43
+ rdfs:comment "AP2-style aggregate scope: maxAggregateAmount, frequency, categories, geoFence, timeOfDay. Orthogonal to per-redemption amountPolicy." .
44
+
45
+ appay:ContextBinding a owl:Class ;
46
+ rdfs:label "ContextBinding" ;
47
+ rdfs:comment "Hard substrate invariant (PMT-3): payment signatures bind to intentId / taskId / agreementCommitment / artifactHash / resource. PMT-INV-01: at least one MUST be populated." .
48
+
49
+ appay:PaymentRail a owl:Class ;
50
+ rdfs:label "PaymentRail" ;
51
+ rdfs:comment "Rail discriminator: x402 | wallet | sponsored-userop | escrow (W2) | invoice (W2) | confidential-* (W2)." .
52
+
53
+ # ─── Properties ───────────────────────────────────────────────────────
54
+
55
+ appay:payer a owl:ObjectProperty ;
56
+ rdfs:domain appay:PaymentMandate ;
57
+ rdfs:range ap:Agent ;
58
+ rdfs:label "payer" .
59
+
60
+ appay:payee a owl:ObjectProperty ;
61
+ rdfs:domain appay:PaymentMandate ;
62
+ rdfs:range ap:Agent ;
63
+ rdfs:label "payee" .
64
+
65
+ appay:granter a owl:ObjectProperty ;
66
+ rdfs:domain appay:PaymentMandate ;
67
+ rdfs:range ap:Agent ;
68
+ rdfs:label "granter" ;
69
+ rdfs:comment "The SA that signed the mandate (== payer for direct; delegator for delegated)." .
70
+
71
+ appay:rail a owl:DatatypeProperty ;
72
+ rdfs:domain appay:PaymentMandate ;
73
+ rdfs:range xsd:string ;
74
+ rdfs:label "rail" ;
75
+ rdfs:comment "Rail name. PMT-INV-09: x402-rail requires contextBinding.resource populated." .
76
+
77
+ appay:mode a owl:DatatypeProperty ;
78
+ rdfs:domain appay:PaymentMandate ;
79
+ rdfs:range xsd:string ;
80
+ rdfs:label "mode" ;
81
+ rdfs:comment "'open' | 'closed'. AP2-aligned. PMT-10.1: open refuses final-charge." .
82
+
83
+ appay:requiresClosedMandateForFinalCharge a owl:DatatypeProperty ;
84
+ rdfs:domain appay:OpenPaymentMandate ;
85
+ rdfs:range xsd:boolean ;
86
+ rdfs:label "requiresClosedMandateForFinalCharge" ;
87
+ rdfs:comment "Default true. Refuses final-charge unless a closed mandate is presented." .
88
+
89
+ appay:contextBindingIntent a owl:ObjectProperty ;
90
+ rdfs:domain appay:ContextBinding ;
91
+ rdfs:range apint:Intent ;
92
+ rdfs:label "contextBindingIntent" .
93
+
94
+ appay:contextBindingAgreement a owl:ObjectProperty ;
95
+ rdfs:domain appay:ContextBinding ;
96
+ rdfs:range apagr:AgreementCommitment ;
97
+ rdfs:label "contextBindingAgreement" .
98
+
99
+ appay:chain a owl:DatatypeProperty ;
100
+ rdfs:domain appay:PaymentMandate ;
101
+ rdfs:range xsd:integer ;
102
+ rdfs:label "chain" ;
103
+ rdfs:comment "Chain ID. PMT-INV-03: redemption only on this chain." .
104
+
105
+ appay:maxAggregateAmount a owl:DatatypeProperty ;
106
+ rdfs:domain appay:MandateConstraints ;
107
+ rdfs:range xsd:decimal ;
108
+ rdfs:label "maxAggregateAmount" .
109
+
110
+ appay:nonce a owl:DatatypeProperty ;
111
+ rdfs:domain appay:PaymentMandate ;
112
+ rdfs:range xsd:integer ;
113
+ rdfs:label "nonce" .
114
+
115
+ appay:maxRedemptions a owl:DatatypeProperty ;
116
+ rdfs:domain appay:PaymentMandate ;
117
+ rdfs:range xsd:integer ;
118
+ rdfs:label "maxRedemptions" ;
119
+ rdfs:comment "Default 1 (one-shot). For closed mandates: PMT-INV-14 always 1." .
120
+
121
+ appay:expiresAt a owl:DatatypeProperty ;
122
+ rdfs:domain appay:PaymentMandate ;
123
+ rdfs:range xsd:dateTime ;
124
+ rdfs:label "expiresAt" .