@agenticprimitives/ontology 1.0.0-alpha.4 → 1.0.0-alpha.40
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 +59 -21
- package/cbox/agent-facet-shapes.shacl.ttl +130 -0
- package/cbox/capability-catalog-shapes.shacl.ttl +284 -0
- package/cbox/card-projection-shapes.shacl.ttl +216 -0
- package/cbox/consultation-shapes.shacl.ttl +85 -0
- package/cbox/content-vocabulary.ttl +52 -0
- package/cbox/controlled-vocabularies.ttl +224 -4
- package/cbox/discovery-graph-shapes.shacl.ttl +284 -0
- package/cbox/familyoffice-shapes.shacl.ttl +92 -0
- package/cbox/familyoffice-vocabulary.ttl +48 -0
- package/cbox/geo-vocabulary.ttl +36 -0
- package/cbox/guidance-vocabulary.ttl +22 -0
- package/cbox/interaction-shapes.shacl.ttl +218 -0
- package/cbox/interaction-vocabulary.ttl +159 -0
- package/cbox/judgment-shapes.shacl.ttl +83 -0
- package/cbox/naming-registry-shapes.shacl.ttl +272 -0
- package/cbox/org-team-shapes.shacl.ttl +184 -0
- package/cbox/privacy-credential-shapes.shacl.ttl +187 -0
- package/cbox/profile-facet-vocabulary.ttl +50 -0
- package/cbox/registry-vocabulary.ttl +86 -0
- package/cbox/run-measures-shapes.shacl.ttl +59 -0
- package/cbox/run-provenance-shapes.shacl.ttl +264 -0
- package/cbox/scope-vocabulary.ttl +112 -0
- package/cbox/skill-grounding-vocabulary.ttl +18 -0
- package/cbox/skill-vocabulary.ttl +50 -0
- package/context.jsonld +37 -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 +9 -2
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +153 -2
- 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/evaluation-context.d.ts +134 -0
- package/dist/evaluation-context.d.ts.map +1 -0
- package/dist/evaluation-context.js +136 -0
- package/dist/evaluation-context.js.map +1 -0
- package/dist/governance.d.ts +84 -0
- package/dist/governance.d.ts.map +1 -0
- package/dist/governance.js +88 -0
- package/dist/governance.js.map +1 -0
- package/dist/grounded-vocabulary.d.ts +29 -0
- package/dist/grounded-vocabulary.d.ts.map +1 -0
- package/dist/grounded-vocabulary.js +110 -0
- package/dist/grounded-vocabulary.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 +1091 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1323 -5
- package/dist/index.js.map +1 -1
- package/dist/outcomes.d.ts +47 -0
- package/dist/outcomes.d.ts.map +1 -0
- package/dist/outcomes.js +40 -0
- package/dist/outcomes.js.map +1 -0
- package/dist/participant-vocabulary.d.ts +57 -0
- package/dist/participant-vocabulary.d.ts.map +1 -0
- package/dist/participant-vocabulary.js +66 -0
- package/dist/participant-vocabulary.js.map +1 -0
- package/dist/party-roles.d.ts +115 -0
- package/dist/party-roles.d.ts.map +1 -0
- package/dist/party-roles.js +343 -0
- package/dist/party-roles.js.map +1 -0
- package/dist/payload-classes.d.ts +22 -0
- package/dist/payload-classes.d.ts.map +1 -0
- package/dist/payload-classes.js +30 -0
- package/dist/payload-classes.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/principles.generated.d.ts +11 -0
- package/dist/principles.generated.d.ts.map +1 -0
- package/dist/principles.generated.js +293 -0
- package/dist/principles.generated.js.map +1 -0
- package/dist/published-works.d.ts +13 -0
- package/dist/published-works.d.ts.map +1 -0
- package/dist/published-works.js +18 -0
- package/dist/published-works.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-measures-context.d.ts +74 -0
- package/dist/run-measures-context.d.ts.map +1 -0
- package/dist/run-measures-context.js +77 -0
- package/dist/run-measures-context.js.map +1 -0
- package/dist/run-provenance-context.d.ts +315 -0
- package/dist/run-provenance-context.d.ts.map +1 -0
- package/dist/run-provenance-context.js +323 -0
- package/dist/run-provenance-context.js.map +1 -0
- package/dist/transitions.d.ts +42 -0
- package/dist/transitions.d.ts.map +1 -0
- package/dist/transitions.js +100 -0
- package/dist/transitions.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 +777 -0
- package/dist/vault-records.js.map +1 -0
- package/dist/versions.generated.d.ts +262 -0
- package/dist/versions.generated.d.ts.map +1 -0
- package/dist/versions.generated.js +318 -0
- package/dist/versions.generated.js.map +1 -0
- package/evaluation.jsonld +133 -0
- package/mappings/actor-context-standards.ttl +89 -0
- package/mappings/agent-discovery-standards.ttl +127 -0
- package/mappings/collaboration-crosswalk-actors.ttl +30 -0
- package/mappings/collaboration-crosswalk-authority.ttl +31 -0
- package/mappings/collaboration-crosswalk-guidance.ttl +29 -0
- package/mappings/collaboration-crosswalk-intent.ttl +29 -0
- package/mappings/collaboration-crosswalk-messaging.ttl +37 -0
- package/mappings/collaboration-crosswalk-organization.ttl +66 -0
- package/mappings/collaboration-crosswalk-protocols.ttl +49 -0
- package/mappings/collaboration-crosswalk-skills.ttl +50 -0
- package/mappings/collaboration-profile.ttl +82 -0
- package/mappings/commerce-engagement-crosswalk.ttl +83 -0
- package/mappings/spine-standards.ttl +83 -0
- package/package.json +31 -9
- package/run-measures.jsonld +34 -0
- package/run-provenance.jsonld +314 -0
- package/tbox/actor-context.ttl +145 -0
- package/tbox/agent-resolution.ttl +308 -0
- package/tbox/agreement.ttl +77 -0
- package/tbox/attestation.ttl +156 -0
- package/tbox/card-projection.ttl +350 -0
- package/tbox/constraints.ttl +150 -0
- package/tbox/contact.ttl +61 -0
- package/tbox/content.ttl +76 -0
- package/tbox/context.ttl +508 -0
- package/tbox/coordination.ttl +263 -0
- package/tbox/core.ttl +325 -7
- package/tbox/dcat-imports.ttl +19 -0
- package/tbox/discovery.ttl +273 -0
- package/tbox/dqv-imports.ttl +29 -0
- package/tbox/earl-imports.ttl +32 -0
- package/tbox/engagement.ttl +349 -0
- package/tbox/entitlement.ttl +41 -0
- package/tbox/estate.ttl +78 -0
- package/tbox/evaluation.ttl +330 -0
- package/tbox/execution.ttl +720 -0
- package/tbox/familyoffice.ttl +87 -0
- package/tbox/fulfillment.ttl +140 -0
- package/tbox/geo.ttl +28 -0
- package/tbox/governance.ttl +67 -0
- package/tbox/guidance.ttl +40 -0
- package/tbox/household.ttl +142 -0
- package/tbox/identity.ttl +133 -6
- package/tbox/inference.ttl +177 -0
- package/tbox/intents.ttl +241 -0
- package/tbox/interaction.ttl +297 -0
- package/tbox/messaging.ttl +244 -0
- package/tbox/naming.ttl +114 -0
- package/tbox/org.ttl +410 -0
- package/tbox/payload.ttl +94 -0
- package/tbox/payment.ttl +124 -0
- package/tbox/plan.ttl +169 -0
- package/tbox/principles.ttl +212 -0
- package/tbox/privacy-credential.ttl +436 -0
- package/tbox/profile.ttl +107 -0
- package/tbox/prov-imports.ttl +73 -0
- package/tbox/registry.ttl +382 -0
- package/tbox/resolution.ttl +108 -0
- package/tbox/scope.ttl +59 -0
- package/tbox/security-exposure.ttl +102 -0
- package/tbox/situation.ttl +56 -0
- package/tbox/skills.ttl +316 -0
- package/tbox/skos-imports.ttl +54 -0
- package/tbox/transition.ttl +63 -0
- package/tbox/trust.ttl +210 -0
- package/tbox/values.ttl +81 -0
- package/tbox/verification-receipt.ttl +134 -0
- package/versions.adoption.json +173 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# T-box — coordination vocabulary (spec 332 §3; ADR-0054).
|
|
2
|
+
#
|
|
3
|
+
# The Endeavor is the durable, multi-principal coordination Situation — the thing a person or org
|
|
4
|
+
# posts as a request ("issue", "work item", "case", "project" in product vocabulary) and a group
|
|
5
|
+
# coordinates to satisfy. Everything around it is REUSED, never re-minted: goals are apint:Intent,
|
|
6
|
+
# capability requirements are aps:Capability + assertion strengths (ADR-0053), execution is
|
|
7
|
+
# apful:Task / apexec:ServiceExecution, evidence is apatt:, conversation is fabric. What is new is
|
|
8
|
+
# the durable middle: shared plan, participation, allocation, commitment.
|
|
9
|
+
#
|
|
10
|
+
# ── W0 SUBSET (the execution.ttl rule) ───────────────────────────────────────────────────────────
|
|
11
|
+
# This module declares EXACTLY the spec-332 core subset — the classes the wave-1 package, the
|
|
12
|
+
# provenance projection, and the coverage ledger reference — PLUS apcoord:Recommendation, whose
|
|
13
|
+
# reader shipped with the spec-334 W4 agent-triage slice. The REST of the spec-333 vocabulary
|
|
14
|
+
# (DecisionRequest, Risk, CapacityOffer, EndeavorCollection, …) is SPECIFIED but NOT declared here:
|
|
15
|
+
# vocabulary minted ahead of a reader is a named mistake, and the coverage ledger carries each
|
|
16
|
+
# term's honest status instead. When spec 333's wave lands, it EXTENDS this file.
|
|
17
|
+
#
|
|
18
|
+
# ── The doctrine that governs everything below (ADR-0054 §4) ─────────────────────────────────────
|
|
19
|
+
# ALLOCATION IS NEVER AUTHORITY. capable / available / allocated / committed / authorized /
|
|
20
|
+
# performing / satisfied are SEVEN separate facts. No gate reads an apcoord: term; a Recommendation,
|
|
21
|
+
# a plan step, a participation role, or a commitment grants nothing — authority remains
|
|
22
|
+
# delegation ∩ entitlement ∩ policy, evaluated at the gate at the moment of use.
|
|
23
|
+
|
|
24
|
+
@prefix apcoord: <https://agenticprimitives.dev/ns/coordination#> .
|
|
25
|
+
@prefix apsit: <https://agenticprimitives.dev/ns/situation#> .
|
|
26
|
+
@prefix apint: <https://agenticprimitives.dev/ns/intent#> .
|
|
27
|
+
@prefix ap: <https://agenticprimitives.dev/ns/core#> .
|
|
28
|
+
@prefix p-plan: <http://purl.org/net/p-plan#> .
|
|
29
|
+
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
30
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
31
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
32
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
33
|
+
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
|
34
|
+
|
|
35
|
+
apcoord: a owl:Ontology ;
|
|
36
|
+
rdfs:label "Agentic Primitives — coordination ontology (spec 332 core subset)" ;
|
|
37
|
+
owl:versionInfo "0.1.0" ;
|
|
38
|
+
rdfs:comment "The durable coordination plane: Endeavor (a multi-principal Situation pursuing an outcome), its intake, shared plan, and participation lifecycle. Runtime record shapes live in @agenticprimitives/coordination. Spec 333 extends this module in its own wave." ;
|
|
39
|
+
skos:scopeNote "BETWEEN-AGENTS plane (coordination-vs-orchestration.md). Coordination schedules work between agents: participants are resolved through DISCOVERY (agent-naming, registry-kit, apdisc: capability-level matching) and needs are stated as aps:Capability requirements — never MCP tool ids or SKILL.md content. Distinct from apexec: (the WITHIN-AGENT orchestration plane); the only seam is compilation provenance in plan.ttl." .
|
|
40
|
+
|
|
41
|
+
# ═══ Intake + the Endeavor itself ════════════════════════════════════════════
|
|
42
|
+
|
|
43
|
+
apcoord:EndeavorRequest a owl:Class ;
|
|
44
|
+
rdfs:subClassOf prov:Entity ;
|
|
45
|
+
rdfs:label "EndeavorRequest" ;
|
|
46
|
+
rdfs:comment "Structured intake BEFORE adoption: goal statement, requester, target principal, entry-point context. Not yet a commitment by anyone. One engine, many doors (ADR-0054 §2): a Home request, a discussion @ask, a 1:1 inbox ask, and an A2A intent response all produce this same entity — the door sets intake context and default profile, never a different model." .
|
|
47
|
+
|
|
48
|
+
apcoord:Endeavor a owl:Class ;
|
|
49
|
+
rdfs:subClassOf apsit:Situation ;
|
|
50
|
+
rdfs:label "Endeavor" ;
|
|
51
|
+
rdfs:comment "A PERSISTENT, MULTI-PRINCIPAL Situation pursuing a desired outcome — the durable coordination object products call issue/work item/case/project. Distinct from the run-specific execution it spawns and from the conversation about it. Vault-resident, managing-principal single-writer in V1." .
|
|
52
|
+
|
|
53
|
+
apcoord:OutcomeSpecification a owl:Class ;
|
|
54
|
+
rdfs:subClassOf prov:Entity ;
|
|
55
|
+
rdfs:label "OutcomeSpecification" ;
|
|
56
|
+
rdfs:comment "The OBSERVABLE success definition for an Endeavor; versioned (revisions are new entities). Satisfaction is evidenced through apatt: Outcome/Validation attestations, never asserted by fiat." .
|
|
57
|
+
|
|
58
|
+
apcoord:OutcomeCriterion a owl:Class ;
|
|
59
|
+
rdfs:subClassOf prov:Entity ;
|
|
60
|
+
rdfs:label "OutcomeCriterion" ;
|
|
61
|
+
rdfs:comment "One measurable, attestable, or reviewable success condition inside an OutcomeSpecification. Also the definition substance of milestones — a milestone is criteria, not merely a date." .
|
|
62
|
+
|
|
63
|
+
apcoord:EndeavorRelation a owl:Class ;
|
|
64
|
+
rdfs:label "EndeavorRelation" ;
|
|
65
|
+
rdfs:comment "Reified TYPED link between Endeavors: depends-on | blocks | contributes-to | duplicates | supersedes | related-to | child-of (composite Endeavors). Never one overloaded 'related' edge; hierarchy (child-of) is distinct from collection membership (spec 333) and from PlanStep decomposition." .
|
|
66
|
+
|
|
67
|
+
# ═══ The shared plan (P-Plan-grounded; see plan.ttl for the trichotomy) ═══════
|
|
68
|
+
|
|
69
|
+
apcoord:CoordinationPlan a owl:Class ;
|
|
70
|
+
rdfs:subClassOf p-plan:Plan ;
|
|
71
|
+
rdfs:label "CoordinationPlan" ;
|
|
72
|
+
rdfs:comment "The DURABLE, VERSIONED, SHARED plan of an Endeavor. Revisions are new entities (prov:wasRevisionOf chains); adoption is an explicit decision, never implicit. COMPILES INTO run-specific apexec:ExecutionPlans — never a synonym for one (ADR-0054 §3). Content-hashed: commitments and executions bind the exact revision hash." .
|
|
73
|
+
|
|
74
|
+
apcoord:PlanStep a owl:Class ;
|
|
75
|
+
rdfs:subClassOf p-plan:Step ;
|
|
76
|
+
rdfs:label "PlanStep" ;
|
|
77
|
+
rdfs:comment "One prescribed contribution, interaction, decision, aggregation, or validation inside a CoordinationPlan (p-plan:isStepOfPlan). Executed activities point back via p-plan:correspondsToStep. May carry capability requirements (aps:Capability + minimum assertion strength) — a requirement, never a permission." .
|
|
78
|
+
|
|
79
|
+
apcoord:PlanEdge a owl:Class ;
|
|
80
|
+
rdfs:label "PlanEdge" ;
|
|
81
|
+
rdfs:comment "Reified typed step relation: precedes (projects onto p-plan:isPrecededBy) | depends-on | alternative | condition | compensates | refines." .
|
|
82
|
+
|
|
83
|
+
apcoord:MilestoneDefinition a owl:Class ;
|
|
84
|
+
rdfs:subClassOf prov:Entity ;
|
|
85
|
+
rdfs:label "MilestoneDefinition" ;
|
|
86
|
+
rdfs:comment "A named convergence point DEFINED BY CRITERIA (OutcomeCriterion refs), not merely a date." .
|
|
87
|
+
|
|
88
|
+
apcoord:MilestoneAchievement a owl:Class ;
|
|
89
|
+
rdfs:subClassOf prov:Entity ;
|
|
90
|
+
rdfs:label "MilestoneAchievement" ;
|
|
91
|
+
rdfs:comment "Evidence that a milestone's criteria became true — references apatt: evidence; never a checkbox." .
|
|
92
|
+
|
|
93
|
+
# ═══ Participation lifecycle: proposal → allocation → commitment ══════════════
|
|
94
|
+
|
|
95
|
+
apcoord:EndeavorParticipation a owl:Class ;
|
|
96
|
+
rdfs:subClassOf apsit:Situation ;
|
|
97
|
+
rdfs:label "EndeavorParticipation" ;
|
|
98
|
+
rdfs:comment "A participant's relationship to an Endeavor: role + scope + validity. Generalizes the apmsg:DiscussionParticipation pattern — asserted through invitation-acceptance or allocation-commitment, never implied. The role (sponsor | coordinator | contributor | validator | beneficiary | observer) is an apsit:SituationRole: capacity, not permission." .
|
|
99
|
+
|
|
100
|
+
apcoord:ContributionProposal a owl:Class ;
|
|
101
|
+
rdfs:subClassOf prov:Entity ;
|
|
102
|
+
rdfs:label "ContributionProposal" ;
|
|
103
|
+
rdfs:comment "An offer to perform bounded PlanSteps. An offer binds nobody." .
|
|
104
|
+
|
|
105
|
+
apcoord:AllocationDecision a owl:Class ;
|
|
106
|
+
rdfs:subClassOf prov:Entity ;
|
|
107
|
+
rdfs:label "AllocationDecision" ;
|
|
108
|
+
rdfs:comment "The Endeavor's SELECTION of a participant for a contribution. GRANTS NOTHING — 'allocated' is the third of the seven separate facts (ADR-0054 §4), and no gate reads it. The product-familiar 'assignee' is a projection over allocation + commitment." .
|
|
109
|
+
|
|
110
|
+
apcoord:ContributionCommitment a owl:Class ;
|
|
111
|
+
rdfs:subClassOf prov:Entity ;
|
|
112
|
+
rdfs:label "ContributionCommitment" ;
|
|
113
|
+
rdfs:comment "The participant's SIGNED acceptance of bounded responsibility, binding the EXACT adopted plan revision hash. Signed via the universal signature paths (ERC-1271/6492/ECDSA/WebAuthn), fail-closed. STILL grants nothing: authorized remains a separate fact evaluated at the gate." .
|
|
114
|
+
|
|
115
|
+
# ═══ Decisions by declared approvers (spec 333 §3, shipped by spec 393; reader: @agenticprimitives/coordination /decisions) ═══
|
|
116
|
+
|
|
117
|
+
apcoord:ApprovalRequirement a owl:Class ;
|
|
118
|
+
rdfs:subClassOf prov:Entity ;
|
|
119
|
+
rdfs:label "ApprovalRequirement" ;
|
|
120
|
+
rdfs:comment "Declares WHO must approve: the addresses that may decide (the managing principal's address names the organization — a steward decides AS it), and a quorum. Quorum references organization/custody machinery (spec 333 §10 rule 3) — coordination never implements voting. Not authority: it names who may RECORD a decision, never what any step may do." .
|
|
121
|
+
|
|
122
|
+
apcoord:DecisionRequest a owl:Class ;
|
|
123
|
+
rdfs:subClassOf prov:Entity ;
|
|
124
|
+
rdfs:label "DecisionRequest" ;
|
|
125
|
+
rdfs:comment "A decision that must be supplied before something proceeds, raised for its ApprovalRequirement by the organization or an active participant, scoped to plan steps when it concerns them, with an optional window (dueAt). Pending until an approver records approved or rejected; a deferral leaves it pending." .
|
|
126
|
+
|
|
127
|
+
apcoord:DecisionRecord a owl:Class ;
|
|
128
|
+
rdfs:subClassOf prov:Entity ;
|
|
129
|
+
rdfs:label "DecisionRecord" ;
|
|
130
|
+
rdfs:comment "IMMUTABLE: who decided (the actor), on whose behalf (the organization when a steward decided as it), the outcome, the rationale, evidence refs, the scope, when. Never edited — a reversal is a new DecisionRequest citing the old. Admitted by the reducer only for an actor the requirement names: steward standing never substitutes for being named (spec 393 §1)." .
|
|
131
|
+
|
|
132
|
+
# ═══ Agent triage (spec 333 §3 — W4 minimal slice; reader: @agenticprimitives/coordination /decisions) ═══
|
|
133
|
+
|
|
134
|
+
apcoord:Recommendation a owl:Class ;
|
|
135
|
+
rdfs:subClassOf prov:Entity ;
|
|
136
|
+
rdfs:label "Recommendation" ;
|
|
137
|
+
rdfs:comment "AGENT-GENERATED, NON-AUTHORITATIVE proposed change: TYPED proposed commands + confidence + explanation + evidence, targeting a pending EndeavorRequest (triage, spec 334 §10) or an Endeavor. Lifecycle proposed → accepted | rejected, decided by the managing principal / a steward — NEVER auto-applied without an explicit CoordinationRule naming the class (spec 333 §5). Acceptance replays the proposed commands through ORDINARY command validation; a Recommendation grants nothing and no gate reads it." .
|
|
138
|
+
|
|
139
|
+
# ═══ Execution context + adapter boundary ═════════════════════════════════════
|
|
140
|
+
|
|
141
|
+
apcoord:CoordinationContextSnapshot a owl:Class ;
|
|
142
|
+
rdfs:subClassOf prov:Entity ;
|
|
143
|
+
rdfs:label "CoordinationContextSnapshot" ;
|
|
144
|
+
rdfs:comment "The IMMUTABLE, ENTITLEMENT-FILTERED, hash-addressed execution context handed to any executor: exact Endeavor revision, adopted plan hash, PlanStep, selected messages, selected artifacts, profiles, capability requirements, privacy filtering applied. Executions prov:used it by hash — reproducibility never requires handing anyone the whole discussion history." .
|
|
145
|
+
|
|
146
|
+
apcoord:ExternalObjectBinding a owl:Class ;
|
|
147
|
+
rdfs:subClassOf prov:Entity ;
|
|
148
|
+
rdfs:label "ExternalObjectBinding" ;
|
|
149
|
+
rdfs:comment "Stable mapping to an EXTERNAL product object + revision (Linear/Jira/Asana/…): provider, external id/revision, sync mode, provider-extension schema/payload refs. The adapters themselves live in sibling repos (ADR-0037); an imported vendor 'task' must be semantically classified (Request | PlanStep | Task | DecisionRequest | Risk | Impediment | …), never a generic WorkItem." .
|
|
150
|
+
|
|
151
|
+
# ═══ Properties ═══════════════════════════════════════════════════════════════
|
|
152
|
+
|
|
153
|
+
apcoord:adoptedFrom a owl:ObjectProperty ;
|
|
154
|
+
rdfs:domain apcoord:Endeavor ; rdfs:range apcoord:EndeavorRequest ;
|
|
155
|
+
rdfs:label "adoptedFrom" ;
|
|
156
|
+
rdfs:comment "Provenance back to intake: which request this Endeavor was adopted from." .
|
|
157
|
+
|
|
158
|
+
apcoord:hasOutcomeSpecification a owl:ObjectProperty ;
|
|
159
|
+
rdfs:domain apcoord:Endeavor ; rdfs:range apcoord:OutcomeSpecification ;
|
|
160
|
+
rdfs:label "hasOutcomeSpecification" .
|
|
161
|
+
|
|
162
|
+
apcoord:hasCriterion a owl:ObjectProperty ;
|
|
163
|
+
rdfs:domain apcoord:OutcomeSpecification ; rdfs:range apcoord:OutcomeCriterion ;
|
|
164
|
+
rdfs:label "hasCriterion" .
|
|
165
|
+
|
|
166
|
+
apcoord:hasRelation a owl:ObjectProperty ;
|
|
167
|
+
rdfs:domain apcoord:Endeavor ; rdfs:range apcoord:EndeavorRelation ;
|
|
168
|
+
rdfs:label "hasRelation" .
|
|
169
|
+
|
|
170
|
+
apcoord:relatedEndeavor a owl:ObjectProperty ;
|
|
171
|
+
rdfs:domain apcoord:EndeavorRelation ; rdfs:range apcoord:Endeavor ;
|
|
172
|
+
rdfs:label "relatedEndeavor" .
|
|
173
|
+
|
|
174
|
+
apcoord:relationKind a owl:ObjectProperty ;
|
|
175
|
+
rdfs:domain apcoord:EndeavorRelation ; rdfs:range skos:Concept ;
|
|
176
|
+
rdfs:label "relationKind" ;
|
|
177
|
+
rdfs:comment "depends-on | blocks | contributes-to | duplicates | supersedes | related-to | child-of (C-box codelist)." .
|
|
178
|
+
|
|
179
|
+
apcoord:plansEndeavor a owl:ObjectProperty ;
|
|
180
|
+
rdfs:domain apcoord:CoordinationPlan ; rdfs:range apcoord:Endeavor ;
|
|
181
|
+
rdfs:label "plansEndeavor" .
|
|
182
|
+
|
|
183
|
+
apcoord:edgeFrom a owl:ObjectProperty ;
|
|
184
|
+
rdfs:domain apcoord:PlanEdge ; rdfs:range apcoord:PlanStep ;
|
|
185
|
+
rdfs:label "edgeFrom" .
|
|
186
|
+
|
|
187
|
+
apcoord:edgeTo a owl:ObjectProperty ;
|
|
188
|
+
rdfs:domain apcoord:PlanEdge ; rdfs:range apcoord:PlanStep ;
|
|
189
|
+
rdfs:label "edgeTo" .
|
|
190
|
+
|
|
191
|
+
apcoord:edgeKind a owl:ObjectProperty ;
|
|
192
|
+
rdfs:domain apcoord:PlanEdge ; rdfs:range skos:Concept ;
|
|
193
|
+
rdfs:label "edgeKind" ;
|
|
194
|
+
rdfs:comment "precedes | depends-on | alternative | condition | compensates | refines (C-box codelist)." .
|
|
195
|
+
|
|
196
|
+
apcoord:achieves a owl:ObjectProperty ;
|
|
197
|
+
rdfs:domain apcoord:MilestoneAchievement ; rdfs:range apcoord:MilestoneDefinition ;
|
|
198
|
+
rdfs:label "achieves" .
|
|
199
|
+
|
|
200
|
+
apcoord:participatesIn a owl:ObjectProperty ;
|
|
201
|
+
rdfs:domain apcoord:EndeavorParticipation ; rdfs:range apcoord:Endeavor ;
|
|
202
|
+
rdfs:label "participatesIn" .
|
|
203
|
+
|
|
204
|
+
apcoord:proposesSteps a owl:ObjectProperty ;
|
|
205
|
+
rdfs:domain apcoord:ContributionProposal ; rdfs:range apcoord:PlanStep ;
|
|
206
|
+
rdfs:label "proposesSteps" .
|
|
207
|
+
|
|
208
|
+
apcoord:selectsProposal a owl:ObjectProperty ;
|
|
209
|
+
rdfs:domain apcoord:AllocationDecision ; rdfs:range apcoord:ContributionProposal ;
|
|
210
|
+
rdfs:label "selectsProposal" .
|
|
211
|
+
|
|
212
|
+
apcoord:acceptsAllocation a owl:ObjectProperty ;
|
|
213
|
+
rdfs:domain apcoord:ContributionCommitment ; rdfs:range apcoord:AllocationDecision ;
|
|
214
|
+
rdfs:label "acceptsAllocation" .
|
|
215
|
+
|
|
216
|
+
apcoord:bindsPlanRevision a owl:ObjectProperty ;
|
|
217
|
+
rdfs:domain apcoord:ContributionCommitment ; rdfs:range apcoord:CoordinationPlan ;
|
|
218
|
+
rdfs:label "bindsPlanRevision" ;
|
|
219
|
+
rdfs:comment "The EXACT adopted revision the commitment was signed against; a stale hash is a rejected commitment, never coerced forward." .
|
|
220
|
+
|
|
221
|
+
apcoord:planContentHash a owl:DatatypeProperty ;
|
|
222
|
+
rdfs:domain apcoord:CoordinationPlan ; rdfs:range xsd:string ;
|
|
223
|
+
rdfs:label "planContentHash" ;
|
|
224
|
+
rdfs:comment "Hash of steps+edges+milestones — the adoption, commitment, and adapter-provenance key. Same load-bearing role apexec:usedPlanContentHash plays for playbooks." .
|
|
225
|
+
|
|
226
|
+
apcoord:snapshotHash a owl:DatatypeProperty ;
|
|
227
|
+
rdfs:domain apcoord:CoordinationContextSnapshot ; rdfs:range xsd:string ;
|
|
228
|
+
rdfs:label "snapshotHash" .
|
|
229
|
+
|
|
230
|
+
apcoord:entryPoint a owl:ObjectProperty ;
|
|
231
|
+
rdfs:domain apcoord:EndeavorRequest ; rdfs:range skos:Concept ;
|
|
232
|
+
rdfs:label "entryPoint" ;
|
|
233
|
+
rdfs:comment "home-request | discussion-ask | inbox-ask | a2a-intent (C-box codelist). The door, recorded for provenance — never a different semantic model per door." .
|
|
234
|
+
|
|
235
|
+
# ═══ Spec 438 W1/W4 — how a commitment ENDS, and attribution as evidence ══════════════════════════
|
|
236
|
+
#
|
|
237
|
+
# A commitment that only ever reads "accepted" cannot be told apart from one that was kept. Three endings,
|
|
238
|
+
# and the difference between them is WHO SAYS SO: a discharge is asserted by the participant with evidence
|
|
239
|
+
# refs; a breach is DECLARED by the coordinator after the deadline and is a judgment about conduct; a lapse is
|
|
240
|
+
# neither party's fault. None is derived automatically by a timer — a timer produces a fact nobody asserted.
|
|
241
|
+
apcoord:CommitmentState a owl:Class ; rdfs:subClassOf skos:Concept ; rdfs:label "CommitmentState" ;
|
|
242
|
+
rdfs:comment "How a ContributionCommitment stands. The notations are the words the reducer actually persists — a scheme that renamed them would describe a system nobody runs. Still grants nothing: authorized remains a separate fact at the gate." .
|
|
243
|
+
apcoord:CommitmentStates a skos:ConceptScheme ; rdfs:label "Commitment states" .
|
|
244
|
+
apcoord:cs-active a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "active" ; skos:prefLabel "active" ; skos:definition "Signed and live. Where a commitment STAYS while nobody has asserted otherwise — never evidence that it is going well." .
|
|
245
|
+
apcoord:cs-fulfilled a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "fulfilled" ; skos:prefLabel "fulfilled" ; skos:definition "Discharged: the participant asserted completion CITING receipt references or a satisfied plan step. A discharge with no evidence reference is refused before append (spec 438 §3)." .
|
|
246
|
+
apcoord:cs-withdrawn a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "withdrawn" ; skos:prefLabel "withdrawn" ; skos:definition "The participant withdrew before the deadline. No blame is recorded." .
|
|
247
|
+
apcoord:cs-reallocated a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "reallocated" ; skos:prefLabel "reallocated" ; skos:definition "The contribution moved to another participant. The handoff never widens authority." .
|
|
248
|
+
apcoord:cs-breached a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "breached" ; skos:prefLabel "breached" ; skos:definition "The coordinator DECLARED the bounded responsibility unmet after its deadline. A judgment about conduct, and never a timer's output — nothing derives it (spec 438 §3)." .
|
|
249
|
+
apcoord:cs-lapsed a apcoord:CommitmentState ; skos:inScheme apcoord:CommitmentStates ; skos:notation "lapsed" ; skos:prefLabel "lapsed" ; skos:definition "The allocation expired with nobody at fault. Distinct from breach, which blames, and from withdrawn, which someone chose." .
|
|
250
|
+
|
|
251
|
+
# ATTRIBUTION IS EVIDENCE. Who contributed is provenance; how valuable is this; who gets PAID is an agreement
|
|
252
|
+
# plus a mandate, and the three are never the same record. A number produced here is readable by a person and
|
|
253
|
+
# by an agreement's author — and by no gate. The build enforces it (`check:attribution-not-entitlement`).
|
|
254
|
+
apcoord:AttributionPolicy a owl:Class ;
|
|
255
|
+
rdfs:subClassOf prov:Entity ;
|
|
256
|
+
rdfs:label "AttributionPolicy" ;
|
|
257
|
+
rdfs:comment "A DECLARED method for apportioning credit over a contribution graph (betweenness, path-count, declared weights) with its parameters and version, cited by digest. Declaring it is what makes the number arguable; an undeclared method is a verdict with no premises." .
|
|
258
|
+
|
|
259
|
+
apcoord:AttributionAssessment a owl:Class ;
|
|
260
|
+
rdfs:subClassOf prov:Entity ;
|
|
261
|
+
rdfs:label "AttributionAssessment" ;
|
|
262
|
+
rdfs:comment "The output of applying an AttributionPolicy to one Endeavor's contribution graph. EVIDENCE, NEVER AN ENTITLEMENT: no payment, mandate or agreement may take this as an input (spec 438 §7)." .
|
|
263
|
+
|
package/tbox/core.ttl
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# The on-chain OntologyTermRegistry / ShapeRegistry (ADR-0009) instantiate
|
|
4
4
|
# this vocabulary; off-chain TTL is the source of truth for the IRIs.
|
|
5
5
|
|
|
6
|
+
@prefix apsit: <https://agenticprimitives.dev/ns/situation#> .
|
|
6
7
|
@prefix ap: <https://agenticprimitives.dev/ns/core#> .
|
|
7
8
|
@prefix apid: <https://agenticprimitives.dev/ns/identity#> .
|
|
8
9
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
@@ -10,14 +11,17 @@
|
|
|
10
11
|
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
11
12
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
12
13
|
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
14
|
+
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
|
15
|
+
@prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .
|
|
13
16
|
|
|
14
17
|
ap: a owl:Ontology ;
|
|
15
18
|
rdfs:label "Agentic Primitives — core ontology" ;
|
|
16
|
-
owl:versionInfo "0.1
|
|
19
|
+
owl:versionInfo "0.2.1" .
|
|
17
20
|
|
|
18
21
|
# ─── Classes ──────────────────────────────────────────────────────────
|
|
19
22
|
|
|
20
23
|
ap:Agent a owl:Class ;
|
|
24
|
+
rdfs:subClassOf prov:Agent ;
|
|
21
25
|
rdfs:label "Agent" ;
|
|
22
26
|
rdfs:comment "The canonical ERC-4337 Smart Agent (ADR-0010). Every other node is a facet of, or edge to, an Agent. Identified by an ap:CanonicalAgentId." .
|
|
23
27
|
|
|
@@ -25,17 +29,127 @@ ap:CanonicalAgentId a owl:Class ;
|
|
|
25
29
|
rdfs:label "CanonicalAgentId" ;
|
|
26
30
|
rdfs:comment "A branded CAIP-10 account identifier (eip155:* / hedera:* / solana:*). The SSO subject + directory key (ADR-0016). Validated by ap:CanonicalAgentIdShape." .
|
|
27
31
|
|
|
28
|
-
#
|
|
29
|
-
#
|
|
32
|
+
# ─── The kind hierarchy (ADR-0046 + ADR-0061) ─────────────────────────
|
|
33
|
+
#
|
|
34
|
+
# THREE CLOSED ROOTS, aligned to PROV-O's trichotomy HERE in core (the mappings file keeps only
|
|
35
|
+
# skos matches): PersonAgent ⊑ prov:Person, OrganizationAgent ⊑ prov:Organization,
|
|
36
|
+
# ApplicationAgent ⊑ prov:SoftwareAgent. agentKind is 3-valued (person/org/service; cbox) and the
|
|
37
|
+
# wire value 'service' names the ApplicationAgent ROOT (ADR-0046 amendment 2026-08-29).
|
|
38
|
+
#
|
|
39
|
+
# A DERIVED-TYPE LAYER subclasses the roots (spec 346 §2.1; the ap:Treasury precedent, generalized):
|
|
40
|
+
# TeamAgent, AllianceAgent ⊑ OrganizationAgent
|
|
41
|
+
# ServiceAgent ⊑ ApplicationAgent (re-seated; was ⊑ Agent)
|
|
42
|
+
# WorkspaceAgent, Treasury, RegistryAgent ⊑ ServiceAgent
|
|
43
|
+
# A derived type is carried in the profile/kind record (ap:agentType + ap:serviceRole), NEVER by adding
|
|
44
|
+
# a value to agentKind. A name suffix names the derived type (.me .org .team .svc .workspace .treasury
|
|
45
|
+
# .registry) and is a CLAIM the on-chain record is checked against — never authority (ADR-0061).
|
|
46
|
+
# validator + treasury + registry are NOT agentKinds — they are KINDS OF SERVICE (⊑ ServiceAgent).
|
|
47
|
+
#
|
|
48
|
+
# EVERY SERVICE AGENT IS TWO THINGS: the AGENTIC PIECE (the application — the software that can act)
|
|
49
|
+
# and the SOCIAL AGENT it acts for (the workspace, the registry, the account). Only the first can
|
|
50
|
+
# sign; only the second has standing. ap:ServiceAgent carries that split in full — read it there
|
|
51
|
+
# before adding a service class, because a class that collapses the two grants authority to software.
|
|
52
|
+
ap:PersonAgent a owl:Class ;
|
|
53
|
+
rdfs:subClassOf ap:Agent , prov:Person ;
|
|
54
|
+
rdfs:label "Person Agent" ;
|
|
55
|
+
rdfs:comment "An agent of kind 'person' (agentKind=person) — a natural person's Smart Agent. A closed ROOT (prov:Person); its own derived type (the trivial specialization). Named by '.me'." .
|
|
56
|
+
|
|
57
|
+
ap:OrganizationAgent a owl:Class ;
|
|
58
|
+
rdfs:subClassOf ap:Agent , prov:Organization ;
|
|
59
|
+
rdfs:label "Organization Agent" ;
|
|
60
|
+
rdfs:comment "An agent of kind 'org' (agentKind=org) — an organization's Smart Agent, with members (aporg:memberOf). Membership is informational: being a member authorizes nothing, and authority to act for the org is a DELEGATION (ADR-0041) — not custody of its key, which is a third, separate thing (see ap:CustodyMember). A closed ROOT (prov:Organization); derived types TeamAgent and AllianceAgent subclass it. Named by '.org'." .
|
|
61
|
+
|
|
62
|
+
ap:ApplicationAgent a owl:Class ;
|
|
63
|
+
rdfs:subClassOf ap:Agent , prov:SoftwareAgent ;
|
|
64
|
+
rdfs:label "Application Agent" ;
|
|
65
|
+
rdfs:comment "The prov:SoftwareAgent ROOT (wire value 'service' in AgentType / atl:agentKind — ADR-0046 amendment 2026-08-29). Closed root; derived types subclass it. 'Software agent' is the class; 'service' is what most of ours DO, so ServiceAgent is a derived type under this root, not the root itself." .
|
|
66
|
+
|
|
30
67
|
ap:ServiceAgent a owl:Class ;
|
|
31
|
-
rdfs:subClassOf ap:
|
|
32
|
-
rdfs:label "
|
|
33
|
-
rdfs:
|
|
68
|
+
rdfs:subClassOf ap:ApplicationAgent ;
|
|
69
|
+
rdfs:label "Service Agent" ;
|
|
70
|
+
rdfs:seeAlso dul:SocialAgent ;
|
|
71
|
+
rdfs:comment """An agent of kind 'service' (agentKind=service) — DERIVED under ap:ApplicationAgent
|
|
72
|
+
(re-seated by ADR-0061; was ⊑ ap:Agent). Named by '.svc'. Service profiles, validators, assistants,
|
|
73
|
+
treasuries, workspace agents and registry operators are Service Agents.
|
|
74
|
+
|
|
75
|
+
TWO SIDES, AND THE SPLIT IS THE POINT. A service agent is an AGENTIC PIECE — an application
|
|
76
|
+
(⊑ ap:ApplicationAgent ⊑ prov:SoftwareAgent): running software that can act, hold a session key,
|
|
77
|
+
sign, and answer an A2A/MCP surface. It acts FOR a SOCIAL AGENT — the standing thing the acting is
|
|
78
|
+
for, which bears the accountability and can execute nothing itself:
|
|
79
|
+
|
|
80
|
+
ap:WorkspaceAgent acts for aporg:Workspace — the governed coordination plane
|
|
81
|
+
ap:RegistryAgent acts for apreg:Registry — the registry instance
|
|
82
|
+
ap:Treasury acts for the account it holds — its own standing, no separate node
|
|
83
|
+
|
|
84
|
+
The social side is a dul:SocialAgent in DOLCE's sense (an agentive social object: it acts only
|
|
85
|
+
through what acts for it), and it is deliberately NOT asserted as an ap:Agent and holds no Smart
|
|
86
|
+
Agent — it cannot sign, so it can never be the executor (spec 344 §1.3; ADR-0061 §4). That is
|
|
87
|
+
exactly why it needs an application. What falls out of the split: the '.workspace' / '.treasury' /
|
|
88
|
+
'.registry' NAME binds to the application, never to the institution; a delegation is granted TO the
|
|
89
|
+
application, and revoking it leaves the application inert while the institution is untouched; and
|
|
90
|
+
replacing the application does not change who the institution is.
|
|
91
|
+
|
|
92
|
+
Roles (indexer, relay, marketplace, assistant, …) are an OPEN set carried by ap:serviceRole and get
|
|
93
|
+
neither a class nor a suffix; only the roles that carry their own suffix, validation predicate and
|
|
94
|
+
posture (workspace, treasury, registry) are also derived classes.""" .
|
|
95
|
+
|
|
96
|
+
ap:TeamAgent a owl:Class ;
|
|
97
|
+
rdfs:subClassOf ap:OrganizationAgent ;
|
|
98
|
+
rdfs:label "Team Agent" ;
|
|
99
|
+
rdfs:comment """A CHARTERED org-kind Smart Agent operating within or across organizations
|
|
100
|
+
(aporg:TeamAffiliation): leadership, membership, continuity, responsibility, delegated
|
|
101
|
+
authority. An informal collection is aporg:WorkingGroup, not an agent. NOT a fourth agentKind
|
|
102
|
+
(the treasury⊂service precedent). ⊑ org:OrganizationalUnit under a sole 'chartered'
|
|
103
|
+
affiliation (mappings).""" .
|
|
104
|
+
|
|
105
|
+
ap:AllianceAgent a owl:Class ;
|
|
106
|
+
rdfs:subClassOf ap:OrganizationAgent ;
|
|
107
|
+
rdfs:label "Alliance Agent" ;
|
|
108
|
+
rdfs:comment """An org-kind Smart Agent whose members are organizations, existing only where real
|
|
109
|
+
joint authority is delegated. A loose partnership is
|
|
110
|
+
aporg:InterorganizationalCollaborationArrangement — a record, not an agent.""" .
|
|
111
|
+
|
|
112
|
+
ap:WorkspaceAgent a owl:Class ;
|
|
113
|
+
rdfs:subClassOf ap:ServiceAgent ;
|
|
114
|
+
rdfs:label "Workspace Agent" ;
|
|
115
|
+
rdfs:comment """The application that acts for ONE aporg:Workspace — the workspace's agentive face
|
|
116
|
+
(aporg:coordinatesWorkspace; the workspace points back with aporg:coordinatedBy). A service-kind SA
|
|
117
|
+
with serviceRole 'workspace', delegated by the workspace's GOVERNOR and named by '.workspace'. Never
|
|
118
|
+
an independent source of authority (spec 344 §2.1): revoke the governor's delegation and it is inert.
|
|
119
|
+
The workspace is the social side — an Entity that is never itself named and never signs (ADR-0061 §4).
|
|
120
|
+
Called 'workspace-coordinator' until 2026-08-31; renamed to sit beside treasury and registry, which
|
|
121
|
+
name the standing thing rather than the doing.""" .
|
|
34
122
|
|
|
35
123
|
ap:Treasury a owl:Class ;
|
|
36
124
|
rdfs:subClassOf ap:ServiceAgent ;
|
|
37
125
|
rdfs:label "Treasury" ;
|
|
38
|
-
rdfs:comment "
|
|
126
|
+
rdfs:comment """The application that acts for a custody-policy-governed asset account — a KIND OF
|
|
127
|
+
SERVICE (agentKind=service), distinguished by ProfileType/serviceType='treasury' (specs 210/217/225
|
|
128
|
+
§6). NOT a top-level agent kind. Named by '.treasury'. Its social side is the ACCOUNT — the standing
|
|
129
|
+
that owns the assets — which this stack does not give a separate node: one SA is both the account of
|
|
130
|
+
record and the piece that can move it, so what keeps the acting bounded is the custody policy rather
|
|
131
|
+
than a second class. The other service agents get two nodes because their institution (a workspace,
|
|
132
|
+
a registry) outlives and outranks any application that serves it.""" .
|
|
133
|
+
|
|
134
|
+
ap:RegistryAgent a owl:Class ;
|
|
135
|
+
rdfs:subClassOf ap:ServiceAgent ;
|
|
136
|
+
rdfs:label "Registry Agent" ;
|
|
137
|
+
rdfs:comment "The Service Agent that OPERATES a registry: admission, receipts, lifecycle log, discovery surface (spec 346 §7). Named by '.registry'; serviceRole 'registry' required; linked to its registry by apreg:operatesRegistry (range apreg:Registry). Signs RegistrationReceipts as the operator SA. The registry itself is an apreg:Registry (an Entity), never an agent; this class is its agentive face, exactly as WorkspaceAgent is the workspace's." .
|
|
138
|
+
|
|
139
|
+
ap:ChurchAgent a owl:Class ;
|
|
140
|
+
rdfs:subClassOf ap:OrganizationAgent ;
|
|
141
|
+
rdfs:label "Church Agent" ;
|
|
142
|
+
rdfs:comment "An organization-class Smart Agent of congregation shape (a gathered community with leadership, membership and continuity); named by '.church'. A DERIVED type under the closed Organization root — ADR-0061 amendment 2026-08-30 (a deliberate Ring-0 carve-out from the vertical-vocabulary rule: the KIND is general, its content stays in apps)." .
|
|
143
|
+
|
|
144
|
+
ap:HouseholdAgent a owl:Class ;
|
|
145
|
+
rdfs:subClassOf ap:OrganizationAgent ;
|
|
146
|
+
rdfs:label "Household Agent" ;
|
|
147
|
+
rdfs:comment "An organization-class Smart Agent of household shape: the family's own agent, chartered under a person, whose members are the people who live together with the roles and kinship the household model (aphh:) gives them (spec 368; ADR-0061 amendment 2026-09-07). It acts FOR an aphh:Household as an OrganizationAgent acts for an Organization. It is NOT the person's private household record (spec 363 W4), which stays the person's own note and needs no agent." .
|
|
148
|
+
|
|
149
|
+
ap:CircleAgent a owl:Class ;
|
|
150
|
+
rdfs:subClassOf ap:OrganizationAgent ;
|
|
151
|
+
rdfs:label "Circle Agent" ;
|
|
152
|
+
rdfs:comment "An organization-class Smart Agent of small-group shape (a circle: a few people meeting with a shared purpose, able to hold a vault and act); named by '.circle'. Derived under the Organization root (ADR-0061 amendment 2026-08-30)." .
|
|
39
153
|
|
|
40
154
|
ap:Facet a owl:Class ;
|
|
41
155
|
rdfs:label "Facet" ;
|
|
@@ -69,3 +183,207 @@ ap:controlStatus a owl:DatatypeProperty ;
|
|
|
69
183
|
rdfs:domain ap:CanonicalAgentId ;
|
|
70
184
|
rdfs:range xsd:string ;
|
|
71
185
|
rdfs:comment "Whether the subject is custodied here (custodied) or addressable-only (identifier-only). Non-EVM namespaces are identifier-only (spec 226 §4)." .
|
|
186
|
+
|
|
187
|
+
# ─── Derived-type record (spec 346 §2.3; ADR-0061) ────────────────────
|
|
188
|
+
|
|
189
|
+
ap:agentType a owl:ObjectProperty ;
|
|
190
|
+
rdfs:label "agentType" ;
|
|
191
|
+
rdfs:domain ap:Agent ;
|
|
192
|
+
rdfs:range skos:Concept ;
|
|
193
|
+
rdfs:comment "The DERIVED agent type (ap:agentTypeScheme, cbox — 7 values: person org team service workspace treasury registry). On-chain: atl:agentType on the SA subject (AgentProfileResolver, written by the SA itself, survives name changes). Distinct from ap:agentKind (the 3-value root scheme on the NAME node). The projection term external directory entries (ARD, A2A extension) carry. rootClassFor: team→org; service|workspace|treasury|registry→service. A suffix is checked AGAINST this record; it never overrides it." .
|
|
194
|
+
|
|
195
|
+
ap:serviceRole a owl:DatatypeProperty ;
|
|
196
|
+
rdfs:label "serviceRole" ;
|
|
197
|
+
rdfs:domain ap:ServiceAgent ;
|
|
198
|
+
rdfs:range xsd:string ;
|
|
199
|
+
rdfs:comment "The OPEN role a Service Agent plays (indexer, relay, marketplace, assistant, workspace, registry, …). On-chain: atl:serviceRole on the SA subject. REQUIRED to equal 'workspace' when agentType = workspace and 'registry' when agentType = registry (spec 346 §2.3 invariant). A role is never a permission." .
|
|
200
|
+
|
|
201
|
+
# ─── Standing between agents (spec 355; ADR-0061 §4) ───────────────────────────────────────────────
|
|
202
|
+
#
|
|
203
|
+
# WHY THIS EXISTS. "Send alice 20 USDC" names a PERSON; the money moves from a TREASURY. Nothing in the
|
|
204
|
+
# sentence connects them, and nothing in their NAMES has to either — alice.me's treasury is called
|
|
205
|
+
# alice2.treasury, and a resolver that guessed `alice.treasury` from the label found nothing and refused a
|
|
206
|
+
# payment it should have made. What connects them is a RELATIONSHIP, and until it was named here every
|
|
207
|
+
# consumer invented its own private convention for it: the Home's tree carried a `parent` field, the Ask
|
|
208
|
+
# carried a table of name suffixes, and neither could be checked against the other.
|
|
209
|
+
#
|
|
210
|
+
# One property covers what the estate actually records: a Treasury is chartered under the Person or
|
|
211
|
+
# Organization that holds it; a Team under a Workspace or Organization; a Workspace under an Organization.
|
|
212
|
+
# The child is a distinct Smart Agent with its own custody — chartering is a statement of BELONGING and
|
|
213
|
+
# PROVENANCE, never of authority. Revoking nothing here would grant anything: the parent's ability to act
|
|
214
|
+
# for the child is a delegation, and it is elsewhere.
|
|
215
|
+
|
|
216
|
+
ap:charteredUnder a owl:ObjectProperty ;
|
|
217
|
+
rdfs:label "charteredUnder" ;
|
|
218
|
+
rdfs:domain ap:Agent ;
|
|
219
|
+
rdfs:range ap:Agent ;
|
|
220
|
+
owl:inverseOf ap:charters ;
|
|
221
|
+
rdfs:comment """The agent this one was created under and belongs to: a Treasury under the Person or
|
|
222
|
+
Organization that holds it, a Team under its Workspace or Organization, a Workspace under its
|
|
223
|
+
Organization. Recorded at genesis and readable as the `parent` of a managed-agent record.
|
|
224
|
+
NOT CUSTODY, and the difference is why this property exists rather than being read off the custody
|
|
225
|
+
arrangement. Custody answers WHO CAN MAKE IT ACT; chartering answers WHOSE IT IS. They routinely
|
|
226
|
+
differ — an organization's treasury is chartered under the ORGANIZATION while being custodied by a
|
|
227
|
+
steward's personal credential — so deriving ownership from custody returns the steward and is wrong,
|
|
228
|
+
and reading chartering as custody grants an authority nobody conferred.
|
|
229
|
+
NEVER AUTHORITY (ADR-0010/0061): the child holds its own custody, and what lets a parent act for it
|
|
230
|
+
is a delegation, not this edge. A resolver may follow it to answer "which treasury does alice hold";
|
|
231
|
+
a verifier may not read it as permission to spend from one.
|
|
232
|
+
Where it is READABLE is a separate question from whether it is TRUE: today the estate records it in
|
|
233
|
+
the owner's own vault (ADR-0025), so a stranger cannot traverse it — see spec 355 §3.""" .
|
|
234
|
+
|
|
235
|
+
# ── CUSTODY IS NOT MEMBERSHIP, AND NOT AUTHORITY ──────────────────────────────────────────────────────
|
|
236
|
+
# Declared here because the discovery A-box already carries `ap:CustodyMember` instances, which made it
|
|
237
|
+
# vocabulary this repo uses without ever having said what it means — the exact drift
|
|
238
|
+
# `check:ontology-bindings` exists to stop. Naming it fixes that, and the comment is the point of the
|
|
239
|
+
# class: the word "Member" in it means a member of a CUSTODY SET, and nothing else.
|
|
240
|
+
|
|
241
|
+
# ─── Stewardship — the relation the WORD "steward" names (agent-vocabulary.md R.2, §5) ─────────────
|
|
242
|
+
# A person stewards an organization or a service: she oversees it and may act for it, on the strength of the OVERSIGHT
|
|
243
|
+
# DELEGATION the agent signed to her at birth (spec 246) — the same artifact the Home's related-orgs link records as
|
|
244
|
+
# `relationship: steward`. It is NOT custody (custody is a KEY's relation to an address — ap:CustodyMember — and on a
|
|
245
|
+
# KMS-custodied home the key is one the person has never seen), and it is NOT membership (a steward need not be a
|
|
246
|
+
# member; a member does not steward). Until this class existed the relation lived only in app code, and the Home's
|
|
247
|
+
# switcher called it "acting as custodian" — the wrong word, for the lack of a right one to bind to.
|
|
248
|
+
ap:Stewardship a owl:Class ;
|
|
249
|
+
rdfs:subClassOf apsit:Situation ;
|
|
250
|
+
rdfs:label "Stewardship" ;
|
|
251
|
+
rdfs:comment "A person's oversight of an organization or a service she can act for, evidenced by the agent's oversight delegation to her (its digest is the record). Standing, never authority: what she MAY do as it is what its grants say." .
|
|
252
|
+
# Spec 410 §8 — the VAULT form of a relationship: one credential, two signatures, two copies. Each principal holds
|
|
253
|
+
# its side; nothing is one party's alone if two signed it. The chain edge (where a gate must follow it) carries only
|
|
254
|
+
# this credential's digest; the public projection (spec 410 §4) reduces it to a blinded commitment.
|
|
255
|
+
ap:RelationshipCredential a owl:Class ;
|
|
256
|
+
rdfs:subClassOf prov:Entity ;
|
|
257
|
+
rdfs:label "RelationshipCredential" ;
|
|
258
|
+
rdfs:comment "A countersigned record of a relationship (has-member ⇒ aporg:OrganizationMembership, steward-of ⇒ ap:Stewardship, chartered-under ⇒ ap:charteredUnder), held by BOTH parties in their own vaults and presented under grant from the holder's vantage point — the counterparty verifies the other party's signature against its Smart Agent and reads no chain edge. What it is NOT: authority (it grants nothing), the chain record (that stays where a gate follows it), or a one-sided claim (relationships.data is the person's private index; this is what the organization agreed)." .
|
|
259
|
+
ap:relationshipKind a owl:DatatypeProperty ;
|
|
260
|
+
rdfs:domain ap:RelationshipCredential ; rdfs:range xsd:string ;
|
|
261
|
+
rdfs:label "relationshipKind" .
|
|
262
|
+
ap:revokes a owl:ObjectProperty ;
|
|
263
|
+
rdfs:domain prov:Entity ; rdfs:range ap:RelationshipCredential ;
|
|
264
|
+
rdfs:label "revokes" ;
|
|
265
|
+
rdfs:comment "A two-sided (or labelled-unilateral) revocation of a relationship credential, written to both vaults; the departing party keeps her copy and the revocation, never the organization's records." .
|
|
266
|
+
|
|
267
|
+
ap:steward a owl:ObjectProperty ;
|
|
268
|
+
rdfs:domain ap:Stewardship ; rdfs:range ap:PersonAgent ;
|
|
269
|
+
rdfs:label "steward" ;
|
|
270
|
+
rdfs:comment "The person who stewards." .
|
|
271
|
+
ap:stewarded a owl:ObjectProperty ;
|
|
272
|
+
rdfs:domain ap:Stewardship ; rdfs:range ap:Agent ;
|
|
273
|
+
rdfs:label "stewarded" ;
|
|
274
|
+
rdfs:comment "The organization-class or service-class agent stewarded (never a person — a person is not stewarded, she is)." .
|
|
275
|
+
ap:stewardshipDelegation a owl:DatatypeProperty ;
|
|
276
|
+
rdfs:domain ap:Stewardship ; rdfs:range xsd:string ;
|
|
277
|
+
rdfs:label "stewardshipDelegation" ;
|
|
278
|
+
rdfs:comment "The digest of the oversight delegation that evidences the stewardship (spec 246) — the record, not the authority." .
|
|
279
|
+
|
|
280
|
+
ap:CustodyMember a owl:Class ;
|
|
281
|
+
rdfs:label "CustodyMember" ;
|
|
282
|
+
rdfs:comment """One opaque, public, chain-reproducible token standing for the fact that a credential
|
|
283
|
+
custodies a Smart Agent — sha256(lower(credential)|lower(smartAgent)), unsalted by design so that
|
|
284
|
+
anyone can reproduce it from on-chain events (ADR-0040 forbids a server pepper here).
|
|
285
|
+
|
|
286
|
+
IT ANSWERS EXACTLY ONE QUESTION: can this credential make that agent act?
|
|
287
|
+
|
|
288
|
+
IT IS NOT MEMBERSHIP. A person who custodies an organization's Smart Agent is not thereby a member
|
|
289
|
+
of it, and a member of an organization does not custody it — the two sets routinely have nobody in
|
|
290
|
+
common. Membership is `aporg:OrganizationMembership`, recorded in the organization's own roster and
|
|
291
|
+
in the person's own vault (ADR-0025), and it is the only thing that answers "what am I part of".
|
|
292
|
+
|
|
293
|
+
IT IS NOT AUTHORITY. Custody is control of the agent's own key material; authority to act ON BEHALF
|
|
294
|
+
of somebody is a delegation, signed, scoped and revocable on chain (ADR-0041). Reading custody as
|
|
295
|
+
authority would let whoever holds a steward's credential act as everything that steward touches,
|
|
296
|
+
which is precisely what the delegation chain exists to prevent.
|
|
297
|
+
|
|
298
|
+
SO: never derive membership from custody, never derive authority from custody, and never answer
|
|
299
|
+
"which organizations am I associated with" from this class. `checkCustody` asks the one question
|
|
300
|
+
above about agents the caller already named, and nothing else may read it.""" .
|
|
301
|
+
|
|
302
|
+
ap:primaryPayee a owl:ObjectProperty ;
|
|
303
|
+
rdfs:label "primaryPayee" ;
|
|
304
|
+
rdfs:domain ap:Agent ;
|
|
305
|
+
rdfs:range ap:Agent ;
|
|
306
|
+
rdfs:comment """The agent this one wants to be PAID INTO — "when someone sends me money, it goes here".
|
|
307
|
+
An agent may hold several treasuries; only its owner knows which is the one to receive, and until
|
|
308
|
+
this existed a payer had to guess or be asked, which put the choice on the wrong person entirely.
|
|
309
|
+
|
|
310
|
+
A PREFERENCE, never authority and never a constraint. It does not stop anyone paying a different
|
|
311
|
+
treasury, does not permit anyone to spend from this one, and grants nothing at any gate: it answers
|
|
312
|
+
"where would you like it" and nothing else. A resolver may use it to stop asking; a verifier must
|
|
313
|
+
not read it at all.
|
|
314
|
+
|
|
315
|
+
PUBLIC BY NATURE, which bounds where it can be said: it is recorded as a role on the public
|
|
316
|
+
ap:charteredUnder edge, so an agent with no such edge — one its owner keeps unlisted — cannot carry
|
|
317
|
+
it. For those, the preference IS the grant: the owner names the one agent they are disclosing
|
|
318
|
+
(spec 338 §7).""" .
|
|
319
|
+
|
|
320
|
+
ap:primaryPayer a owl:ObjectProperty ;
|
|
321
|
+
rdfs:label "primaryPayer" ;
|
|
322
|
+
rdfs:domain ap:Agent ;
|
|
323
|
+
rdfs:range ap:Agent ;
|
|
324
|
+
rdfs:comment """The account this agent USUALLY PAYS FROM — "when I send money, take it from here".
|
|
325
|
+
|
|
326
|
+
The mirror of ap:primaryPayee, and the half that was missing. The ontology could say which of
|
|
327
|
+
someone's accounts should RECEIVE, so a stranger's agent stopped asking; it could say nothing about
|
|
328
|
+
which one SPENDS, so the owner was asked every time — eighteen treasuries offered as a list, by an
|
|
329
|
+
agent that had no modelled way to know that one of them is the one they use.
|
|
330
|
+
|
|
331
|
+
A PREFERENCE, never authority. It does not permit anyone (including this agent) to spend from the
|
|
332
|
+
account: every payment still needs a mandate the payer signs for that request, and no verifier reads
|
|
333
|
+
this property. It answers "which one did you mean" and stops a question; it opens nothing.
|
|
334
|
+
|
|
335
|
+
DISTINCT FROM primaryPayee ON PURPOSE. The account you hand out to be paid into and the account you
|
|
336
|
+
spend from are often different, and an estate that conflated them would move money out of the one
|
|
337
|
+
its owner publishes. Both are roles on the same public ap:charteredUnder edge, so an agent kept
|
|
338
|
+
unlisted carries neither — for those the owner names the account in the request.""" .
|
|
339
|
+
|
|
340
|
+
# ─── Which of my people am I? (the custodian's own choice over the agents they custody) ───────────
|
|
341
|
+
# A CUSTODIAN IS NOT LIMITED TO ONE PERSON. Somebody walks a long trail and is known on it as Summit;
|
|
342
|
+
# somebody writes under another name; somebody plays a part in a game for six evenings and wants what that
|
|
343
|
+
# character learned kept in its own vault rather than muddled into theirs. Each is a person-shaped agent of
|
|
344
|
+
# its own — its own name, its own card, its own memory of the people it has met under that name — and all of
|
|
345
|
+
# them are custodied by the same human, who can move between them.
|
|
346
|
+
#
|
|
347
|
+
# Until this existed nothing could answer "which of these is you". The Home resolved whichever agent was
|
|
348
|
+
# linked to the credential FIRST, which is an accident of enrolment order rather than an answer, and every
|
|
349
|
+
# surface that had to choose either guessed or asked. Guessing about identity is the one place a system must
|
|
350
|
+
# not.
|
|
351
|
+
#
|
|
352
|
+
# WHY IT HANGS OFF ap:CustodyMember. The choice is not a fact about an agent in the abstract — an agent is
|
|
353
|
+
# nobody's default, it is THIS credential's default. The pair (credential, agent) already has a public,
|
|
354
|
+
# chain-reproducible name in this ontology, and that pair is exactly what is being chosen between. The choice
|
|
355
|
+
# is modelled as a SITUATION of its own rather than a property ON that token, because CustodyMember answers
|
|
356
|
+
# exactly one question by design and must go on answering only that one.
|
|
357
|
+
ap:DefaultPersonChoice a owl:Class ;
|
|
358
|
+
rdfs:subClassOf apsit:Situation ;
|
|
359
|
+
rdfs:label "DefaultPersonChoice" ;
|
|
360
|
+
rdfs:comment """Of the person agents one credential custodies, the one that credential's Home opens as.
|
|
361
|
+
|
|
362
|
+
A PREFERENCE, never authority. Moving to another of your people is a change of CONTEXT, not of power:
|
|
363
|
+
every act still runs under a mandate signed for that request, by that agent, and no verifier reads
|
|
364
|
+
this. What it removes is a question only the custodian can answer, asked on every connection.
|
|
365
|
+
|
|
366
|
+
AT MOST ONE PER CREDENTIAL, and a reader that finds none falls back to however the credential resolved
|
|
367
|
+
before rather than inventing an answer — the absence of a choice is not a choice.
|
|
368
|
+
|
|
369
|
+
IT SAYS NOTHING ABOUT THE AGENTS THEMSELVES. A person agent that is somebody's default is not thereby
|
|
370
|
+
more real, more authoritative or more them than the others; the others are equally theirs, equally
|
|
371
|
+
person-shaped, and equally able to hold an organization, a service or a vault of their own.""" .
|
|
372
|
+
ap:choiceOfCustody a owl:ObjectProperty ;
|
|
373
|
+
rdfs:domain ap:DefaultPersonChoice ; rdfs:range ap:CustodyMember ;
|
|
374
|
+
rdfs:label "choiceOfCustody" ;
|
|
375
|
+
rdfs:comment "The (credential, agent) pair chosen — the custody token, which is the only public, chain-reproducible name the relation has." .
|
|
376
|
+
ap:choiceOfPerson a owl:ObjectProperty ;
|
|
377
|
+
rdfs:domain ap:DefaultPersonChoice ; rdfs:range ap:PersonAgent ;
|
|
378
|
+
rdfs:label "choiceOfPerson" ;
|
|
379
|
+
rdfs:comment "The person agent chosen, named directly so a reader does not have to reverse a hash to know who was meant." .
|
|
380
|
+
ap:chosenAt a owl:DatatypeProperty ;
|
|
381
|
+
rdfs:domain ap:DefaultPersonChoice ; rdfs:range xsd:dateTime ;
|
|
382
|
+
rdfs:label "chosenAt" ;
|
|
383
|
+
rdfs:comment "When the custodian last chose. A later choice supersedes an earlier one; nothing is deleted, because which person somebody presented as at a given time is a fact about the past." .
|
|
384
|
+
|
|
385
|
+
ap:charters a owl:ObjectProperty ;
|
|
386
|
+
rdfs:label "charters" ;
|
|
387
|
+
rdfs:domain ap:Agent ;
|
|
388
|
+
rdfs:range ap:Agent ;
|
|
389
|
+
rdfs:comment "Inverse of ap:charteredUnder — the agents created under this one. The direction a resolver traverses to answer 'what does this person hold', and the direction that must never be read as control." .
|