cf-concept-installation 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ """Semantic vocabulary for Cogniflow installation."""
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def semantic_files() -> tuple[Path, ...]:
7
+ return tuple(sorted((Path(__file__).resolve().parent / "semantics").glob("*.trig")))
@@ -0,0 +1,224 @@
1
+ @prefix cf: <https://cogniflow.odea-project.org/cf#> .
2
+ @prefix profile: <urn:cf:profile:> .
3
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
4
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
7
+
8
+ profile:InstallationProfileConceptDomain {
9
+ profile:InstallationProfileConceptDomain a cf:ConceptDomain ;
10
+ cf:definesConcept profile:InstallationProfile ;
11
+ cf:definesAttribute profile:ProfileIdentifier, profile:ProfileVersion,
12
+ profile:CapabilityRequest, profile:PostInstallVerificationCapability ;
13
+ cf:definesRelation profile:hasProfileIdentifier, profile:hasProfileVersion,
14
+ profile:hasCapabilityRequest, profile:hasPostInstallVerificationCapability ;
15
+ cf:definesShape profile:InstallationProfileConceptShape,
16
+ profile:InstallationProfileInstanceShape ;
17
+ skos:prefLabel "installation profile concept domain" ;
18
+ skos:definition "Concept domain for versioned installation profiles that request semantic capabilities from Cogniflow providers." ;
19
+ skos:scopeNote "Use installation profiles to select capabilities during bootstrap without naming packages or requiring a running semantic graph." ;
20
+ skos:example "The minimal profile requests the installation handoff and profile-installation capabilities." .
21
+
22
+ profile:InstallationProfile a owl:Class, cf:Concept ;
23
+ skos:prefLabel "installation profile" ;
24
+ skos:definition "A versioned declaration of the capabilities required for one Cogniflow installation." ;
25
+ skos:scopeNote "Use an installation profile as the stable user-selectable input to bootstrap capability discovery." ;
26
+ skos:example "profile:minimal is an installation profile for the smallest supported installation." .
27
+
28
+ profile:ProfileIdentifier a owl:Class, cf:Attribute ;
29
+ skos:prefLabel "profile identifier" ;
30
+ skos:definition "Attribute carrying the stable short identifier of an installation profile." ;
31
+ skos:scopeNote "Use a lowercase product-oriented identifier independent of package names and file paths." ;
32
+ skos:example "A profile identifier attribute can carry the value minimal." .
33
+
34
+ profile:ProfileVersion a owl:Class, cf:Attribute ;
35
+ skos:prefLabel "profile version" ;
36
+ skos:definition "Attribute carrying the semantic-contract version of an installation profile." ;
37
+ skos:scopeNote "Change this version when the profile capability contract changes." ;
38
+ skos:example "A profile version attribute can carry the value 1.0.0." .
39
+
40
+ profile:CapabilityRequest a owl:Class, cf:Attribute ;
41
+ skos:prefLabel "capability request" ;
42
+ skos:definition "Attribute carrying the IRI of a capability required by an installation profile." ;
43
+ skos:scopeNote "Request semantic capabilities rather than distributions, modules, executables, or source paths." ;
44
+ skos:example "A capability request can carry service:ProfileInstallation as its RDF value." .
45
+
46
+ profile:PostInstallVerificationCapability a owl:Class, cf:Attribute ;
47
+ skos:prefLabel "post-install verification capability" ;
48
+ skos:definition "Attribute carrying the optional capability used to verify an installed profile." ;
49
+ skos:scopeNote "Use at most one verification capability for a profile and require it to be among the profile capability requests." ;
50
+ skos:example "The workspace profile uses its health capability for post-install verification." .
51
+
52
+ profile:ProfileCatalogConceptDomain a cf:ConceptDomain ;
53
+ cf:definesConcept profile:ProfileCatalog ;
54
+ cf:definesAttribute profile:ProfileCatalogEntry, profile:ProfileDocumentDigest ;
55
+ cf:definesRelation profile:hasProfileEntry, profile:hasProfileDocumentDigest ;
56
+ cf:definesShape profile:ProfileCatalogConceptShape, profile:ProfileCatalogShape ;
57
+ skos:prefLabel "profile catalog concept domain" ;
58
+ skos:definition "Concept domain for the catalog that indexes selectable installation-profile documents." ;
59
+ skos:scopeNote "Keep catalog indexing separate from the single installation-profile concept; a catalog does not authorize installation." ;
60
+ skos:example "A profile catalog contains entries binding profile IRIs to document digests." .
61
+
62
+ profile:ProfileCatalog a owl:Class, cf:Concept ;
63
+ skos:prefLabel "profile catalog" ;
64
+ skos:definition "Concept representing an indexed set of selectable installation profiles." ;
65
+ skos:scopeNote "Use the catalog as a local bootstrap index; it is not a substitute for the runtime semantic graph." ;
66
+ skos:example "A source checkout can expose a catalog containing minimal and workspace development profiles." .
67
+
68
+ profile:ProfileCatalogEntry a owl:Class, cf:Attribute ;
69
+ skos:prefLabel "profile catalog entry" ;
70
+ skos:definition "Structured attribute binding a catalog entry to one profile document." ;
71
+ skos:scopeNote "Use one entry per canonical profile IRI and profile document." ;
72
+ skos:example "A catalog entry can bind profile:minimal to its indexed document digest." .
73
+
74
+ profile:ProfileDocumentDigest a owl:Class, cf:Attribute ;
75
+ skos:prefLabel "profile document digest" ;
76
+ skos:definition "Attribute carrying the SHA-256 identity of a canonical profile document." ;
77
+ skos:scopeNote "Use the digest to fail closed when indexed profile bytes change." ;
78
+ skos:example "A profile document digest can carry a lowercase hexadecimal SHA-256 value." .
79
+
80
+ profile:hasProfileIdentifier a rdf:Property, cf:Relation ;
81
+ rdfs:domain profile:InstallationProfile ; rdfs:range profile:ProfileIdentifier ;
82
+ skos:prefLabel "has profile identifier" ;
83
+ skos:definition "Links an installation profile to its profile-identifier attribute." ;
84
+ skos:scopeNote "Use exactly once on every installation profile." ;
85
+ skos:example "profile:minimal profile:hasProfileIdentifier profile:minimal_identifier." .
86
+
87
+ profile:hasProfileVersion a rdf:Property, cf:Relation ;
88
+ rdfs:domain profile:InstallationProfile ; rdfs:range profile:ProfileVersion ;
89
+ skos:prefLabel "has profile version" ;
90
+ skos:definition "Links an installation profile to its profile-version attribute." ;
91
+ skos:scopeNote "Use exactly once on every installation profile." ;
92
+ skos:example "profile:minimal profile:hasProfileVersion profile:minimal_version." .
93
+
94
+ profile:hasCapabilityRequest a rdf:Property, cf:Relation ;
95
+ rdfs:domain profile:InstallationProfile ; rdfs:range profile:CapabilityRequest ;
96
+ skos:prefLabel "has capability request" ;
97
+ skos:definition "Links an installation profile to a capability-request attribute." ;
98
+ skos:scopeNote "Use this canonical relation for every capability requested during bootstrap." ;
99
+ skos:example "profile:minimal profile:hasCapabilityRequest profile:minimal_installation_request." .
100
+
101
+ profile:hasPostInstallVerificationCapability a rdf:Property, cf:Relation ;
102
+ rdfs:domain profile:InstallationProfile ; rdfs:range profile:PostInstallVerificationCapability ;
103
+ skos:prefLabel "has post-install verification capability" ;
104
+ skos:definition "Links an installation profile to its optional post-install verification-capability attribute." ;
105
+ skos:scopeNote "Use at most once and only for a capability also requested by the profile." ;
106
+ skos:example "profile:workspace-dev profile:hasPostInstallVerificationCapability profile:workspace_health_verification." .
107
+
108
+ profile:hasProfileEntry a rdf:Property, cf:Relation ;
109
+ rdfs:domain profile:ProfileCatalog ; rdfs:range profile:ProfileCatalogEntry ;
110
+ skos:prefLabel "has profile entry" ;
111
+ skos:definition "Links a profile catalog to one profile-catalog entry." ;
112
+ skos:scopeNote "Use once for each indexed profile document." ;
113
+ skos:example "A local profile catalog has an entry for profile:minimal." .
114
+
115
+ profile:hasProfileDocumentDigest a rdf:Property, cf:Relation ;
116
+ rdfs:domain profile:ProfileCatalogEntry ; rdfs:range profile:ProfileDocumentDigest ;
117
+ skos:prefLabel "has profile document digest" ;
118
+ skos:definition "Links a profile-catalog entry to its profile-document-digest attribute." ;
119
+ skos:scopeNote "Use exactly once to bind an entry to canonical profile bytes." ;
120
+ skos:example "A minimal-profile entry has the digest of minimal.trig." .
121
+ }
122
+
123
+ <urn:cf:installation:PlanConceptDomain> {
124
+ <urn:cf:installation:PlanConceptDomain> a cf:ConceptDomain ;
125
+ cf:definesConcept <urn:cf:installation:InstallationPlan> ;
126
+ cf:definesAttribute <urn:cf:installation:PlanDigest>, <urn:cf:installation:PlannedProfile> ;
127
+ cf:definesRelation <urn:cf:installation:hasPlanDigest>, <urn:cf:installation:hasPlannedProfile> ;
128
+ cf:definesShape <urn:cf:installation:PlanConceptShape>, <urn:cf:installation:PlanInstanceShape> ;
129
+ skos:prefLabel "installation plan concept domain" ;
130
+ skos:definition "Shared vocabulary for identifying a concrete bootstrap plan and its requested profile." ;
131
+ skos:scopeNote "Use this domain for plans exchanged by bootstrap providers." ;
132
+ skos:example "A source resolver receives a plan for the minimal installation profile." .
133
+
134
+ <urn:cf:installation:InstallationPlan> a owl:Class, cf:Concept ;
135
+ skos:prefLabel "installation plan" ;
136
+ skos:definition "A concrete bootstrap run plan bound to an installation profile." ;
137
+ skos:scopeNote "The plan describes the lifecycle and source mode before artifact resolution." ;
138
+ skos:example "A plan can request the minimal profile and select the local artifact source." .
139
+
140
+ <urn:cf:installation:PlanDigest> a owl:Class, cf:Attribute ;
141
+ skos:prefLabel "installation plan digest" ;
142
+ skos:definition "SHA-256 identity of the canonical bootstrap plan document." ;
143
+ skos:scopeNote "Use the existing bootstrap canonical JSON digest." ;
144
+ skos:example "A handoff receipt can bind its input plan by SHA-256." .
145
+
146
+ <urn:cf:installation:hasPlanDigest> a rdf:Property, cf:Relation ;
147
+ rdfs:domain <urn:cf:installation:InstallationPlan> ;
148
+ rdfs:range <urn:cf:installation:PlanDigest> ;
149
+ skos:prefLabel "has plan digest" ;
150
+ skos:definition "Links an installation plan to the digest of its canonical document." ;
151
+ skos:scopeNote "Use one digest for the complete plan." ;
152
+ skos:example "An orchestrator identifies the plan it passes to a source resolver." .
153
+
154
+ <urn:cf:installation:PlannedProfile> a owl:Class, cf:Attribute ;
155
+ skos:prefLabel "planned profile" ;
156
+ skos:definition "Attribute carrying the IRI of the installation profile selected for the plan." ;
157
+ skos:scopeNote "Use the canonical profile IRI carried by the existing JSON plan." ;
158
+ skos:example "The planned profile can carry profile:minimal as its RDF value." .
159
+
160
+ <urn:cf:installation:hasPlannedProfile> a rdf:Property, cf:Relation ;
161
+ rdfs:domain <urn:cf:installation:InstallationPlan> ;
162
+ rdfs:range <urn:cf:installation:PlannedProfile> ;
163
+ skos:prefLabel "has planned profile" ;
164
+ skos:definition "Links a concrete plan to the profile it is intended to install." ;
165
+ skos:scopeNote "Use one installation profile for each plan." ;
166
+ skos:example "A concrete plan links to profile:minimal." .
167
+ }
168
+
169
+ <urn:cf:installation:BootstrapProcessConceptDomain> {
170
+ <urn:cf:installation:BootstrapProcessConceptDomain> a cf:ConceptDomain ;
171
+ cf:definesConcept <urn:cf:installation:BootstrapProcess> ;
172
+ cf:definesAttribute <urn:cf:installation:ProcessCommand>, <urn:cf:installation:ProcessProtocol>, <urn:cf:installation:ProcessMethod> ;
173
+ cf:definesRelation <urn:cf:installation:hasProcessCommand>, <urn:cf:installation:hasProcessProtocol>, <urn:cf:installation:hasProcessMethod> ;
174
+ cf:definesShape <urn:cf:installation:BootstrapProcessConceptShape>, <urn:cf:installation:BootstrapProcessInstanceShape> ;
175
+ skos:prefLabel "bootstrap process concept domain" ;
176
+ skos:definition "Vocabulary for the subprocess boundaries used during Cogniflow installation." ;
177
+ skos:scopeNote "Use for bootstrap providers that exchange JSON lines over standard streams." ;
178
+ skos:example "The orchestrator requests a plan from a subprocess." .
179
+
180
+ <urn:cf:installation:BootstrapProcess> a owl:Class, cf:Concept ;
181
+ skos:prefLabel "bootstrap process" ;
182
+ skos:definition "A package-owned console entry point accepting a JSON-RPC 2.0 request and emitting one JSON-line response." ;
183
+ skos:scopeNote "The process is invoked without a shell using its installed console script." ;
184
+ skos:example "The plan provider reads one request on stdin and writes the matching response on stdout." .
185
+
186
+ <urn:cf:installation:ProcessCommand> a owl:Class, cf:Attribute ;
187
+ skos:prefLabel "process command" ;
188
+ skos:definition "Console-script name published by the provider wheel." ;
189
+ skos:scopeNote "Use exactly once in each bootstrap process declaration." ;
190
+ skos:example "A process can declare cf-bootstrap-core-provider." .
191
+
192
+ <urn:cf:installation:hasProcessCommand> a rdf:Property, cf:Relation ;
193
+ rdfs:domain <urn:cf:installation:BootstrapProcess> ; rdfs:range <urn:cf:installation:ProcessCommand> ;
194
+ skos:prefLabel "has process command" ;
195
+ skos:definition "Links a bootstrap process to its process command attribute." ;
196
+ skos:scopeNote "Use once on each bootstrap process declaration." ;
197
+ skos:example "A process can link to an attribute carrying cf-bootstrap-core-provider." .
198
+
199
+ <urn:cf:installation:ProcessProtocol> a owl:Class, cf:Attribute ;
200
+ skos:prefLabel "process protocol" ;
201
+ skos:definition "Versioned protocol identifier carried in the JSON-RPC envelope." ;
202
+ skos:scopeNote "Use exactly once in each bootstrap process declaration." ;
203
+ skos:example "A process can declare cf.bootstrap.provider.v1." .
204
+
205
+ <urn:cf:installation:hasProcessProtocol> a rdf:Property, cf:Relation ;
206
+ rdfs:domain <urn:cf:installation:BootstrapProcess> ; rdfs:range <urn:cf:installation:ProcessProtocol> ;
207
+ skos:prefLabel "has process protocol" ;
208
+ skos:definition "Links a bootstrap process to its process protocol attribute." ;
209
+ skos:scopeNote "Use once on each bootstrap process declaration." ;
210
+ skos:example "A process can link to an attribute carrying cf.bootstrap.provider.v1." .
211
+
212
+ <urn:cf:installation:ProcessMethod> a owl:Class, cf:Attribute ;
213
+ skos:prefLabel "process method" ;
214
+ skos:definition "Method sent to the provider over standard input." ;
215
+ skos:scopeNote "Use exactly once in each bootstrap process declaration." ;
216
+ skos:example "A process can declare bootstrap/plan." .
217
+
218
+ <urn:cf:installation:hasProcessMethod> a rdf:Property, cf:Relation ;
219
+ rdfs:domain <urn:cf:installation:BootstrapProcess> ; rdfs:range <urn:cf:installation:ProcessMethod> ;
220
+ skos:prefLabel "has process method" ;
221
+ skos:definition "Links a bootstrap process to its process method attribute." ;
222
+ skos:scopeNote "Use once on each bootstrap process declaration." ;
223
+ skos:example "A process can link to an attribute carrying bootstrap/plan." .
224
+ }
@@ -0,0 +1,20 @@
1
+ @prefix cfpkg: <https://cogniflow.odea-project.org/cf#> .
2
+ @prefix pkg: <urn:cf:pkg:> .
3
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
5
+
6
+ pkg:cf_concept_installation {
7
+ pkg:cf_concept_installation a cfpkg:CfPackage ;
8
+ cfpkg:hasPackageManifest [ a cfpkg:PackageManifest ;
9
+ cfpkg:hasDistributionName [ a cfpkg:DistributionName ; rdf:value "cf-concept-installation" ] ;
10
+ cfpkg:hasPythonPackageName [ a cfpkg:PythonPackageName ; rdf:value "cf_concept_installation" ] ;
11
+ cfpkg:hasPackageVersion [ a cfpkg:PackageVersion ; rdf:value "0.1.0" ] ;
12
+ cfpkg:hasPackageDescription [ a cfpkg:PackageDescription ; rdf:value "Cogniflow vocabulary and validation shapes for installation profiles and plans." ] ;
13
+ cfpkg:hasPackageAuthor [ a cfpkg:PackageAuthor ; cfpkg:hasPackageAuthorName [ a cfpkg:PackageAuthorName ; rdf:value "Cogniflow Maintainers" ] ] ;
14
+ cfpkg:hasImplementationLanguage [ a cfpkg:ImplementationLanguage ; rdf:value "Python" ] ] ;
15
+ cfpkg:hasPackageRole [ a cfpkg:PackageRole ; rdf:value cfpkg:ConceptPackageRole ] ;
16
+ skos:prefLabel "cf-concept-installation" ;
17
+ skos:definition "Cogniflow vocabulary and validation shapes for installation profiles and plans." ;
18
+ skos:scopeNote "Owns shared installation vocabulary for bootstrap providers." ;
19
+ skos:example "A profile declares capabilities and a plan describes a concrete installation run." .
20
+ }
@@ -0,0 +1,135 @@
1
+ @prefix cf: <https://cogniflow.odea-project.org/cf#> .
2
+ @prefix profile: <urn:cf:profile:> .
3
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
4
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
6
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
7
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
8
+
9
+ profile:InstallationProfileShapes {
10
+ profile:InstallationProfileConceptShape a sh:NodeShape, cf:Shape, cf:ConceptShape ;
11
+ sh:targetNode profile:InstallationProfile ;
12
+ sh:property [ sh:path rdf:type ; sh:hasValue owl:Class ] ;
13
+ sh:property [ sh:path rdf:type ; sh:hasValue cf:Concept ] ;
14
+ sh:property [ sh:path skos:prefLabel ; sh:minCount 1 ] ;
15
+ sh:property [ sh:path skos:definition ; sh:minCount 1 ] ;
16
+ sh:property [ sh:path skos:scopeNote ; sh:minCount 1 ] ;
17
+ sh:property [ sh:path skos:example ; sh:minCount 1 ] ;
18
+ skos:prefLabel "installation profile concept shape" ;
19
+ skos:definition "Validates the vocabulary-level definition of the installation-profile concept." ;
20
+ skos:scopeNote "Use this shape to check that InstallationProfile is the documented concept of this domain." ;
21
+ skos:example "InstallationProfile is typed as both owl:Class and cf:Concept and carries SKOS documentation." .
22
+
23
+ profile:InstallationProfileInstanceShape a sh:NodeShape, cf:Shape, cf:InstanceShape ;
24
+ sh:targetClass profile:InstallationProfile ;
25
+ sh:closed true ;
26
+ sh:ignoredProperties ( rdf:type ) ;
27
+ sh:property [ sh:path skos:prefLabel ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ;
28
+ sh:property [ sh:path skos:definition ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ;
29
+ sh:property [ sh:path profile:hasProfileIdentifier ; sh:class profile:ProfileIdentifier ; sh:minCount 1 ; sh:maxCount 1 ; sh:node [ sh:property [ sh:path rdf:value ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ] ] ;
30
+ sh:property [ sh:path profile:hasProfileVersion ; sh:class profile:ProfileVersion ; sh:minCount 1 ; sh:maxCount 1 ; sh:node [ sh:property [ sh:path rdf:value ; sh:datatype xsd:string ; sh:minCount 1 ; sh:maxCount 1 ] ] ] ;
31
+ sh:property [ sh:path profile:hasCapabilityRequest ; sh:class profile:CapabilityRequest ; sh:minCount 1 ; sh:node [ sh:property [ sh:path rdf:value ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ] ] ] ;
32
+ sh:property [ sh:path profile:hasPostInstallVerificationCapability ; sh:class profile:PostInstallVerificationCapability ; sh:maxCount 1 ; sh:node [ sh:property [ sh:path rdf:value ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ] ] ] ;
33
+ skos:prefLabel "installation profile instance shape" ;
34
+ skos:definition "Validates concrete installation profiles expressed through typed attributes and canonical relations." ;
35
+ skos:scopeNote "Use this shape for locally indexed bootstrap profile documents before provider discovery." ;
36
+ skos:example "A valid minimal profile has one identifier, one version, and capability-request attributes." .
37
+
38
+ profile:ProfileCatalogConceptShape a sh:NodeShape, cf:Shape, cf:ConceptShape ;
39
+ sh:targetNode profile:ProfileCatalog ;
40
+ sh:property [ sh:path rdf:type ; sh:hasValue owl:Class ] ;
41
+ sh:property [ sh:path rdf:type ; sh:hasValue cf:Concept ] ;
42
+ sh:property [ sh:path skos:prefLabel ; sh:minCount 1 ] ;
43
+ sh:property [ sh:path skos:definition ; sh:minCount 1 ] ;
44
+ sh:property [ sh:path skos:scopeNote ; sh:minCount 1 ] ;
45
+ sh:property [ sh:path skos:example ; sh:minCount 1 ] ;
46
+ skos:prefLabel "profile catalog concept shape" ;
47
+ skos:definition "Validates the vocabulary-level definition of a profile catalog." ;
48
+ skos:scopeNote "Use this shape for the catalog concept, separately from concrete catalog instances." ;
49
+ skos:example "ProfileCatalog is a documented owl:Class and cf:Concept." .
50
+
51
+ profile:ProfileCatalogShape a sh:NodeShape, cf:Shape, cf:InstanceShape ;
52
+ sh:targetClass profile:ProfileCatalog ;
53
+ sh:property [ sh:path profile:hasProfileEntry ; sh:class profile:ProfileCatalogEntry ; sh:minCount 1 ] ;
54
+ skos:prefLabel "profile catalog shape" ;
55
+ skos:definition "Validates that a semantic profile catalog contains typed profile entries." ;
56
+ skos:scopeNote "Use this shape when a profile catalog is represented in RDF in addition to the bootstrap JSON index." ;
57
+ skos:example "A valid catalog has at least one ProfileCatalogEntry attribute." .
58
+ }
59
+
60
+ <urn:cf:installation:PlanShapes> {
61
+ <urn:cf:installation:PlanConceptShape> a sh:NodeShape, cf:Shape, cf:ConceptShape ;
62
+ sh:targetNode <urn:cf:installation:InstallationPlan> ;
63
+ sh:property [ sh:path rdf:type ; sh:hasValue owl:Class ] ;
64
+ sh:property [ sh:path rdf:type ; sh:hasValue cf:Concept ] ;
65
+ skos:prefLabel "installation plan concept shape" ;
66
+ skos:definition "Validates the installation plan class as a Cogniflow concept." ;
67
+ skos:scopeNote "Apply this shape to the vocabulary definition." ;
68
+ skos:example "The plan concept is an OWL class and a Cogniflow concept." .
69
+
70
+ <urn:cf:installation:PlanInstanceShape> a sh:NodeShape, cf:Shape, cf:InstanceShape ;
71
+ sh:targetClass <urn:cf:installation:InstallationPlan> ;
72
+ sh:property [
73
+ sh:path <urn:cf:installation:hasPlannedProfile> ;
74
+ sh:class <urn:cf:installation:PlannedProfile> ; sh:minCount 1 ; sh:maxCount 1 ;
75
+ sh:node [ sh:property [
76
+ sh:path rdf:value ; sh:class profile:InstallationProfile ; sh:nodeKind sh:IRI ;
77
+ sh:minCount 1 ; sh:maxCount 1
78
+ ] ]
79
+ ] ;
80
+ sh:property [
81
+ sh:path <urn:cf:installation:hasPlanDigest> ;
82
+ sh:class <urn:cf:installation:PlanDigest> ; sh:minCount 1 ; sh:maxCount 1 ;
83
+ sh:node [ sh:property [
84
+ sh:path rdf:value ; sh:datatype xsd:string ;
85
+ sh:pattern "^[0-9a-f]{64}$" ; sh:minCount 1 ; sh:maxCount 1
86
+ ] ]
87
+ ] ;
88
+ skos:prefLabel "installation plan instance shape" ;
89
+ skos:definition "Requires one installation profile and one canonical plan digest." ;
90
+ skos:scopeNote "Validates a semantic descriptor of the existing bootstrap plan." ;
91
+ skos:example "A plan descriptor identifies its profile and its exact canonical JSON bytes." .
92
+ }
93
+
94
+ <urn:cf:installation:BootstrapProcessShapes> {
95
+ <urn:cf:installation:BootstrapProcessConceptShape> a sh:NodeShape, cf:Shape, cf:ConceptShape ;
96
+ sh:targetNode <urn:cf:installation:BootstrapProcess> ;
97
+ sh:property [ sh:path rdf:type ; sh:hasValue owl:Class ] ;
98
+ sh:property [ sh:path rdf:type ; sh:hasValue cf:Concept ] ;
99
+ skos:prefLabel "bootstrap process concept shape" ;
100
+ skos:definition "Checks the class used to describe bootstrap subprocesses." ;
101
+ skos:scopeNote "Apply to the vocabulary definition." ;
102
+ skos:example "BootstrapProcess is both an OWL class and a Cogniflow concept." .
103
+
104
+ <urn:cf:installation:BootstrapProcessInstanceShape> a sh:NodeShape, cf:Shape, cf:InstanceShape ;
105
+ sh:targetClass <urn:cf:installation:BootstrapProcess> ;
106
+ sh:nodeKind sh:IRI ;
107
+ skos:prefLabel "bootstrap process instance shape" ;
108
+ skos:definition "Requires a console command, protocol and method for each bootstrap subprocess." ;
109
+ skos:scopeNote "Apply to executable process declarations." ;
110
+ skos:example "A planning process declares its script, protocol version and request method." ;
111
+ sh:property [
112
+ sh:path <urn:cf:installation:hasProcessCommand> ; sh:class <urn:cf:installation:ProcessCommand> ;
113
+ sh:minCount 1 ; sh:maxCount 1 ;
114
+ sh:node [ sh:property [
115
+ sh:path rdf:value ; sh:datatype xsd:string ; sh:pattern "^[a-z][a-z0-9-]*$" ;
116
+ sh:minCount 1 ; sh:maxCount 1
117
+ ] ]
118
+ ] ;
119
+ sh:property [
120
+ sh:path <urn:cf:installation:hasProcessProtocol> ; sh:class <urn:cf:installation:ProcessProtocol> ;
121
+ sh:minCount 1 ; sh:maxCount 1 ;
122
+ sh:node [ sh:property [
123
+ sh:path rdf:value ; sh:datatype xsd:string ; sh:pattern "^cf[.]bootstrap[.][a-z][a-z-]*[.]v[1-9][0-9]*$" ;
124
+ sh:minCount 1 ; sh:maxCount 1
125
+ ] ]
126
+ ] ;
127
+ sh:property [
128
+ sh:path <urn:cf:installation:hasProcessMethod> ; sh:class <urn:cf:installation:ProcessMethod> ;
129
+ sh:minCount 1 ; sh:maxCount 1 ;
130
+ sh:node [ sh:property [
131
+ sh:path rdf:value ; sh:datatype xsd:string ; sh:pattern "^[a-z][a-z-]*/[a-z][a-z-]*$" ;
132
+ sh:minCount 1 ; sh:maxCount 1
133
+ ] ]
134
+ ] .
135
+ }
@@ -0,0 +1,32 @@
1
+ Metadata-Version: 2.5
2
+ Name: cf-concept-installation
3
+ Version: 0.1.0
4
+ Summary: Cogniflow installation vocabulary and validation shapes.
5
+ Author: Cogniflow Maintainers
6
+ Requires-Python: >=3.11
7
+ Description-Content-Type: text/markdown
8
+
9
+ # cf-concept-installation
10
+
11
+ This package owns the vocabulary and SHACL shapes shared by installation
12
+ providers. It exposes three files through `cogniflow.semantic_sources`:
13
+
14
+ - `package.trig` describes the concept package.
15
+ - `concept.trig` groups the installation profile, profile catalog and plan
16
+ vocabulary by concept domain.
17
+ - `shapes.trig` defines the corresponding validation rules.
18
+
19
+ The installation-profile and catalog IRIs are carried over from
20
+ `cf-concept-installation-profile`. Load the new vocabulary in place of the old
21
+ provider. Existing profile documents and their digests retain their meaning.
22
+
23
+ A profile requests capabilities. A concrete `cf.bootstrap.plan.v2` describes
24
+ the lifecycle and source mode before artifact selection. A semantic plan
25
+ descriptor can identify its profile and bind the existing plan bytes by digest.
26
+ Artifact selection and installation authority remain governed by the existing
27
+ bootstrap contracts.
28
+
29
+ Bootstrap process declarations identify the console script, versioned JSON-RPC
30
+ protocol and request method. The provider's manifest links the declaration with
31
+ `hub:providesProcess`. The subprocess contract is distinct from the callable
32
+ Python service affordance used after bootstrap handoff.
@@ -0,0 +1,8 @@
1
+ cf_concept_installation/__init__.py,sha256=z3Xh36w9UnI8GZ2PYNFt8GogWXxwmtbyMNikVO5Ycuc,220
2
+ cf_concept_installation/semantics/concept.trig,sha256=tApzUJZGKsh0okduWY_2jGsi_HzIjnvXlhWgVeIMHh4,15057
3
+ cf_concept_installation/semantics/package.trig,sha256=CCTX_tLpW1Gvs038QTIcx5HwhX2eDboRTP6IAa-2Ze8,1483
4
+ cf_concept_installation/semantics/shapes.trig,sha256=qJ5Tr7MUjLXE9sQkfSKGHr4RMXAR_N1Z-xc19CHkN9M,8440
5
+ cf_concept_installation-0.1.0.dist-info/METADATA,sha256=ptXzboi-WWzh3wB3cstQ8bRLX-SmQvZ4zdkkh-MfPoM,1460
6
+ cf_concept_installation-0.1.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
7
+ cf_concept_installation-0.1.0.dist-info/entry_points.txt,sha256=DPmhQbtQtmIq2ZuYea3dvZvS2Lb72eLManAEvn9atFw,94
8
+ cf_concept_installation-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.33.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [cogniflow.semantic_sources]
2
+ cf-concept-installation = cf_concept_installation:semantic_files