@hawkeyexl/manni 4.0.3 → 4.2.0
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 +5 -4
- package/dist/{chunk-DEP5AMVA.js → chunk-BNHQWIAE.js} +11 -42
- package/dist/chunk-BNHQWIAE.js.map +1 -0
- package/dist/{chunk-TQG3WCJY.js → chunk-TH565O2N.js} +1450 -750
- package/dist/chunk-TH565O2N.js.map +1 -0
- package/dist/chunk-UYDRDFYF.js +26136 -0
- package/dist/chunk-UYDRDFYF.js.map +1 -0
- package/dist/cli.js +1332 -127
- package/dist/cli.js.map +1 -1
- package/dist/docmeta.js +2 -2
- package/dist/graph/embed.d.ts +154 -0
- package/dist/graph/embed.js +137 -0
- package/dist/graph/embed.js.map +1 -0
- package/dist/graph/runtime.d.ts +751 -0
- package/dist/graph/runtime.js +3067 -0
- package/dist/graph/runtime.js.map +1 -0
- package/dist/index.d.ts +5186 -1339
- package/dist/index.js +526 -6
- package/dist/index.js.map +1 -1
- package/package.json +40 -5
- package/shapes/graph/shapes-1.0.0.ttl +689 -0
- package/dist/chunk-DEP5AMVA.js.map +0 -1
- package/dist/chunk-JYRY7SKD.js +0 -13908
- package/dist/chunk-JYRY7SKD.js.map +0 -1
- package/dist/chunk-TQG3WCJY.js.map +0 -1
|
@@ -0,0 +1,689 @@
|
|
|
1
|
+
# manni graph graph shapes 1.0.0 — the published SHACL contract for graphs emitted
|
|
2
|
+
# by `manni graph build`. Consumed by `manni graph check` (and the `manni graph fill`
|
|
3
|
+
# guardrail).
|
|
4
|
+
#
|
|
5
|
+
# Three segments, per the versioning convention in CLAUDE.md, and the first
|
|
6
|
+
# file that convention binds. The two-segment files whose history the notes
|
|
7
|
+
# below record are gone; this is the only shapes file that ships. MAJOR,
|
|
8
|
+
# because a graph that used to validate can now fail — see the language
|
|
9
|
+
# pattern.
|
|
10
|
+
#
|
|
11
|
+
# 1.0.0 makes language a scope dimension and gives translations a relation
|
|
12
|
+
# (ADR 01037):
|
|
13
|
+
#
|
|
14
|
+
# - dcterms:language gains a BCP-47 sh:pattern. `lang: English` validated
|
|
15
|
+
# under 0.7 and does not here. The value is a partition key — scope
|
|
16
|
+
# filtering, per-language coverage, and the per-locale retrieval artifacts
|
|
17
|
+
# all group on it — so "a string" is not the contract, any more than it was
|
|
18
|
+
# for graph:contentHash. A free-text label silently partitions a corpus into
|
|
19
|
+
# buckets of one.
|
|
20
|
+
# - Document learns schema:translationOfWork and schema:workTranslation, the
|
|
21
|
+
# two directions manni graph materializes from one authored `translation-of` key.
|
|
22
|
+
# Without them the closed shape rejects every translated corpus, which is
|
|
23
|
+
# the mechanism working, not a bug to route around.
|
|
24
|
+
#
|
|
25
|
+
# There is deliberately no negative-language predicate, and so no sh:disjoint
|
|
26
|
+
# pair as there is for variants and subjects (ADR 01014). A document has one
|
|
27
|
+
# language, which sh:maxCount 1 already says; "not in German" is not a claim an
|
|
28
|
+
# author makes.
|
|
29
|
+
#
|
|
30
|
+
# 0.7 required graph:contentHash on every Document: a lowercase sha256 hex
|
|
31
|
+
# digest of the source file's content (ADR 01036). Required rather than
|
|
32
|
+
# optional because the predicate is unconditional — it is intrinsic like
|
|
33
|
+
# graph:path, not gated behind a derive source — so optional would let a
|
|
34
|
+
# regression that stops emitting it pass `check` in silence. A graph built
|
|
35
|
+
# before 0.7 therefore fails it until rebuilt. There is no older file to pin
|
|
36
|
+
# check.shapes to any more: 0.1 through 0.7 were dockg's published history,
|
|
37
|
+
# which nothing read and which went with that identity (proposal 0051 §7).
|
|
38
|
+
#
|
|
39
|
+
# 0.6 changed no constraint. It existed because the graph: namespace moved to a
|
|
40
|
+
# location that resolves — https://hawkeyexl.github.io/manni/graph/ns# — alongside the
|
|
41
|
+
# vocabulary document that defines every term (ADR 01030). Published shapes
|
|
42
|
+
# are immutable, so a namespace change is a new file rather than an edit. The
|
|
43
|
+
# shapes namespace moves with each version: dsh: is now
|
|
44
|
+
# https://hawkeyexl.github.io/manni/graph/shapes/1.0.0#.
|
|
45
|
+
#
|
|
46
|
+
# 0.5 reified fill provenance (ADR 01015): the graph-fill activity now links to one
|
|
47
|
+
# entry node per filled field via graph:filledFieldEntry, and each entry carries
|
|
48
|
+
# graph:filledField + an optional graph:confidence decimal (replacing the bare
|
|
49
|
+
# graph:filledField literal on the activity). 0.4 added negative scope (ADR
|
|
50
|
+
# 01014); 0.3 added section-level iiRDS typing (ADR 01013); 0.2 added iiRDS
|
|
51
|
+
# Core/Software typing on Documents (ADR 01012).
|
|
52
|
+
#
|
|
53
|
+
# This file is immutable once published: evolve by adding a new version file
|
|
54
|
+
# (shapes-1.1.0.ttl), never by editing this one. Every shape has a named IRI — the
|
|
55
|
+
# only anonymous nodes are the sh:ignoredProperties and sh:in lists the SHACL
|
|
56
|
+
# vocabulary requires — so the file diffs cleanly.
|
|
57
|
+
#
|
|
58
|
+
# Severity contract: these three levels map onto the family scale every manni
|
|
59
|
+
# tool speaks (proposal 0051 §2). sh:Violation → error, and errors exit 1;
|
|
60
|
+
# sh:Warning → warning and sh:Info → notice, both reported at exit 0. Each
|
|
61
|
+
# finding also keeps SHACL's own word, as `shaclSeverity`. Cycle detection
|
|
62
|
+
# (skos:broader loops) and broaderTransitive/related disjointness cannot be
|
|
63
|
+
# expressed in core SHACL and are enforced by graph's check core alongside these
|
|
64
|
+
# shapes.
|
|
65
|
+
|
|
66
|
+
@prefix dcterms: <http://purl.org/dc/terms/> .
|
|
67
|
+
@prefix graph: <https://hawkeyexl.github.io/manni/graph/ns#> .
|
|
68
|
+
@prefix dsh: <https://hawkeyexl.github.io/manni/graph/shapes/1.0.0#> .
|
|
69
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
|
70
|
+
@prefix iirds: <http://iirds.tekom.de/iirds#> .
|
|
71
|
+
@prefix iirdsSft: <http://iirds.tekom.de/iirds/domain/software#> .
|
|
72
|
+
@prefix prov: <http://www.w3.org/ns/prov#> .
|
|
73
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
74
|
+
@prefix schema: <https://schema.org/> .
|
|
75
|
+
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
76
|
+
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
|
77
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
78
|
+
|
|
79
|
+
# --- Documents ---------------------------------------------------------------
|
|
80
|
+
# Closed over the full derived predicate set: an unexpected predicate from a
|
|
81
|
+
# new derive source fails loudly (same stance as additionalProperties: false).
|
|
82
|
+
|
|
83
|
+
dsh:DocumentShape
|
|
84
|
+
a sh:NodeShape ;
|
|
85
|
+
sh:targetClass graph:Document ;
|
|
86
|
+
sh:closed true ;
|
|
87
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
88
|
+
sh:property
|
|
89
|
+
dsh:Document-path ,
|
|
90
|
+
dsh:Document-contentHash ,
|
|
91
|
+
dsh:Document-title ,
|
|
92
|
+
dsh:Document-description ,
|
|
93
|
+
dsh:Document-creator ,
|
|
94
|
+
dsh:Document-created ,
|
|
95
|
+
dsh:Document-modified ,
|
|
96
|
+
dsh:Document-language ,
|
|
97
|
+
dsh:Document-primaryTopic ,
|
|
98
|
+
dsh:Document-subject ,
|
|
99
|
+
dsh:Document-hasPart ,
|
|
100
|
+
dsh:Document-references ,
|
|
101
|
+
dsh:Document-brokenLink ,
|
|
102
|
+
dsh:Document-brokenSectionRef ,
|
|
103
|
+
dsh:Document-image ,
|
|
104
|
+
dsh:Document-codeLanguage ,
|
|
105
|
+
dsh:Document-topicType ,
|
|
106
|
+
dsh:Document-appliesToVariant ,
|
|
107
|
+
dsh:Document-softwareLifecyclePhase ,
|
|
108
|
+
dsh:Document-softwareSubject ,
|
|
109
|
+
dsh:Document-notApplicableToVariant ,
|
|
110
|
+
dsh:Document-notSoftwareSubject ,
|
|
111
|
+
dsh:Document-translationOfWork ,
|
|
112
|
+
dsh:Document-workTranslation ,
|
|
113
|
+
dsh:Document-wasAttributedTo ,
|
|
114
|
+
dsh:Document-qualifiedAttribution ,
|
|
115
|
+
dsh:Document-generatedAtTime ,
|
|
116
|
+
dsh:Document-wasDerivedFrom ,
|
|
117
|
+
dsh:Document-wasRevisionOf ,
|
|
118
|
+
dsh:Document-wasGeneratedBy .
|
|
119
|
+
|
|
120
|
+
dsh:Document-path
|
|
121
|
+
a sh:PropertyShape ;
|
|
122
|
+
sh:path graph:path ;
|
|
123
|
+
sh:datatype xsd:string ;
|
|
124
|
+
sh:minCount 1 ;
|
|
125
|
+
sh:maxCount 1 .
|
|
126
|
+
|
|
127
|
+
# Pattern-checked, not merely typed: the value is a join key other systems index
|
|
128
|
+
# on, so "a string" is not the contract — 64 lowercase hex characters is.
|
|
129
|
+
dsh:Document-contentHash
|
|
130
|
+
a sh:PropertyShape ;
|
|
131
|
+
sh:path graph:contentHash ;
|
|
132
|
+
sh:datatype xsd:string ;
|
|
133
|
+
sh:pattern "^[0-9a-f]{64}$" ;
|
|
134
|
+
sh:minCount 1 ;
|
|
135
|
+
sh:maxCount 1 .
|
|
136
|
+
|
|
137
|
+
dsh:Document-title
|
|
138
|
+
a sh:PropertyShape ;
|
|
139
|
+
sh:path dcterms:title ;
|
|
140
|
+
sh:maxCount 1 .
|
|
141
|
+
|
|
142
|
+
dsh:Document-description
|
|
143
|
+
a sh:PropertyShape ;
|
|
144
|
+
sh:path dcterms:description ;
|
|
145
|
+
sh:maxCount 1 .
|
|
146
|
+
|
|
147
|
+
# Literal when the provenance derive source is off, agent IRI when it is on —
|
|
148
|
+
# both are valid output, so no nodeKind constraint.
|
|
149
|
+
dsh:Document-creator
|
|
150
|
+
a sh:PropertyShape ;
|
|
151
|
+
sh:path dcterms:creator .
|
|
152
|
+
|
|
153
|
+
dsh:Document-created
|
|
154
|
+
a sh:PropertyShape ;
|
|
155
|
+
sh:path dcterms:created ;
|
|
156
|
+
sh:maxCount 1 .
|
|
157
|
+
|
|
158
|
+
dsh:Document-modified
|
|
159
|
+
a sh:PropertyShape ;
|
|
160
|
+
sh:path dcterms:modified ;
|
|
161
|
+
sh:maxCount 1 .
|
|
162
|
+
|
|
163
|
+
# Pattern-checked for the same reason graph:contentHash is: the value is a
|
|
164
|
+
# partition key, not prose. The grammar is BCP-47's common shape —
|
|
165
|
+
# language(2-3) + optional script(4) + optional region(2 alpha or 3 digit) +
|
|
166
|
+
# variants — which accepts de, de-DE, zh-Hans, zh-Hans-CN, pt-BR, und, and
|
|
167
|
+
# rejects English and de_DE.
|
|
168
|
+
dsh:Document-language
|
|
169
|
+
a sh:PropertyShape ;
|
|
170
|
+
sh:path dcterms:language ;
|
|
171
|
+
sh:datatype xsd:string ;
|
|
172
|
+
sh:pattern "^[A-Za-z]{2,3}(-[A-Za-z]{4})?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*$" ;
|
|
173
|
+
sh:maxCount 1 .
|
|
174
|
+
|
|
175
|
+
# The two directions of one authored `translation-of` (ADR 01037). No
|
|
176
|
+
# sh:maxCount: a source document has as many translations as the corpus
|
|
177
|
+
# carries, and a translation may itself be the source of another.
|
|
178
|
+
# schema:translationOfWork accepts any IRI because a target outside the corpus
|
|
179
|
+
# is a URL manni graph resolves but does not analyze; schema:workTranslation is only
|
|
180
|
+
# ever minted at a corpus document, so it carries the class constraint.
|
|
181
|
+
dsh:Document-translationOfWork
|
|
182
|
+
a sh:PropertyShape ;
|
|
183
|
+
sh:path schema:translationOfWork ;
|
|
184
|
+
sh:nodeKind sh:IRI .
|
|
185
|
+
|
|
186
|
+
dsh:Document-workTranslation
|
|
187
|
+
a sh:PropertyShape ;
|
|
188
|
+
sh:path schema:workTranslation ;
|
|
189
|
+
sh:nodeKind sh:IRI ;
|
|
190
|
+
sh:class graph:Document .
|
|
191
|
+
|
|
192
|
+
dsh:Document-primaryTopic
|
|
193
|
+
a sh:PropertyShape ;
|
|
194
|
+
sh:path foaf:primaryTopic ;
|
|
195
|
+
sh:nodeKind sh:IRI ;
|
|
196
|
+
sh:class skos:Concept ;
|
|
197
|
+
sh:maxCount 1 .
|
|
198
|
+
|
|
199
|
+
# Warning, not Violation: a dcterms:subject pointing at an untyped node is a
|
|
200
|
+
# half-built concept — worth surfacing, but merged external data may
|
|
201
|
+
# legitimately use other subject vocabularies.
|
|
202
|
+
dsh:Document-subject
|
|
203
|
+
a sh:PropertyShape ;
|
|
204
|
+
sh:path dcterms:subject ;
|
|
205
|
+
sh:nodeKind sh:IRI ;
|
|
206
|
+
sh:class skos:Concept ;
|
|
207
|
+
sh:severity sh:Warning .
|
|
208
|
+
|
|
209
|
+
dsh:Document-hasPart
|
|
210
|
+
a sh:PropertyShape ;
|
|
211
|
+
sh:path dcterms:hasPart ;
|
|
212
|
+
sh:nodeKind sh:IRI ;
|
|
213
|
+
sh:class graph:Section .
|
|
214
|
+
|
|
215
|
+
dsh:Document-references
|
|
216
|
+
a sh:PropertyShape ;
|
|
217
|
+
sh:path dcterms:references ;
|
|
218
|
+
sh:nodeKind sh:IRI .
|
|
219
|
+
|
|
220
|
+
dsh:Document-brokenLink
|
|
221
|
+
a sh:PropertyShape ;
|
|
222
|
+
sh:path graph:brokenLink ;
|
|
223
|
+
sh:datatype xsd:string .
|
|
224
|
+
|
|
225
|
+
# A graph.sections key that named no heading (surfaced by stats, gated by --check).
|
|
226
|
+
dsh:Document-brokenSectionRef
|
|
227
|
+
a sh:PropertyShape ;
|
|
228
|
+
sh:path graph:brokenSectionRef ;
|
|
229
|
+
sh:datatype xsd:string .
|
|
230
|
+
|
|
231
|
+
dsh:Document-image
|
|
232
|
+
a sh:PropertyShape ;
|
|
233
|
+
sh:path schema:image ;
|
|
234
|
+
sh:nodeKind sh:IRI .
|
|
235
|
+
|
|
236
|
+
dsh:Document-codeLanguage
|
|
237
|
+
a sh:PropertyShape ;
|
|
238
|
+
sh:path graph:codeLanguage ;
|
|
239
|
+
sh:datatype xsd:string .
|
|
240
|
+
|
|
241
|
+
# iiRDS Core topic type: exactly the six published Generic* instances.
|
|
242
|
+
dsh:Document-topicType
|
|
243
|
+
a sh:PropertyShape ;
|
|
244
|
+
sh:path iirds:has-topic-type ;
|
|
245
|
+
sh:nodeKind sh:IRI ;
|
|
246
|
+
sh:maxCount 1 ;
|
|
247
|
+
sh:in (
|
|
248
|
+
iirds:GenericTask
|
|
249
|
+
iirds:GenericConcept
|
|
250
|
+
iirds:GenericReference
|
|
251
|
+
iirds:GenericLearning
|
|
252
|
+
iirds:GenericTroubleshooting
|
|
253
|
+
iirds:GenericForm
|
|
254
|
+
) .
|
|
255
|
+
|
|
256
|
+
# iiRDS product/variant applicability: minted iirds:ProductVariant nodes.
|
|
257
|
+
dsh:Document-appliesToVariant
|
|
258
|
+
a sh:PropertyShape ;
|
|
259
|
+
sh:path iirds:relates-to-product-variant ;
|
|
260
|
+
sh:nodeKind sh:IRI ;
|
|
261
|
+
sh:class iirds:ProductVariant .
|
|
262
|
+
|
|
263
|
+
# iiRDS Software domain — product lifecycle phases (the six published instances).
|
|
264
|
+
dsh:Document-softwareLifecyclePhase
|
|
265
|
+
a sh:PropertyShape ;
|
|
266
|
+
sh:path iirds:relates-to-product-lifecycle-phase ;
|
|
267
|
+
sh:nodeKind sh:IRI ;
|
|
268
|
+
sh:in (
|
|
269
|
+
iirdsSft:Administration
|
|
270
|
+
iirdsSft:Customization
|
|
271
|
+
iirdsSft:Update
|
|
272
|
+
iirdsSft:Deployment
|
|
273
|
+
iirdsSft:Integration
|
|
274
|
+
iirdsSft:Deinstallation
|
|
275
|
+
) .
|
|
276
|
+
|
|
277
|
+
# iiRDS Software domain — information subjects (the three published instances).
|
|
278
|
+
dsh:Document-softwareSubject
|
|
279
|
+
a sh:PropertyShape ;
|
|
280
|
+
sh:path iirds:has-subject ;
|
|
281
|
+
sh:nodeKind sh:IRI ;
|
|
282
|
+
sh:in (
|
|
283
|
+
iirdsSft:Architecture
|
|
284
|
+
iirdsSft:Interface
|
|
285
|
+
iirdsSft:SystemRequirement
|
|
286
|
+
) .
|
|
287
|
+
|
|
288
|
+
# Negative scope (ADR 01014): disjoint from the positive relation, so a variant
|
|
289
|
+
# or subject asserted as both applicable and not-applicable on one node fails.
|
|
290
|
+
dsh:Document-notApplicableToVariant
|
|
291
|
+
a sh:PropertyShape ;
|
|
292
|
+
sh:path graph:notApplicableToVariant ;
|
|
293
|
+
sh:nodeKind sh:IRI ;
|
|
294
|
+
sh:class iirds:ProductVariant ;
|
|
295
|
+
sh:disjoint iirds:relates-to-product-variant .
|
|
296
|
+
|
|
297
|
+
dsh:Document-notSoftwareSubject
|
|
298
|
+
a sh:PropertyShape ;
|
|
299
|
+
sh:path graph:notSoftwareSubject ;
|
|
300
|
+
sh:nodeKind sh:IRI ;
|
|
301
|
+
sh:disjoint iirds:has-subject ;
|
|
302
|
+
sh:in (
|
|
303
|
+
iirdsSft:Architecture
|
|
304
|
+
iirdsSft:Interface
|
|
305
|
+
iirdsSft:SystemRequirement
|
|
306
|
+
) .
|
|
307
|
+
|
|
308
|
+
dsh:Document-wasAttributedTo
|
|
309
|
+
a sh:PropertyShape ;
|
|
310
|
+
sh:path prov:wasAttributedTo ;
|
|
311
|
+
sh:nodeKind sh:IRI .
|
|
312
|
+
|
|
313
|
+
dsh:Document-qualifiedAttribution
|
|
314
|
+
a sh:PropertyShape ;
|
|
315
|
+
sh:path prov:qualifiedAttribution ;
|
|
316
|
+
sh:nodeKind sh:IRI ;
|
|
317
|
+
sh:class prov:Attribution .
|
|
318
|
+
|
|
319
|
+
dsh:Document-generatedAtTime
|
|
320
|
+
a sh:PropertyShape ;
|
|
321
|
+
sh:path prov:generatedAtTime ;
|
|
322
|
+
sh:maxCount 1 .
|
|
323
|
+
|
|
324
|
+
dsh:Document-wasDerivedFrom
|
|
325
|
+
a sh:PropertyShape ;
|
|
326
|
+
sh:path prov:wasDerivedFrom ;
|
|
327
|
+
sh:nodeKind sh:IRI .
|
|
328
|
+
|
|
329
|
+
dsh:Document-wasRevisionOf
|
|
330
|
+
a sh:PropertyShape ;
|
|
331
|
+
sh:path prov:wasRevisionOf ;
|
|
332
|
+
sh:nodeKind sh:IRI .
|
|
333
|
+
|
|
334
|
+
dsh:Document-wasGeneratedBy
|
|
335
|
+
a sh:PropertyShape ;
|
|
336
|
+
sh:path prov:wasGeneratedBy ;
|
|
337
|
+
sh:nodeKind sh:IRI ;
|
|
338
|
+
sh:class prov:Activity .
|
|
339
|
+
|
|
340
|
+
# --- Product variants --------------------------------------------------------
|
|
341
|
+
# Minted from graph.applies-to. manni graph references iiRDS ProductVariant as a class
|
|
342
|
+
# but only labels the node — the iiRDS vocabulary itself is never re-emitted.
|
|
343
|
+
|
|
344
|
+
dsh:ProductVariantShape
|
|
345
|
+
a sh:NodeShape ;
|
|
346
|
+
sh:targetClass iirds:ProductVariant ;
|
|
347
|
+
sh:closed true ;
|
|
348
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
349
|
+
sh:property dsh:ProductVariant-title .
|
|
350
|
+
|
|
351
|
+
dsh:ProductVariant-title
|
|
352
|
+
a sh:PropertyShape ;
|
|
353
|
+
sh:path dcterms:title ;
|
|
354
|
+
sh:minCount 1 ;
|
|
355
|
+
sh:maxCount 1 .
|
|
356
|
+
|
|
357
|
+
# --- Sections ----------------------------------------------------------------
|
|
358
|
+
|
|
359
|
+
dsh:SectionShape
|
|
360
|
+
a sh:NodeShape ;
|
|
361
|
+
sh:targetClass graph:Section ;
|
|
362
|
+
sh:closed true ;
|
|
363
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
364
|
+
sh:property
|
|
365
|
+
dsh:Section-title ,
|
|
366
|
+
dsh:Section-level ,
|
|
367
|
+
dsh:Section-order ,
|
|
368
|
+
dsh:Section-hasPart ,
|
|
369
|
+
dsh:Section-subject ,
|
|
370
|
+
dsh:Section-topicType ,
|
|
371
|
+
dsh:Section-appliesToVariant ,
|
|
372
|
+
dsh:Section-softwareLifecyclePhase ,
|
|
373
|
+
dsh:Section-softwareSubject ,
|
|
374
|
+
dsh:Section-notApplicableToVariant ,
|
|
375
|
+
dsh:Section-notSoftwareSubject .
|
|
376
|
+
|
|
377
|
+
dsh:Section-title
|
|
378
|
+
a sh:PropertyShape ;
|
|
379
|
+
sh:path dcterms:title ;
|
|
380
|
+
sh:minCount 1 ;
|
|
381
|
+
sh:maxCount 1 .
|
|
382
|
+
|
|
383
|
+
dsh:Section-level
|
|
384
|
+
a sh:PropertyShape ;
|
|
385
|
+
sh:path graph:level ;
|
|
386
|
+
sh:datatype xsd:integer ;
|
|
387
|
+
sh:minCount 1 ;
|
|
388
|
+
sh:maxCount 1 .
|
|
389
|
+
|
|
390
|
+
dsh:Section-order
|
|
391
|
+
a sh:PropertyShape ;
|
|
392
|
+
sh:path graph:order ;
|
|
393
|
+
sh:datatype xsd:integer ;
|
|
394
|
+
sh:minCount 1 ;
|
|
395
|
+
sh:maxCount 1 .
|
|
396
|
+
|
|
397
|
+
dsh:Section-hasPart
|
|
398
|
+
a sh:PropertyShape ;
|
|
399
|
+
sh:path dcterms:hasPart ;
|
|
400
|
+
sh:nodeKind sh:IRI ;
|
|
401
|
+
sh:class graph:Section .
|
|
402
|
+
|
|
403
|
+
# Section-level iiRDS typing (ADR 01013) — the same constraints the Document
|
|
404
|
+
# shape carries for these predicates.
|
|
405
|
+
|
|
406
|
+
# Warning, not Violation, exactly as Document-subject: a subject pointing at an
|
|
407
|
+
# untyped node is a half-built concept, and merged data may use other schemes.
|
|
408
|
+
dsh:Section-subject
|
|
409
|
+
a sh:PropertyShape ;
|
|
410
|
+
sh:path dcterms:subject ;
|
|
411
|
+
sh:nodeKind sh:IRI ;
|
|
412
|
+
sh:class skos:Concept ;
|
|
413
|
+
sh:severity sh:Warning .
|
|
414
|
+
|
|
415
|
+
dsh:Section-topicType
|
|
416
|
+
a sh:PropertyShape ;
|
|
417
|
+
sh:path iirds:has-topic-type ;
|
|
418
|
+
sh:nodeKind sh:IRI ;
|
|
419
|
+
sh:maxCount 1 ;
|
|
420
|
+
sh:in (
|
|
421
|
+
iirds:GenericTask
|
|
422
|
+
iirds:GenericConcept
|
|
423
|
+
iirds:GenericReference
|
|
424
|
+
iirds:GenericLearning
|
|
425
|
+
iirds:GenericTroubleshooting
|
|
426
|
+
iirds:GenericForm
|
|
427
|
+
) .
|
|
428
|
+
|
|
429
|
+
dsh:Section-appliesToVariant
|
|
430
|
+
a sh:PropertyShape ;
|
|
431
|
+
sh:path iirds:relates-to-product-variant ;
|
|
432
|
+
sh:nodeKind sh:IRI ;
|
|
433
|
+
sh:class iirds:ProductVariant .
|
|
434
|
+
|
|
435
|
+
dsh:Section-softwareLifecyclePhase
|
|
436
|
+
a sh:PropertyShape ;
|
|
437
|
+
sh:path iirds:relates-to-product-lifecycle-phase ;
|
|
438
|
+
sh:nodeKind sh:IRI ;
|
|
439
|
+
sh:in (
|
|
440
|
+
iirdsSft:Administration
|
|
441
|
+
iirdsSft:Customization
|
|
442
|
+
iirdsSft:Update
|
|
443
|
+
iirdsSft:Deployment
|
|
444
|
+
iirdsSft:Integration
|
|
445
|
+
iirdsSft:Deinstallation
|
|
446
|
+
) .
|
|
447
|
+
|
|
448
|
+
dsh:Section-softwareSubject
|
|
449
|
+
a sh:PropertyShape ;
|
|
450
|
+
sh:path iirds:has-subject ;
|
|
451
|
+
sh:nodeKind sh:IRI ;
|
|
452
|
+
sh:in (
|
|
453
|
+
iirdsSft:Architecture
|
|
454
|
+
iirdsSft:Interface
|
|
455
|
+
iirdsSft:SystemRequirement
|
|
456
|
+
) .
|
|
457
|
+
|
|
458
|
+
# Section-level negative scope (ADR 01014), disjoint from the positive relation.
|
|
459
|
+
dsh:Section-notApplicableToVariant
|
|
460
|
+
a sh:PropertyShape ;
|
|
461
|
+
sh:path graph:notApplicableToVariant ;
|
|
462
|
+
sh:nodeKind sh:IRI ;
|
|
463
|
+
sh:class iirds:ProductVariant ;
|
|
464
|
+
sh:disjoint iirds:relates-to-product-variant .
|
|
465
|
+
|
|
466
|
+
dsh:Section-notSoftwareSubject
|
|
467
|
+
a sh:PropertyShape ;
|
|
468
|
+
sh:path graph:notSoftwareSubject ;
|
|
469
|
+
sh:nodeKind sh:IRI ;
|
|
470
|
+
sh:disjoint iirds:has-subject ;
|
|
471
|
+
sh:in (
|
|
472
|
+
iirdsSft:Architecture
|
|
473
|
+
iirdsSft:Interface
|
|
474
|
+
iirdsSft:SystemRequirement
|
|
475
|
+
) .
|
|
476
|
+
|
|
477
|
+
# --- Concepts ----------------------------------------------------------------
|
|
478
|
+
|
|
479
|
+
dsh:ConceptShape
|
|
480
|
+
a sh:NodeShape ;
|
|
481
|
+
sh:targetClass skos:Concept ;
|
|
482
|
+
sh:closed true ;
|
|
483
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
484
|
+
sh:property
|
|
485
|
+
dsh:Concept-prefLabel ,
|
|
486
|
+
dsh:Concept-prefLabel-collision ,
|
|
487
|
+
dsh:Concept-inScheme ,
|
|
488
|
+
dsh:Concept-altLabel ,
|
|
489
|
+
dsh:Concept-broader ,
|
|
490
|
+
dsh:Concept-narrower ,
|
|
491
|
+
dsh:Concept-related .
|
|
492
|
+
|
|
493
|
+
dsh:Concept-prefLabel
|
|
494
|
+
a sh:PropertyShape ;
|
|
495
|
+
sh:path skos:prefLabel ;
|
|
496
|
+
sh:minCount 1 .
|
|
497
|
+
|
|
498
|
+
# Warning, not Violation: concept IRIs deliberately converge on slugified
|
|
499
|
+
# labels (manni graph's design), so "Configuration" and "configuration" merge into
|
|
500
|
+
# one concept carrying both spellings. SKOS wants exactly one prefLabel —
|
|
501
|
+
# surface the collision so authors can settle on a spelling, but don't fail
|
|
502
|
+
# the build over the convergence feature working as designed.
|
|
503
|
+
dsh:Concept-prefLabel-collision
|
|
504
|
+
a sh:PropertyShape ;
|
|
505
|
+
sh:path skos:prefLabel ;
|
|
506
|
+
sh:maxCount 1 ;
|
|
507
|
+
sh:severity sh:Warning ;
|
|
508
|
+
sh:message "concept carries multiple prefLabels (same slug, different spellings) — settle on one spelling" .
|
|
509
|
+
|
|
510
|
+
dsh:Concept-inScheme
|
|
511
|
+
a sh:PropertyShape ;
|
|
512
|
+
sh:path skos:inScheme ;
|
|
513
|
+
sh:nodeKind sh:IRI ;
|
|
514
|
+
sh:minCount 1 .
|
|
515
|
+
|
|
516
|
+
dsh:Concept-altLabel
|
|
517
|
+
a sh:PropertyShape ;
|
|
518
|
+
sh:path skos:altLabel .
|
|
519
|
+
|
|
520
|
+
dsh:Concept-broader
|
|
521
|
+
a sh:PropertyShape ;
|
|
522
|
+
sh:path skos:broader ;
|
|
523
|
+
sh:nodeKind sh:IRI ;
|
|
524
|
+
sh:class skos:Concept .
|
|
525
|
+
|
|
526
|
+
dsh:Concept-narrower
|
|
527
|
+
a sh:PropertyShape ;
|
|
528
|
+
sh:path skos:narrower ;
|
|
529
|
+
sh:nodeKind sh:IRI ;
|
|
530
|
+
sh:class skos:Concept .
|
|
531
|
+
|
|
532
|
+
# One-hop related/broader disjointness; the transitive form lives in the
|
|
533
|
+
# check core's TypeScript walk.
|
|
534
|
+
dsh:Concept-related
|
|
535
|
+
a sh:PropertyShape ;
|
|
536
|
+
sh:path skos:related ;
|
|
537
|
+
sh:nodeKind sh:IRI ;
|
|
538
|
+
sh:class skos:Concept ;
|
|
539
|
+
sh:disjoint skos:broader .
|
|
540
|
+
|
|
541
|
+
dsh:SchemeShape
|
|
542
|
+
a sh:NodeShape ;
|
|
543
|
+
sh:targetClass skos:ConceptScheme ;
|
|
544
|
+
sh:closed true ;
|
|
545
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
546
|
+
sh:property dsh:Scheme-title .
|
|
547
|
+
|
|
548
|
+
dsh:Scheme-title
|
|
549
|
+
a sh:PropertyShape ;
|
|
550
|
+
sh:path dcterms:title ;
|
|
551
|
+
sh:maxCount 1 .
|
|
552
|
+
|
|
553
|
+
# --- Provenance --------------------------------------------------------------
|
|
554
|
+
|
|
555
|
+
dsh:PersonShape
|
|
556
|
+
a sh:NodeShape ;
|
|
557
|
+
sh:targetClass prov:Person ;
|
|
558
|
+
sh:closed true ;
|
|
559
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
560
|
+
sh:property dsh:Agent-name .
|
|
561
|
+
|
|
562
|
+
dsh:OrganizationShape
|
|
563
|
+
a sh:NodeShape ;
|
|
564
|
+
sh:targetClass prov:Organization ;
|
|
565
|
+
sh:closed true ;
|
|
566
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
567
|
+
sh:property dsh:Agent-name .
|
|
568
|
+
|
|
569
|
+
dsh:SoftwareAgentShape
|
|
570
|
+
a sh:NodeShape ;
|
|
571
|
+
sh:targetClass prov:SoftwareAgent ;
|
|
572
|
+
sh:closed true ;
|
|
573
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
574
|
+
sh:property
|
|
575
|
+
dsh:Agent-name ,
|
|
576
|
+
dsh:SoftwareAgent-version .
|
|
577
|
+
|
|
578
|
+
dsh:Agent-name
|
|
579
|
+
a sh:PropertyShape ;
|
|
580
|
+
sh:path foaf:name ;
|
|
581
|
+
sh:minCount 1 .
|
|
582
|
+
|
|
583
|
+
dsh:SoftwareAgent-version
|
|
584
|
+
a sh:PropertyShape ;
|
|
585
|
+
sh:path graph:version ;
|
|
586
|
+
sh:datatype xsd:string ;
|
|
587
|
+
sh:maxCount 1 .
|
|
588
|
+
|
|
589
|
+
dsh:ActivityShape
|
|
590
|
+
a sh:NodeShape ;
|
|
591
|
+
sh:targetClass prov:Activity ;
|
|
592
|
+
sh:closed true ;
|
|
593
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
594
|
+
sh:property
|
|
595
|
+
dsh:Activity-wasAssociatedWith ,
|
|
596
|
+
dsh:Activity-qualifiedAssociation ,
|
|
597
|
+
dsh:Activity-filledFieldEntry ,
|
|
598
|
+
dsh:Activity-generated ,
|
|
599
|
+
dsh:Activity-used ,
|
|
600
|
+
dsh:Activity-endedAtTime .
|
|
601
|
+
|
|
602
|
+
dsh:Activity-wasAssociatedWith
|
|
603
|
+
a sh:PropertyShape ;
|
|
604
|
+
sh:path prov:wasAssociatedWith ;
|
|
605
|
+
sh:nodeKind sh:IRI .
|
|
606
|
+
|
|
607
|
+
dsh:Activity-qualifiedAssociation
|
|
608
|
+
a sh:PropertyShape ;
|
|
609
|
+
sh:path prov:qualifiedAssociation ;
|
|
610
|
+
sh:nodeKind sh:IRI ;
|
|
611
|
+
sh:class prov:Association .
|
|
612
|
+
|
|
613
|
+
# The fill activity links to one entry node per filled field (ADR 01015).
|
|
614
|
+
dsh:Activity-filledFieldEntry
|
|
615
|
+
a sh:PropertyShape ;
|
|
616
|
+
sh:path graph:filledFieldEntry ;
|
|
617
|
+
sh:nodeKind sh:IRI .
|
|
618
|
+
|
|
619
|
+
# Each filled-field entry carries the field name and (when fill recorded one)
|
|
620
|
+
# the model's confidence. Targeted by object position — the entry nodes are not
|
|
621
|
+
# separately typed, keeping the node vocabulary at two classes.
|
|
622
|
+
dsh:FilledFieldEntryShape
|
|
623
|
+
a sh:NodeShape ;
|
|
624
|
+
sh:targetObjectsOf graph:filledFieldEntry ;
|
|
625
|
+
sh:closed true ;
|
|
626
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
627
|
+
sh:property
|
|
628
|
+
dsh:FilledFieldEntry-name ,
|
|
629
|
+
dsh:FilledFieldEntry-confidence .
|
|
630
|
+
|
|
631
|
+
dsh:FilledFieldEntry-name
|
|
632
|
+
a sh:PropertyShape ;
|
|
633
|
+
sh:path graph:filledField ;
|
|
634
|
+
sh:datatype xsd:string ;
|
|
635
|
+
sh:minCount 1 ;
|
|
636
|
+
sh:maxCount 1 .
|
|
637
|
+
|
|
638
|
+
dsh:FilledFieldEntry-confidence
|
|
639
|
+
a sh:PropertyShape ;
|
|
640
|
+
sh:path graph:confidence ;
|
|
641
|
+
sh:datatype xsd:decimal ;
|
|
642
|
+
sh:maxCount 1 .
|
|
643
|
+
|
|
644
|
+
dsh:Activity-generated
|
|
645
|
+
a sh:PropertyShape ;
|
|
646
|
+
sh:path prov:generated ;
|
|
647
|
+
sh:nodeKind sh:IRI .
|
|
648
|
+
|
|
649
|
+
dsh:Activity-used
|
|
650
|
+
a sh:PropertyShape ;
|
|
651
|
+
sh:path prov:used ;
|
|
652
|
+
sh:nodeKind sh:IRI .
|
|
653
|
+
|
|
654
|
+
dsh:Activity-endedAtTime
|
|
655
|
+
a sh:PropertyShape ;
|
|
656
|
+
sh:path prov:endedAtTime ;
|
|
657
|
+
sh:datatype xsd:dateTime ;
|
|
658
|
+
sh:maxCount 1 .
|
|
659
|
+
|
|
660
|
+
dsh:AttributionShape
|
|
661
|
+
a sh:NodeShape ;
|
|
662
|
+
sh:targetClass prov:Attribution ;
|
|
663
|
+
sh:closed true ;
|
|
664
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
665
|
+
sh:property
|
|
666
|
+
dsh:Qualification-agent ,
|
|
667
|
+
dsh:Qualification-hadRole .
|
|
668
|
+
|
|
669
|
+
dsh:AssociationShape
|
|
670
|
+
a sh:NodeShape ;
|
|
671
|
+
sh:targetClass prov:Association ;
|
|
672
|
+
sh:closed true ;
|
|
673
|
+
sh:ignoredProperties ( rdf:type ) ;
|
|
674
|
+
sh:property
|
|
675
|
+
dsh:Qualification-agent ,
|
|
676
|
+
dsh:Qualification-hadRole .
|
|
677
|
+
|
|
678
|
+
dsh:Qualification-agent
|
|
679
|
+
a sh:PropertyShape ;
|
|
680
|
+
sh:path prov:agent ;
|
|
681
|
+
sh:nodeKind sh:IRI ;
|
|
682
|
+
sh:minCount 1 ;
|
|
683
|
+
sh:maxCount 1 .
|
|
684
|
+
|
|
685
|
+
dsh:Qualification-hadRole
|
|
686
|
+
a sh:PropertyShape ;
|
|
687
|
+
sh:path prov:hadRole ;
|
|
688
|
+
sh:nodeKind sh:IRI ;
|
|
689
|
+
sh:maxCount 1 .
|