avouch 0.1.22
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/LICENSE +202 -0
- package/NOTICE +6 -0
- package/README.md +356 -0
- package/SPEC.md +379 -0
- package/dist/cli/avouch.d.ts +2 -0
- package/dist/cli/avouch.js +68 -0
- package/dist/cli/check.d.ts +86 -0
- package/dist/cli/check.js +333 -0
- package/dist/cli/facts.d.ts +3 -0
- package/dist/cli/facts.js +157 -0
- package/dist/cli/gate.d.ts +3 -0
- package/dist/cli/gate.js +149 -0
- package/dist/cli/init.d.ts +21 -0
- package/dist/cli/init.js +282 -0
- package/dist/cli/jsonl.d.ts +5 -0
- package/dist/cli/jsonl.js +20 -0
- package/dist/cli/query.d.ts +2 -0
- package/dist/cli/query.js +138 -0
- package/dist/cli/reconcile.d.ts +9 -0
- package/dist/cli/reconcile.js +131 -0
- package/dist/src/checker.d.ts +3 -0
- package/dist/src/checker.js +1136 -0
- package/dist/src/contract.d.ts +135 -0
- package/dist/src/contract.js +3 -0
- package/dist/src/coverage.d.ts +65 -0
- package/dist/src/coverage.js +237 -0
- package/dist/src/evaluate.d.ts +66 -0
- package/dist/src/evaluate.js +535 -0
- package/dist/src/expr.d.ts +209 -0
- package/dist/src/expr.js +497 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.js +11 -0
- package/dist/src/ledger.d.ts +96 -0
- package/dist/src/ledger.js +241 -0
- package/dist/src/markdown.d.ts +66 -0
- package/dist/src/markdown.js +701 -0
- package/dist/src/patch.d.ts +6 -0
- package/dist/src/patch.js +37 -0
- package/dist/src/query.d.ts +333 -0
- package/dist/src/query.js +739 -0
- package/dist/src/reconcile.d.ts +61 -0
- package/dist/src/reconcile.js +151 -0
- package/dist/src/stage1-check.d.ts +31 -0
- package/dist/src/stage1-check.js +329 -0
- package/dist/src/touched.d.ts +1 -0
- package/dist/src/touched.js +9 -0
- package/dist/src/unknown.d.ts +10 -0
- package/dist/src/unknown.js +173 -0
- package/docs/adapter-guide.md +187 -0
- package/docs/markdown-convention.md +635 -0
- package/ontology.schema.json +1757 -0
- package/package.json +57 -0
- package/templates/agents-block.md +12 -0
- package/vocab.ttl +524 -0
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "avouch",
|
|
3
|
+
"version": "0.1.22",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/githonllc/avouch.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://avouch.dev/",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/githonllc/avouch/issues"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=22"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/src/index.d.ts",
|
|
20
|
+
"default": "./dist/src/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./ontology.schema.json": "./ontology.schema.json",
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"types": "./dist/src/index.d.ts",
|
|
26
|
+
"bin": {
|
|
27
|
+
"avouch": "dist/cli/avouch.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist/src/",
|
|
31
|
+
"dist/cli/",
|
|
32
|
+
"ontology.schema.json",
|
|
33
|
+
"vocab.ttl",
|
|
34
|
+
"SPEC.md",
|
|
35
|
+
"docs/",
|
|
36
|
+
"NOTICE",
|
|
37
|
+
"templates/"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"test": "vitest run",
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"build": "tsc -p tsconfig.build.json",
|
|
43
|
+
"pretest": "npm run build",
|
|
44
|
+
"prepack": "npm run build",
|
|
45
|
+
"prepare": "npm run build"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"ajv": "^8.20.0",
|
|
49
|
+
"yaml": "^2.9.1"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@types/node": "^24.0.0",
|
|
53
|
+
"typescript": "~5.8.3",
|
|
54
|
+
"vite": "~7.3.6",
|
|
55
|
+
"vitest": "~3.2.4"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Avouch
|
|
2
|
+
|
|
3
|
+
The business rules of this project are in an Avouch ontology (`*.ontology.yaml`, see `avouch.config.json`). Each rule cites a section of the design documents.
|
|
4
|
+
|
|
5
|
+
- The commands below use `npx -y avouch`. If the project pins `avouch` as a dependency, run that version instead: `<dir>/node_modules/.bin/avouch`, where `<dir>` has the `package.json` that pins it. If that file is missing, run the project's install step first.
|
|
6
|
+
- Before you implement or change business logic (the permission, conditions, effects or state machine of an action; the writers and readers of a property), read the rule with `npx -y avouch query`. Run `npx -y avouch query --help` for the questions it answers.
|
|
7
|
+
- Do not read the ontology file with grep, cat, sed or a script. Comments and neighbouring entries in the text look like rules, but the checker does not read them.
|
|
8
|
+
- If the rule is `unspecified` or is in `knownSourceGaps`, the documents do not decide it. Do not invent the behavior: tell your user, and say so in the pull request.
|
|
9
|
+
- If the ontology, the documents and the code disagree, do not decide in code. Tell your user which texts disagree.
|
|
10
|
+
- To change a rule, change the design document first, or ask your user to. Then update the ontology so that each claim quotes the new text: in Claude Code with `/avouch:scan`, otherwise with the writing rules in https://avouch.dev/llms.txt. Do not add a rule that no document states.
|
|
11
|
+
- After you change the ontology or a cited document section, run `npx -y avouch check`, and `npx -y avouch gate docs` if the project has a ledger (`avouch.ledger.jsonl`). Both must exit 0. `check` covers the format rules only; it does not replace the project's tests.
|
|
12
|
+
- Do not edit the ledger to make the gate pass without reading the changed section.
|
package/vocab.ttl
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
2
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
3
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
4
|
+
@prefix ofv: <https://w3id.org/avouch/v1/vocab#> .
|
|
5
|
+
|
|
6
|
+
<https://w3id.org/avouch/v1/vocab> a owl:Ontology ;
|
|
7
|
+
rdfs:label "Avouch vocabulary"@en ;
|
|
8
|
+
rdfs:seeAlso <https://w3id.org/avouch/v1/schema.json> .
|
|
9
|
+
|
|
10
|
+
ofv:Context a rdfs:Class ;
|
|
11
|
+
rdfs:label "Context" ;
|
|
12
|
+
rdfs:comment "Exported from the YAML path contexts.<name>." ;
|
|
13
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
14
|
+
|
|
15
|
+
ofv:OutOfScopeObjectType a rdfs:Class ;
|
|
16
|
+
rdfs:label "OutOfScopeObjectType" ;
|
|
17
|
+
rdfs:comment "Exported from the YAML path outOfScopeObjectTypes.<name>." ;
|
|
18
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
19
|
+
|
|
20
|
+
ofv:DerivedProperty a rdfs:Class ;
|
|
21
|
+
rdfs:label "DerivedProperty" ;
|
|
22
|
+
rdfs:comment "Exported from the YAML path derivedProperties.<id>." ;
|
|
23
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
24
|
+
|
|
25
|
+
ofv:ActionType a rdfs:Class ;
|
|
26
|
+
rdfs:label "ActionType" ;
|
|
27
|
+
rdfs:comment "Exported from the YAML path actionTypes.<ID>." ;
|
|
28
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
29
|
+
|
|
30
|
+
ofv:index a rdf:Property ;
|
|
31
|
+
rdfs:label "index" ;
|
|
32
|
+
rdfs:comment "Position (from 0) of a record in its YAML list. YAML: conditions[], decision.rows[], transitions[], knownSourceGaps[], permission_rows_not_commands[]" ;
|
|
33
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
34
|
+
|
|
35
|
+
ofv:key a rdf:Property ;
|
|
36
|
+
rdfs:label "key" ;
|
|
37
|
+
rdfs:comment "By YAML location: the name of an entry in a YAML mapping (non_link_fields.<key>, edit_cites.<key>, link_effects.<key>, transitions[].bind.<key>); the top-level key of the JSON object that a property is projected from (objectTypes.<name>.properties.<p>.from.key)" ;
|
|
38
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
39
|
+
|
|
40
|
+
ofv:name a rdf:Property ;
|
|
41
|
+
rdfs:label "name" ;
|
|
42
|
+
rdfs:comment "Name of a permission row that is not a command. YAML: permission_rows_not_commands[].name" ;
|
|
43
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
44
|
+
|
|
45
|
+
ofv:reason a rdf:Property ;
|
|
46
|
+
rdfs:label "reason" ;
|
|
47
|
+
rdfs:comment "Reason text. YAML: permission_rows_not_commands[].reason, outOfScopeObjectTypes.<name>, objectTypes.<name>.non_link_fields.<key>.reason" ;
|
|
48
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
49
|
+
|
|
50
|
+
ofv:cite a rdf:Property ;
|
|
51
|
+
rdfs:label "cite" ;
|
|
52
|
+
rdfs:comment "Source citation (a node with doc and quote). YAML: cite, in any record that has one, scope.cite, scope.global[].cite, scope.root.cite, dispositions.<ID>.cite, decision.order.cite, decision…next.cite, derivedProperties.<id>.cite, ….principals.cite, actionTypes.<ID>.idempotencyKey.cite" ;
|
|
53
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
54
|
+
|
|
55
|
+
ofv:doc a rdf:Property ;
|
|
56
|
+
rdfs:label "doc" ;
|
|
57
|
+
rdfs:comment "Source document reference. YAML: doc, in any record that has one; also cite.doc" ;
|
|
58
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
59
|
+
|
|
60
|
+
ofv:quote a rdf:Property ;
|
|
61
|
+
rdfs:label "quote" ;
|
|
62
|
+
rdfs:comment "Quoted source text. YAML: cite.quote" ;
|
|
63
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
64
|
+
|
|
65
|
+
ofv:id a rdf:Property ;
|
|
66
|
+
rdfs:label "id" ;
|
|
67
|
+
rdfs:comment "Identifier of a record. YAML: knownSourceGaps[].id, actionTypes.<ID>.conditions[].id" ;
|
|
68
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
69
|
+
|
|
70
|
+
ofv:rule a rdf:Property ;
|
|
71
|
+
rdfs:label "rule" ;
|
|
72
|
+
rdfs:comment "Rule code of a source gap. YAML: knownSourceGaps[].rule" ;
|
|
73
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
74
|
+
|
|
75
|
+
ofv:kind a rdf:Property ;
|
|
76
|
+
rdfs:label "kind" ;
|
|
77
|
+
rdfs:comment "Kind of a source gap. YAML: knownSourceGaps[].kind" ;
|
|
78
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
79
|
+
|
|
80
|
+
ofv:keys a rdf:Property ;
|
|
81
|
+
rdfs:label "keys" ;
|
|
82
|
+
rdfs:comment "Keys of a record (permission keys, or gap keys). YAML: knownSourceGaps[].keys, actionTypes.<ID>.permission.keys" ;
|
|
83
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
84
|
+
|
|
85
|
+
ofv:doc_line a rdf:Property ;
|
|
86
|
+
rdfs:label "doc_line" ;
|
|
87
|
+
rdfs:comment "Document line of a source gap. YAML: knownSourceGaps[].doc_line" ;
|
|
88
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
89
|
+
|
|
90
|
+
ofv:conflict a rdf:Property ;
|
|
91
|
+
rdfs:label "conflict" ;
|
|
92
|
+
rdfs:comment "Conflict text of a source gap. YAML: knownSourceGaps[].conflict" ;
|
|
93
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
94
|
+
|
|
95
|
+
ofv:proposed a rdf:Property ;
|
|
96
|
+
rdfs:label "proposed" ;
|
|
97
|
+
rdfs:comment "Proposed fix of a source gap. YAML: knownSourceGaps[].proposed" ;
|
|
98
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
99
|
+
|
|
100
|
+
ofv:description a rdf:Property ;
|
|
101
|
+
rdfs:label "description" ;
|
|
102
|
+
rdfs:comment "Label of a context: a literal substring of the source line that lists its objects. YAML: contexts.<name>" ;
|
|
103
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
104
|
+
|
|
105
|
+
ofv:infrastructureStores a rdf:Property ;
|
|
106
|
+
rdfs:label "infrastructureStores" ;
|
|
107
|
+
rdfs:comment "Infrastructure stores that are not object types. YAML: infrastructureStores[]" ;
|
|
108
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
109
|
+
|
|
110
|
+
ofv:permission_rows_not_commands a rdf:Property ;
|
|
111
|
+
rdfs:label "permission_rows_not_commands" ;
|
|
112
|
+
rdfs:comment "Permission rows that are not commands. YAML: permission_rows_not_commands[]" ;
|
|
113
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
114
|
+
|
|
115
|
+
ofv:knownSourceGaps a rdf:Property ;
|
|
116
|
+
rdfs:label "knownSourceGaps" ;
|
|
117
|
+
rdfs:comment "Known gaps in the source document. YAML: knownSourceGaps[]" ;
|
|
118
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
119
|
+
|
|
120
|
+
ofv:context a rdf:Property ;
|
|
121
|
+
rdfs:label "context" ;
|
|
122
|
+
rdfs:comment "Context of an object type, action type or create rule. YAML: objectTypes.<name>.context, actionTypes.<ID>.context, linkTypes[].create_rule.context" ;
|
|
123
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
124
|
+
|
|
125
|
+
ofv:datasource a rdf:Property ;
|
|
126
|
+
rdfs:label "datasource" ;
|
|
127
|
+
rdfs:comment "Store that holds the object. YAML: objectTypes.<name>.datasource" ;
|
|
128
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
129
|
+
|
|
130
|
+
ofv:non_link_fields a rdf:Property ;
|
|
131
|
+
rdfs:label "non_link_fields" ;
|
|
132
|
+
rdfs:comment "Fields that look like links but are not. YAML: objectTypes.<name>.non_link_fields" ;
|
|
133
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
134
|
+
|
|
135
|
+
ofv:stateMachines a rdf:Property ;
|
|
136
|
+
rdfs:label "stateMachines" ;
|
|
137
|
+
rdfs:comment "State machine of an object type. YAML: stateMachines.<name>" ;
|
|
138
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
139
|
+
|
|
140
|
+
ofv:property a rdf:Property ;
|
|
141
|
+
rdfs:label "property" ;
|
|
142
|
+
rdfs:comment "Property of the object that holds its state; default the configured state property. YAML: stateMachines.<name>.property" ;
|
|
143
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
144
|
+
|
|
145
|
+
ofv:initial a rdf:Property ;
|
|
146
|
+
rdfs:label "initial" ;
|
|
147
|
+
rdfs:comment "Initial state. YAML: stateMachines.<name>.initial" ;
|
|
148
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
149
|
+
|
|
150
|
+
ofv:terminal a rdf:Property ;
|
|
151
|
+
rdfs:label "terminal" ;
|
|
152
|
+
rdfs:comment "Terminal state. YAML: stateMachines.<name>.terminal[]" ;
|
|
153
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
154
|
+
|
|
155
|
+
ofv:transitions a rdf:Property ;
|
|
156
|
+
rdfs:label "transitions" ;
|
|
157
|
+
rdfs:comment "State transition. YAML: stateMachines.<name>.transitions[]" ;
|
|
158
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
159
|
+
|
|
160
|
+
ofv:from a rdf:Property ;
|
|
161
|
+
rdfs:label "from" ;
|
|
162
|
+
rdfs:comment "By YAML location: the source state of a transition (stateMachines.<name>.transitions[].from); the JSON column and key that a property is projected from (objectTypes.<name>.properties.<p>.from)" ;
|
|
163
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
164
|
+
|
|
165
|
+
ofv:field a rdf:Property ;
|
|
166
|
+
rdfs:label "field" ;
|
|
167
|
+
rdfs:comment "The property (a JSON column of the same object) that a projected property reads. YAML: objectTypes.<name>.properties.<p>.from.field" ;
|
|
168
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
169
|
+
|
|
170
|
+
ofv:to a rdf:Property ;
|
|
171
|
+
rdfs:label "to" ;
|
|
172
|
+
rdfs:comment "Target state of a transition. YAML: stateMachines.<name>.transitions[].to" ;
|
|
173
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
174
|
+
|
|
175
|
+
ofv:by a rdf:Property ;
|
|
176
|
+
rdfs:label "by" ;
|
|
177
|
+
rdfs:comment "Action type that causes a transition. YAML: stateMachines.<name>.transitions[].by[]" ;
|
|
178
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
179
|
+
|
|
180
|
+
ofv:out_of_scope a rdf:Property ;
|
|
181
|
+
rdfs:label "out_of_scope" ;
|
|
182
|
+
rdfs:comment "Why no declared action performs the transition. YAML: stateMachines.<name>.transitions[].out_of_scope" ;
|
|
183
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
184
|
+
|
|
185
|
+
ofv:bind a rdf:Property ;
|
|
186
|
+
rdfs:label "bind" ;
|
|
187
|
+
rdfs:comment "Per-action evidence for a transition, keyed by action id. YAML: stateMachines.<name>.transitions[].bind.<ID>" ;
|
|
188
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
189
|
+
|
|
190
|
+
ofv:class a rdf:Property ;
|
|
191
|
+
rdfs:label "class" ;
|
|
192
|
+
rdfs:comment "State class of a property: canonical, derived, policy, opaque or unknown. YAML: objectTypes.<name>.properties.<p>.class" ;
|
|
193
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
194
|
+
|
|
195
|
+
ofv:canonical_values a rdf:Property ;
|
|
196
|
+
rdfs:label "canonical_values" ;
|
|
197
|
+
rdfs:comment "Values of a non-canonical property that the source explicitly marks as canonical. YAML: objectTypes.<name>.properties.<p>.canonical_values" ;
|
|
198
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
199
|
+
|
|
200
|
+
ofv:values a rdf:Property ;
|
|
201
|
+
rdfs:label "values" ;
|
|
202
|
+
rdfs:comment "Values of a list. YAML: canonical_values.values[], conditions[].reads[].values[]" ;
|
|
203
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
204
|
+
|
|
205
|
+
ofv:materializedFrom a rdf:Property ;
|
|
206
|
+
rdfs:label "materializedFrom" ;
|
|
207
|
+
rdfs:comment "The source requires this derived property to be stored in the same operation as its inputs. YAML: objectTypes.<name>.properties.<p>.materializedFrom" ;
|
|
208
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
209
|
+
|
|
210
|
+
ofv:reads a rdf:Property ;
|
|
211
|
+
rdfs:label "reads" ;
|
|
212
|
+
rdfs:comment "Properties read. YAML: materializedFrom.reads[], derivedProperties.<id>.reads[], conditions[].reads[]" ;
|
|
213
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
214
|
+
|
|
215
|
+
ofv:cites a rdf:Property ;
|
|
216
|
+
rdfs:label "cites" ;
|
|
217
|
+
rdfs:comment "Citations, each a node with ofv:cite. YAML: objectTypes.<name>.properties.<p>.materializedFrom.cites[], actionTypes.<ID>.conditions[].cites[], decision.rows[].cites[], decision.otherwise.cites[]" ;
|
|
218
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
219
|
+
|
|
220
|
+
ofv:cardinality a rdf:Property ;
|
|
221
|
+
rdfs:label "cardinality" ;
|
|
222
|
+
rdfs:comment "Cardinality text of a link type, kept as written. YAML: linkTypes[].cardinality" ;
|
|
223
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
224
|
+
|
|
225
|
+
ofv:via a rdf:Property ;
|
|
226
|
+
rdfs:label "via" ;
|
|
227
|
+
rdfs:comment "Foreign-key field on the from object or the link store name (linkTypes[].via); the mechanism of a cross-context write (crossContext.via). YAML: linkTypes[].via, actionTypes.<ID>.crossContext.via" ;
|
|
228
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
229
|
+
|
|
230
|
+
ofv:table a rdf:Property ;
|
|
231
|
+
rdfs:label "table" ;
|
|
232
|
+
rdfs:comment "The link's own store. YAML: linkTypes[].table" ;
|
|
233
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
234
|
+
|
|
235
|
+
ofv:create_rule a rdf:Property ;
|
|
236
|
+
rdfs:label "create_rule" ;
|
|
237
|
+
rdfs:comment "Who may establish the link. YAML: linkTypes[].create_rule" ;
|
|
238
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
239
|
+
|
|
240
|
+
ofv:with_creates a rdf:Property ;
|
|
241
|
+
rdfs:label "with_creates" ;
|
|
242
|
+
rdfs:comment "Objects the action must create in the same operation. YAML: linkTypes[].create_rule.with_creates[]" ;
|
|
243
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
244
|
+
|
|
245
|
+
ofv:exceptions a rdf:Property ;
|
|
246
|
+
rdfs:label "exceptions" ;
|
|
247
|
+
rdfs:comment "Exceptions to a create rule. YAML: linkTypes[].create_rule.exceptions" ;
|
|
248
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
249
|
+
|
|
250
|
+
ofv:commands a rdf:Property ;
|
|
251
|
+
rdfs:label "commands" ;
|
|
252
|
+
rdfs:comment "Action types that are exceptions to a create rule. YAML: linkTypes[].create_rule.exceptions.commands[]" ;
|
|
253
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
254
|
+
|
|
255
|
+
ofv:of a rdf:Property ;
|
|
256
|
+
rdfs:label "of" ;
|
|
257
|
+
rdfs:comment "Object a derived property is defined on. YAML: derivedProperties.<id>.of" ;
|
|
258
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
259
|
+
|
|
260
|
+
ofv:doc_term a rdf:Property ;
|
|
261
|
+
rdfs:label "doc_term" ;
|
|
262
|
+
rdfs:comment "Term used in the source document. YAML: derivedProperties.<id>.doc_term, actionTypes.<ID>.doc_term" ;
|
|
263
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
264
|
+
|
|
265
|
+
ofv:evidence a rdf:Property ;
|
|
266
|
+
rdfs:label "evidence" ;
|
|
267
|
+
rdfs:comment "Id of the evidence that implements the action. YAML: actionTypes.<ID>.evidence" ;
|
|
268
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
269
|
+
|
|
270
|
+
ofv:emits a rdf:Property ;
|
|
271
|
+
rdfs:label "emits" ;
|
|
272
|
+
rdfs:comment "Event types the action writes. YAML: actionTypes.<ID>.emits[]" ;
|
|
273
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
274
|
+
|
|
275
|
+
ofv:creates a rdf:Property ;
|
|
276
|
+
rdfs:label "creates" ;
|
|
277
|
+
rdfs:comment "Object types an action type creates. YAML: actionTypes.<ID>.creates[]" ;
|
|
278
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
279
|
+
|
|
280
|
+
ofv:deletes a rdf:Property ;
|
|
281
|
+
rdfs:label "deletes" ;
|
|
282
|
+
rdfs:comment "Object types whose rows an action type removes (a soft delete is an edits). YAML: actionTypes.<ID>.deletes[]" ;
|
|
283
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
284
|
+
|
|
285
|
+
ofv:edits a rdf:Property ;
|
|
286
|
+
rdfs:label "edits" ;
|
|
287
|
+
rdfs:comment "Properties an action type edits. YAML: actionTypes.<ID>.edits[]" ;
|
|
288
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
289
|
+
|
|
290
|
+
ofv:edit_cites a rdf:Property ;
|
|
291
|
+
rdfs:label "edit_cites" ;
|
|
292
|
+
rdfs:comment "Citations of edits. YAML: actionTypes.<ID>.edit_cites.<key>" ;
|
|
293
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
294
|
+
|
|
295
|
+
ofv:crossContext a rdf:Property ;
|
|
296
|
+
rdfs:label "crossContext" ;
|
|
297
|
+
rdfs:comment "Cross-context write of an action type. YAML: actionTypes.<ID>.crossContext" ;
|
|
298
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
299
|
+
|
|
300
|
+
ofv:permission a rdf:Property ;
|
|
301
|
+
rdfs:label "permission" ;
|
|
302
|
+
rdfs:comment "Permission of an action type: a string, or a node with keys. YAML: actionTypes.<ID>.permission" ;
|
|
303
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
304
|
+
|
|
305
|
+
ofv:conditional_keys a rdf:Property ;
|
|
306
|
+
rdfs:label "conditional_keys" ;
|
|
307
|
+
rdfs:comment "Permission keys needed only under a condition. YAML: actionTypes.<ID>.permission.conditional_keys[]" ;
|
|
308
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
309
|
+
|
|
310
|
+
ofv:none a rdf:Property ;
|
|
311
|
+
rdfs:label "none" ;
|
|
312
|
+
rdfs:comment "Why there is no key (permission), or why the link is not changed (link effect). YAML: actionTypes.<ID>.permission.none, actionTypes.<ID>.link_effects.<key>.none" ;
|
|
313
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
314
|
+
|
|
315
|
+
ofv:conditional_cite a rdf:Property ;
|
|
316
|
+
rdfs:label "conditional_cite" ;
|
|
317
|
+
rdfs:comment "Citation for the conditional keys. YAML: actionTypes.<ID>.permission.conditional_cite" ;
|
|
318
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
319
|
+
|
|
320
|
+
ofv:conditional_when a rdf:Property ;
|
|
321
|
+
rdfs:label "conditional_when" ;
|
|
322
|
+
rdfs:comment "When the conditional keys are needed: a predicate over request inputs (parameters, actor, literals). YAML: actionTypes.<ID>.permission.conditional_when" ;
|
|
323
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
324
|
+
|
|
325
|
+
ofv:any_of a rdf:Property ;
|
|
326
|
+
rdfs:label "any_of" ;
|
|
327
|
+
rdfs:comment "At least 2 alternatives, each a keys form; the actor may run the action when its keys satisfy any one of them (OR). YAML: actionTypes.<ID>.permission.any_of" ;
|
|
328
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
329
|
+
|
|
330
|
+
ofv:parameters a rdf:Property ;
|
|
331
|
+
rdfs:label "parameters" ;
|
|
332
|
+
rdfs:comment "Parameters of an action type, the inputs it takes; each has a key and a cite. YAML: actionTypes.<ID>.parameters" ;
|
|
333
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
334
|
+
|
|
335
|
+
ofv:param a rdf:Property ;
|
|
336
|
+
rdfs:label "param" ;
|
|
337
|
+
rdfs:comment "Parameter named in a read, optionally with values. YAML: actionTypes.<ID>.conditions[].reads[].param" ;
|
|
338
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
339
|
+
|
|
340
|
+
ofv:actor a rdf:Property ;
|
|
341
|
+
rdfs:label "actor" ;
|
|
342
|
+
rdfs:comment "The caller read by a criterion: id, keys or kind. YAML: actionTypes.<ID>.conditions[].reads[].actor" ;
|
|
343
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
344
|
+
|
|
345
|
+
ofv:submissionCriteria a rdf:Property ;
|
|
346
|
+
rdfs:label "submissionCriteria" ;
|
|
347
|
+
rdfs:comment "Renamed to conditions; exports no longer use it. YAML before the rename: actionTypes.<ID>.submissionCriteria[]" ;
|
|
348
|
+
owl:deprecated true ;
|
|
349
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
350
|
+
|
|
351
|
+
ofv:conditions a rdf:Property ;
|
|
352
|
+
rdfs:label "conditions" ;
|
|
353
|
+
rdfs:comment "Condition of an action type: a named claim, written as an expression or stated as not yet written. YAML: actionTypes.<ID>.conditions[]" ;
|
|
354
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
355
|
+
|
|
356
|
+
ofv:expr a rdf:Property ;
|
|
357
|
+
rdfs:label "expr" ;
|
|
358
|
+
rdfs:comment "Expression as one rdf:JSON literal (object keys sorted, no white space), not as triples. YAML: actionTypes.<ID>.conditions[].expr, derivedProperties.<id>.expr" ;
|
|
359
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
360
|
+
|
|
361
|
+
ofv:prop a rdf:Property ;
|
|
362
|
+
rdfs:label "prop" ;
|
|
363
|
+
rdfs:comment "Property named in a read with values. YAML: actionTypes.<ID>.conditions[].reads[].prop" ;
|
|
364
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
365
|
+
|
|
366
|
+
ofv:reads_unspecified a rdf:Property ;
|
|
367
|
+
rdfs:label "reads_unspecified" ;
|
|
368
|
+
rdfs:comment "Statement that the reads are not specified. YAML: actionTypes.<ID>.conditions[].reads_unspecified" ;
|
|
369
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
370
|
+
|
|
371
|
+
ofv:scenarios a rdf:Property ;
|
|
372
|
+
rdfs:label "scenarios" ;
|
|
373
|
+
rdfs:comment "Scenario ids. YAML: conditions[].scenarios[], link_effects.<key>.scenarios[]" ;
|
|
374
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
375
|
+
|
|
376
|
+
ofv:link_effects a rdf:Property ;
|
|
377
|
+
rdfs:label "link_effects" ;
|
|
378
|
+
rdfs:comment "Effect of an action type on a link type. YAML: actionTypes.<ID>.link_effects" ;
|
|
379
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
380
|
+
|
|
381
|
+
ofv:effect a rdf:Property ;
|
|
382
|
+
rdfs:label "effect" ;
|
|
383
|
+
rdfs:comment "Text of a link effect. YAML: actionTypes.<ID>.link_effects.<key>.effect" ;
|
|
384
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
385
|
+
|
|
386
|
+
ofv:unspecified a rdf:Property ;
|
|
387
|
+
rdfs:label "unspecified" ;
|
|
388
|
+
rdfs:comment "Statement that something is not specified. YAML: actionTypes.<ID>.link_effects.<key>.unspecified, actionTypes.<ID>.crossContext.unspecified, actionTypes.<ID>.conditions[].unspecified, decision.rows[].next.unspecified, decision.otherwise.next.unspecified" ;
|
|
389
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
390
|
+
|
|
391
|
+
ofv:Disposition a rdfs:Class ;
|
|
392
|
+
rdfs:label "Disposition" ;
|
|
393
|
+
rdfs:comment "A result that a decision table can give. Exported from the YAML path dispositions.<ID>." ;
|
|
394
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
395
|
+
|
|
396
|
+
ofv:dispositionClass a rdf:Property ;
|
|
397
|
+
rdfs:label "dispositionClass" ;
|
|
398
|
+
rdfs:comment "Class of a disposition: rejected, recorded, pending or applied. YAML: dispositions.<ID>.class" ;
|
|
399
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
400
|
+
|
|
401
|
+
ofv:decision a rdf:Property ;
|
|
402
|
+
rdfs:label "decision" ;
|
|
403
|
+
rdfs:comment "Decision table of an action type. YAML: actionTypes.<ID>.decision" ;
|
|
404
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
405
|
+
|
|
406
|
+
ofv:hitPolicy a rdf:Property ;
|
|
407
|
+
rdfs:label "hitPolicy" ;
|
|
408
|
+
rdfs:comment "Hit policy of a decision table; v1 has only first (top to bottom, first match). YAML: actionTypes.<ID>.decision.hitPolicy" ;
|
|
409
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
410
|
+
|
|
411
|
+
ofv:order a rdf:Property ;
|
|
412
|
+
rdfs:label "order" ;
|
|
413
|
+
rdfs:comment "Citation for the row order of a decision table. YAML: actionTypes.<ID>.decision.order" ;
|
|
414
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
415
|
+
|
|
416
|
+
ofv:rows a rdf:Property ;
|
|
417
|
+
rdfs:label "rows" ;
|
|
418
|
+
rdfs:comment "Row of a decision table, with ofv:index. YAML: actionTypes.<ID>.decision.rows[]" ;
|
|
419
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
420
|
+
|
|
421
|
+
ofv:when a rdf:Property ;
|
|
422
|
+
rdfs:label "when" ;
|
|
423
|
+
rdfs:comment "Test of a row: a node with ofv:passes or ofv:fails. YAML: actionTypes.<ID>.decision.rows[].when" ;
|
|
424
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
425
|
+
|
|
426
|
+
ofv:passes a rdf:Property ;
|
|
427
|
+
rdfs:label "passes" ;
|
|
428
|
+
rdfs:comment "Id of a condition that must evaluate to T. YAML: actionTypes.<ID>.decision.rows[].when.passes" ;
|
|
429
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
430
|
+
|
|
431
|
+
ofv:fails a rdf:Property ;
|
|
432
|
+
rdfs:label "fails" ;
|
|
433
|
+
rdfs:comment "Id of a condition that does not evaluate to T (it is F or U). It is not a negation. YAML: actionTypes.<ID>.decision.rows[].when.fails" ;
|
|
434
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
435
|
+
|
|
436
|
+
ofv:result a rdf:Property ;
|
|
437
|
+
rdfs:label "result" ;
|
|
438
|
+
rdfs:comment "Disposition that a row gives: an ofv:Disposition, or a literal when the id is not declared. YAML: actionTypes.<ID>.decision.rows[].result, actionTypes.<ID>.decision.otherwise.result" ;
|
|
439
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
440
|
+
|
|
441
|
+
ofv:otherwise a rdf:Property ;
|
|
442
|
+
rdfs:label "otherwise" ;
|
|
443
|
+
rdfs:comment "Last row of a decision table; it gives the result when no row matches. YAML: actionTypes.<ID>.decision.otherwise" ;
|
|
444
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
445
|
+
|
|
446
|
+
ofv:next a rdf:Property ;
|
|
447
|
+
rdfs:label "next" ;
|
|
448
|
+
rdfs:comment "What follows a pending result. YAML: actionTypes.<ID>.decision.rows[].next, actionTypes.<ID>.decision.otherwise.next" ;
|
|
449
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
450
|
+
|
|
451
|
+
ofv:actions a rdf:Property ;
|
|
452
|
+
rdfs:label "actions" ;
|
|
453
|
+
rdfs:comment "Action type of this system that follows. YAML: decision.rows[].next.actions[], decision.otherwise.next.actions[]" ;
|
|
454
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
455
|
+
|
|
456
|
+
ofv:external a rdf:Property ;
|
|
457
|
+
rdfs:label "external" ;
|
|
458
|
+
rdfs:comment "Step outside this system that follows. YAML: decision.rows[].next.external, decision.otherwise.next.external" ;
|
|
459
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
460
|
+
|
|
461
|
+
ofv:scope a rdf:Property ;
|
|
462
|
+
rdfs:label "scope" ;
|
|
463
|
+
rdfs:comment "Tenant scope of the ontology. YAML: scope" ;
|
|
464
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
465
|
+
|
|
466
|
+
ofv:scopeBy a rdf:Property ;
|
|
467
|
+
rdfs:label "scopeBy" ;
|
|
468
|
+
rdfs:comment "Name of the field that holds the tenant. YAML: scope.by" ;
|
|
469
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
470
|
+
|
|
471
|
+
ofv:global a rdf:Property ;
|
|
472
|
+
rdfs:label "global" ;
|
|
473
|
+
rdfs:comment "Object type that all tenants share, with its citation. YAML: scope.global[]" ;
|
|
474
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
475
|
+
|
|
476
|
+
ofv:root a rdf:Property ;
|
|
477
|
+
rdfs:label "root" ;
|
|
478
|
+
rdfs:comment "Object type that is the tenant itself, with its citation. YAML: scope.root" ;
|
|
479
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
480
|
+
|
|
481
|
+
ofv:type a rdf:Property ;
|
|
482
|
+
rdfs:label "type" ;
|
|
483
|
+
rdfs:comment "A type. For a value type: a literal (enum, timestamp, duration, date, timezone, id, integer, number, boolean or string), the class whose ids the value holds, or a node with ofv:set. For a scope entry: the class of the entry. YAML: objectTypes.<name>.properties.<p>.type, actionTypes.<ID>.parameters.<n>.type, derivedProperties.<id>.type, scope.global[].type, scope.root.type" ;
|
|
484
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
485
|
+
|
|
486
|
+
ofv:set a rdf:Property ;
|
|
487
|
+
rdfs:label "set" ;
|
|
488
|
+
rdfs:comment "Element type of a set type, written as for ofv:type. YAML: ….type.set" ;
|
|
489
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
490
|
+
|
|
491
|
+
ofv:optional a rdf:Property ;
|
|
492
|
+
rdfs:label "optional" ;
|
|
493
|
+
rdfs:comment "The caller may leave the parameter out; it is then null. Not for a projected parameter: it is always given, and null is a value. YAML: actionTypes.<ID>.parameters.<n>.optional" ;
|
|
494
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
495
|
+
|
|
496
|
+
ofv:projectedFrom a rdf:Property ;
|
|
497
|
+
rdfs:label "projectedFrom" ;
|
|
498
|
+
rdfs:comment "Request fields (an alternate key; each a declared parameter of the same action that is not projected) that the project's projection resolves to this ref parameter. An optional projected parameter is always given: null when a field is missing or null, or when no object has the key. A required one is omitted when a field is missing or null, and null when no object has the key. YAML: actionTypes.<ID>.parameters.<n>.projectedFrom[]" ;
|
|
499
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
500
|
+
|
|
501
|
+
ofv:unresolved a rdf:Property ;
|
|
502
|
+
rdfs:label "unresolved" ;
|
|
503
|
+
rdfs:comment "How a ref parameter binds an id that does not resolve. The only value is domain: the id binds to null, and a decision row tests it. Only on a required scalar ref parameter without ofv:projectedFrom. YAML: actionTypes.<ID>.parameters.<n>.unresolved" ;
|
|
504
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
505
|
+
|
|
506
|
+
ofv:principals a rdf:Property ;
|
|
507
|
+
rdfs:label "principals" ;
|
|
508
|
+
rdfs:comment "Actor kinds that one permission alternative admits, with its own citation; an actor of another kind is denied. YAML: actionTypes.<ID>.permission.principals, actionTypes.<ID>.permission.any_of[].principals" ;
|
|
509
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
510
|
+
|
|
511
|
+
ofv:kinds a rdf:Property ;
|
|
512
|
+
rdfs:label "kinds" ;
|
|
513
|
+
rdfs:comment "One actor kind. YAML: actionTypes.<ID>.permission.principals.kinds[], actionTypes.<ID>.permission.any_of[].principals.kinds[]" ;
|
|
514
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
515
|
+
|
|
516
|
+
ofv:idempotencyKey a rdf:Property ;
|
|
517
|
+
rdfs:label "idempotencyKey" ;
|
|
518
|
+
rdfs:comment "Declaration of whether the caller must supply an idempotency key for this action type, with its citation. Absent means unspecified, not false; never derived from the action's effects. YAML: actionTypes.<ID>.idempotencyKey" ;
|
|
519
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|
|
520
|
+
|
|
521
|
+
ofv:required a rdf:Property ;
|
|
522
|
+
rdfs:label "required" ;
|
|
523
|
+
rdfs:comment "Whether the caller must supply an idempotency key; true and false are both explicit, cited claims. YAML: actionTypes.<ID>.idempotencyKey.required" ;
|
|
524
|
+
rdfs:isDefinedBy <https://w3id.org/avouch/v1/vocab> .
|