@agenticprimitives/ontology 0.1.0-alpha.3 → 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,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" .
@@ -0,0 +1,108 @@
1
+ # T-box — resolution + ResolutionReceipt vocabulary (spine Layer 4; skeleton W1).
2
+ # ERC-7683 Resolver pattern; W2 grows the full surface.
3
+ # RR-INV-01..05 enforced by intent-marketplace + intent-resolver runtime SHACL.
4
+
5
+ @prefix apres: <https://agenticprimitives.dev/ns/resolution#> .
6
+ @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
7
+ @prefix apcst: <https://agenticprimitives.dev/ns/constraint#> .
8
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
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
+ apres: a owl:Ontology ;
15
+ rdfs:label "Agentic Primitives — resolution ontology" ;
16
+ owl:versionInfo "0.1.0-skeleton" ;
17
+ rdfs:comment "Layer 4 of the spine. W1 ships skeleton (types + PassThroughResolver); full vocabulary lands W2 when resolver implementations ship." .
18
+
19
+ # ─── Resolver classes ─────────────────────────────────────────────────
20
+
21
+ apres:Resolver a owl:Class ;
22
+ rdfs:subClassOf ap:Agent ;
23
+ rdfs:label "Resolver" ;
24
+ rdfs:comment "An Agent that performs Intent resolution — translates opaque expressed Intent → ResolvedOrder. ERC-7683 Resolver-contract parallel." .
25
+
26
+ apres:ResolvedOrder a owl:Class ;
27
+ rdfs:subClassOf prov:Entity ;
28
+ rdfs:label "ResolvedOrder" ;
29
+ rdfs:comment "Normalized executable form of an Intent. Layer 4 output. Bridges from CSP-shaped Intent to Solver-fillable Order (Layer 5+6)." .
30
+
31
+ apres:ResolutionReceipt a owl:Class ;
32
+ rdfs:subClassOf prov:Entity ;
33
+ rdfs:label "ResolutionReceipt" ;
34
+ rdfs:comment "Provenance + invariant record for a resolution: model + version + prompt hash + tool calls + confidence + policyChecks + requiresUserConfirmation. Authority-gating per RR-INV-01..05. NOT itself an authority object — provenance only." .
35
+
36
+ apres:PolicyCheckResult a owl:Class ;
37
+ rdfs:label "PolicyCheckResult" ;
38
+ rdfs:comment "A single policy check + pass/fail + rationale; recorded in a ResolutionReceipt." .
39
+
40
+ apres:ToolCallTrace a owl:Class ;
41
+ rdfs:label "ToolCallTrace" ;
42
+ rdfs:comment "An MCP tool call invocation captured for resolution provenance (toolName + inputHash + outputHash + durationMs)." .
43
+
44
+ # ─── Properties ───────────────────────────────────────────────────────
45
+
46
+ apres:resolvedFrom a owl:ObjectProperty ;
47
+ rdfs:domain apres:ResolvedOrder ;
48
+ rdfs:range apint:Intent ;
49
+ rdfs:label "resolvedFrom" .
50
+
51
+ apres:canonicalConstraints a owl:ObjectProperty ;
52
+ rdfs:domain apres:ResolvedOrder ;
53
+ rdfs:range apcst:ConstraintSet ;
54
+ rdfs:label "canonicalConstraints" .
55
+
56
+ apres:expandedAssumptions a owl:ObjectProperty ;
57
+ rdfs:domain apres:ResolvedOrder ;
58
+ rdfs:range apcst:AssumptionSet ;
59
+ rdfs:label "expandedAssumptions" .
60
+
61
+ apres:resolverAgent a owl:ObjectProperty ;
62
+ rdfs:domain apres:ResolutionReceipt ;
63
+ rdfs:range apres:Resolver ;
64
+ rdfs:label "resolverAgent" .
65
+
66
+ apres:resolverVersion a owl:DatatypeProperty ;
67
+ rdfs:domain apres:ResolutionReceipt ;
68
+ rdfs:range xsd:string ;
69
+ rdfs:label "resolverVersion" .
70
+
71
+ apres:modelName a owl:DatatypeProperty ;
72
+ rdfs:domain apres:ResolutionReceipt ;
73
+ rdfs:range xsd:string ;
74
+ rdfs:label "modelName" ;
75
+ rdfs:comment "LLM model name when present (e.g. 'claude-opus-4-7', 'gpt-4.1'). Null for PassThrough." .
76
+
77
+ apres:confidence a owl:DatatypeProperty ;
78
+ rdfs:domain apres:ResolutionReceipt ;
79
+ rdfs:range xsd:decimal ;
80
+ rdfs:label "confidence" ;
81
+ rdfs:comment "0..1. Substrate threshold determines requiresUserConfirmation." .
82
+
83
+ apres:requiresUserConfirmation a owl:DatatypeProperty ;
84
+ rdfs:domain apres:ResolutionReceipt ;
85
+ rdfs:range xsd:boolean ;
86
+ rdfs:label "requiresUserConfirmation" ;
87
+ rdfs:comment "Authority gate (RR-INV-01). TRUE blocks downstream layers until user signs the canonical Intent + ConstraintSet bytes." .
88
+
89
+ apres:userConfirmedAt a owl:DatatypeProperty ;
90
+ rdfs:domain apres:ResolutionReceipt ;
91
+ rdfs:range xsd:dateTime ;
92
+ rdfs:label "userConfirmedAt" .
93
+
94
+ apres:policyVersion a owl:DatatypeProperty ;
95
+ rdfs:domain apres:ResolutionReceipt ;
96
+ rdfs:range xsd:string ;
97
+ rdfs:label "policyVersion" ;
98
+ rdfs:comment "Hash of the resolver policy at resolution time. Audit replay." .
99
+
100
+ apres:hasPolicyCheck a owl:ObjectProperty ;
101
+ rdfs:domain apres:ResolutionReceipt ;
102
+ rdfs:range apres:PolicyCheckResult ;
103
+ rdfs:label "hasPolicyCheck" .
104
+
105
+ apres:hasToolCall a owl:ObjectProperty ;
106
+ rdfs:domain apres:ResolutionReceipt ;
107
+ rdfs:range apres:ToolCallTrace ;
108
+ rdfs:label "hasToolCall" .
@@ -0,0 +1,30 @@
1
+ # T-box — generic skills substrate (spec 251). Class + property definitions for the
2
+ # definition-vs-claim model. The DEFINITION is a public on-chain anchor
3
+ # (SkillDefinitionRegistry); the CLAIM is an off-chain vault credential pointing to a
4
+ # definition. NEUTRAL substrate — no domain/faith vocabulary.
5
+
6
+ @prefix aps: <https://agenticprimitives.dev/ns/skill#> .
7
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
8
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
11
+
12
+ aps:Skill a rdfs:Class ;
13
+ rdfs:label "Skill" ;
14
+ rdfs:comment "A versioned, PUBLIC, generic capability definition. Anchored on chain by SkillDefinitionRegistry (id, version, steward, kind, conceptHash, ontologyMerkleRoot, metadataURI, validity)." .
15
+
16
+ aps:SkillClaim a rdfs:Class ;
17
+ rdfs:label "SkillClaim" ;
18
+ rdfs:comment "An OFF-CHAIN verifiable credential asserting a subject Smart Agent's relation to an aps:Skill (pinned definitionId+version). Lives in the subject's private vault; never an on-chain row." .
19
+
20
+ aps:definitionId a rdf:Property ; rdfs:domain aps:SkillClaim ; rdfs:range aps:Skill ;
21
+ rdfs:comment "The on-chain (skillId, version) this claim credential references." .
22
+ aps:hasSkillKind a rdf:Property ; rdfs:domain aps:Skill ;
23
+ rdfs:comment "An aps:skillKind value (C-box codelist; on-chain-bound)." .
24
+ aps:claimSubject a rdf:Property ; rdfs:domain aps:SkillClaim ; rdfs:range ap:CanonicalAgentId ;
25
+ rdfs:comment "The subject Smart Agent (Address) the claim is about." .
26
+ aps:claimIssuer a rdf:Property ; rdfs:domain aps:SkillClaim ; rdfs:range ap:CanonicalAgentId .
27
+ aps:claimRelation a rdf:Property ; rdfs:domain aps:SkillClaim ;
28
+ rdfs:comment "An aps:skillRelation value (C-box codelist)." .
29
+ aps:claimVisibilityMode a rdf:Property ; rdfs:domain aps:SkillClaim ;
30
+ rdfs:comment "An aps:claimVisibility value (C-box codelist)." .