diff --git a/information-model/README.md b/information-model/README.md new file mode 100644 index 0000000..281bbc3 --- /dev/null +++ b/information-model/README.md @@ -0,0 +1,87 @@ +# EoX Information Model + +An information model (IM) is a formal definition of structured data at a higher level of abstraction +than a concrete schema. It is intended to be easy to work with and understand, and to serve as the +*single source of truth* for documentation in multiple formats, concrete schemas in multiple formats, +message generation and validation in multiple data formats, and code generation for multiple +programming languages. + +This is an information model for two proposed EoX schema files (core.json, shell.json) written in +the JSON Abstract Data Notation (JADN) language. It can be written as either JSON data +or as a textual Information Definition Language, and can be converted back and forth between those formats. +It can also be used to generate property tables in HTML or Markdown format and to ERDs in GraphVis or PlantUML format +for use in specification documents: + +**Fig. 1**: shell.jidl +``` +Shell = Record + 1 schema Schema_shell + 2 statements Statement [1..*] // Contains a list of statement elements. + +Schema_shell = Enumerated // Specifies the schema the JSON object must be valid against. + 1 https://docs.oasis-open.org/openeox/tbd/schema/shell.json + +Statement = Record // Statements contain the single OpenEoX entries. + 1 core c:Core + 2 productName ProductName_t + 3 productVersion ProductVersion_t + 4 supplierName SupplierName_t +``` + +**Fig. 2**: shell.jadn +```json + ["Shell", "Record", [], "", [ + [1, "schema", "Schema_shell", [], ""], + [2, "statements", "Statement", ["]0"], "Contains a list of statement elements."] + ]], + + ["Schema_shell", "Enumerated", [], "Specifies the schema the JSON object must be valid against.", [ + [1, "https://docs.oasis-open.org/openeox/tbd/schema/shell.json", ""] + ]], + + ["Statement", "Record", [], "Statements contain the single OpenEoX entries.", [ + [1, "core", "c:Core", [], ""], + [2, "productName", "ProductName_t", [], ""], + [3, "productVersion", "ProductVersion_t", [], ""], + [4, "supplierName", "SupplierName_t", [], ""] + ]], +``` + +**Fig. 3**: shell.md + +********** +**Type: Shell (Record)** + +| ID | Name | Type | \# | Description | +|----|----------------|--------------|-------|----------------------------------------| +| 1 | **schema** | Schema_shell | 1 | | +| 2 | **statements** | Statement | 1..\* | Contains a list of statement elements. | + +********** + +Specifies the schema the JSON object must be valid against. + +**Type: Schema_shell (Enumerated)** + +| ID | Item | Description | +|----|---------------------------------------------------------------|-------------| +| 1 | **https://docs.oasis-open.org/openeox/tbd/schema/shell.json** | | + +********** + +Statements contain the single OpenEoX entries. + +**Type: Statement (Record)** + +| ID | Name | Type | \# | Description | +|----|--------------------|------------------|----|-------------| +| 1 | **core** | c:Core | 1 | | +| 2 | **productName** | ProductName_t | 1 | | +| 3 | **productVersion** | ProductVersion_t | 1 | | +| 4 | **supplierName** | SupplierName_t | 1 | | + +********** + +**Fig. 4**: EoX entity relationship diagram + +![EoX entity relationship diagram](generated/eox.graphviz.png) \ No newline at end of file diff --git a/information-model/core.jadn b/information-model/core.jadn new file mode 100644 index 0000000..f09a1d8 --- /dev/null +++ b/information-model/core.jadn @@ -0,0 +1,44 @@ +{ + "info": { + "package": "https://docs.oasis-open.org/openeox/tbd/schema/core", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "exports": ["Core"], + "config": { + "$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$" + } + }, + + "types": [ + ["Core", "Record", [], "", [ + [1, "schema", "Schema_core", [], ""], + [2, "last_updated", "Timestamp", [], "Timestamp of last change"], + [3, "status", "Status", ["]0"], "Contains a list of status elements."] + ]], + + ["Schema_core", "Enumerated", [], "Specifies the schema the JSON object must be valid against.", [ + [1, "https://docs.oasis-open.org/openeox/tbd/schema/core", ""] + ]], + + ["Timestamp", "String", [], "Contains the RFC 3339 timestamp", []], + + ["Status", "Record", [], "Contains a single entry in the product lifecycle.", [ + [1, "category", "Category", [], "Contains the category of the status"], + [2, "timestamp", "StatusTimestamp", [], "Contains the timestamp at which the product enters the category."] + ]], + + ["Category", "Enumerated", [], "", [ + [1, "EndOfLife", ""], + [2, "EndOfSupport", ""] + ]], + + ["StatusTimestamp", "Choice", [], "", [ + [1, "timestamp", "Timestamp", [], ""], + [2, "timeValues", "TimeValues", [], ""] + ]], + + ["TimeValues", "Enumerated", [], "", [ + [1, "tba", ""] + ]] + ] +} diff --git a/information-model/generated/core.jidl b/information-model/generated/core.jidl new file mode 100644 index 0000000..8f858ef --- /dev/null +++ b/information-model/generated/core.jidl @@ -0,0 +1,30 @@ + title: "EOL and EOS Information" + package: "https://docs.oasis-open.org/openeox/tbd/schema/core" + description: "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX." + exports: ["Core"] + config: {"$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$"} + +Core = Record + 1 schema Schema_core + 2 last_updated Timestamp // Timestamp of last change + 3 status Status [1..*] // Contains a list of status elements. + +Schema_core = Enumerated // Specifies the schema the JSON object must be valid against. + 1 https://docs.oasis-open.org/openeox/tbd/schema/core + +Timestamp = String // Contains the RFC 3339 timestamp + +Status = Record // Contains a single entry in the product lifecycle. + 1 category Category // Contains the category of the status + 2 timestamp StatusTimestamp // Contains the timestamp at which the product enters the category. + +Category = Enumerated + 1 EndOfLife + 2 EndOfSupport + +StatusTimestamp = Choice + 1 timestamp Timestamp + 2 timeValues TimeValues + +TimeValues = Enumerated + 1 tba diff --git a/information-model/generated/core.json b/information-model/generated/core.json new file mode 100644 index 0000000..d472013 --- /dev/null +++ b/information-model/generated/core.json @@ -0,0 +1,106 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://docs.oasis-open.org/openeox/tbd/schema/core", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "$ref": "#/definitions/Core", + "definitions": { + "Core": { + "title": "Core", + "type": "object", + "additionalProperties": false, + "required": [ + "schema", + "last_updated", + "status" + ], + "maxProperties": 100, + "properties": { + "schema": { + "$ref": "#/definitions/Schema_core", + "description": "" + }, + "last_updated": { + "$ref": "#/definitions/Timestamp", + "description": "Timestamp of last change" + }, + "status": { + "type": "array", + "description": "Contains a list of status elements.", + "minItems": 1, + "items": { + "$ref": "#/definitions/Status", + "description": "Contains a list of status elements." + } + } + } + }, + "Schema_core": { + "title": "Schema core", + "type": "string", + "description": "Specifies the schema the JSON object must be valid against.", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/core" + ] + }, + "Timestamp": { + "title": "Timestamp", + "type": "string", + "description": "Contains the RFC 3339 timestamp", + "maxLength": 255 + }, + "Status": { + "title": "Status", + "type": "object", + "description": "Contains a single entry in the product lifecycle.", + "additionalProperties": false, + "required": [ + "category", + "timestamp" + ], + "maxProperties": 100, + "properties": { + "category": { + "$ref": "#/definitions/Category", + "description": "Contains the category of the status" + }, + "timestamp": { + "$ref": "#/definitions/StatusTimestamp", + "description": "Contains the timestamp at which the product enters the category." + } + } + }, + "Category": { + "title": "Category", + "type": "string", + "enum": [ + "EndOfLife", + "EndOfSupport" + ] + }, + "StatusTimestamp": { + "title": "StatusTimestamp", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "properties": { + "timestamp": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "timeValues": { + "$ref": "#/definitions/TimeValues", + "description": "" + } + } + }, + "TimeValues": { + "title": "TimeValues", + "type": "string", + "enum": [ + "tba" + ] + } + } +} \ No newline at end of file diff --git a/information-model/generated/core.md b/information-model/generated/core.md new file mode 100644 index 0000000..8cef666 --- /dev/null +++ b/information-model/generated/core.md @@ -0,0 +1,68 @@ + title: "EOL and EOS Information" + package: "https://docs.oasis-open.org/openeox/tbd/schema/core" + description: "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX." + exports: ["Core"] + config: {"$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$"} + +**Type: Core (Record)** + +| ID | Name | Type | \# | Description | +|----|------------------|-------------|-------|-------------------------------------| +| 1 | **schema** | Schema_core | 1 | | +| 2 | **last_updated** | Timestamp | 1 | Timestamp of last change | +| 3 | **status** | Status | 1..\* | Contains a list of status elements. | + +********** + +Specifies the schema the JSON object must be valid against. + +**Type: Schema_core (Enumerated)** + +| ID | Item | Description | +|----|---------------------------------------------------------|-------------| +| 1 | **https://docs.oasis-open.org/openeox/tbd/schema/core** | | + +********** + +| Type Name | Type Definition | Description | +|---------------|-----------------|---------------------------------| +| **Timestamp** | String | Contains the RFC 3339 timestamp | + +********** + +Contains a single entry in the product lifecycle. + +**Type: Status (Record)** + +| ID | Name | Type | \# | Description | +|----|---------------|-----------------|----|------------------------------------------------------------------| +| 1 | **category** | Category | 1 | Contains the category of the status | +| 2 | **timestamp** | StatusTimestamp | 1 | Contains the timestamp at which the product enters the category. | + +********** + +**Type: Category (Enumerated)** + +| ID | Item | Description | +|----|------------------|-------------| +| 1 | **EndOfLife** | | +| 2 | **EndOfSupport** | | + +********** + +**Type: StatusTimestamp (Choice)** + +| ID | Name | Type | \# | Description | +|----|----------------|------------|----|-------------| +| 1 | **timestamp** | Timestamp | 1 | | +| 2 | **timeValues** | TimeValues | 1 | | + +********** + +**Type: TimeValues (Enumerated)** + +| ID | Item | Description | +|----|---------|-------------| +| 1 | **tba** | | + +********** diff --git a/information-model/generated/eox.graphviz.png b/information-model/generated/eox.graphviz.png new file mode 100644 index 0000000..76fef43 Binary files /dev/null and b/information-model/generated/eox.graphviz.png differ diff --git a/information-model/generated/shell-resolved.jidl b/information-model/generated/shell-resolved.jidl new file mode 100644 index 0000000..c9425dc --- /dev/null +++ b/information-model/generated/shell-resolved.jidl @@ -0,0 +1,49 @@ + title: "EOL and EOS Information" + package: "https://docs.oasis-open.org/openeox/tbd/schema/shell" + description: "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX." + exports: ["Shell"] + config: {"$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$"} + +Shell = Record + 1 schema Schema_shell + 2 statements Statement [1..*] // Contains a list of statement elements. + +Statement = Record // Statements contain the single OpenEoX entries. + 1 core Core + 2 productName ProductName_t + 3 productVersion ProductVersion_t + 4 supplierName SupplierName_t + +Core = Record + 1 schema Schema_core + 2 last_updated Timestamp // Timestamp of last change + 3 status Status [1..*] // Contains a list of status elements. + +Status = Record // Contains a single entry in the product lifecycle. + 1 category Category // Contains the category of the status + 2 timestamp StatusTimestamp // Contains the timestamp at which the product enters the category. + +StatusTimestamp = Choice + 1 timestamp Timestamp + 2 timeValues TimeValues + +Schema_core = Enumerated // Specifies the schema the JSON object must be valid against. + 1 https://docs.oasis-open.org/openeox/tbd/schema/core + +Schema_shell = Enumerated // Specifies the schema the JSON object must be valid against. + 1 https://docs.oasis-open.org/openeox/tbd/schema/shell.json + +Category = Enumerated + 1 EndOfLife + 2 EndOfSupport + +TimeValues = Enumerated + 1 tba + +Timestamp = String // Contains the RFC 3339 timestamp + +ProductName_t = String // Contains the name of the product. + +ProductVersion_t = String // Contains the version or release of the product. + +SupplierName_t = String // Contains the name of the supplier or service provider. diff --git a/information-model/generated/shell-resolved.json b/information-model/generated/shell-resolved.json new file mode 100644 index 0000000..7327378 --- /dev/null +++ b/information-model/generated/shell-resolved.json @@ -0,0 +1,188 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://docs.oasis-open.org/openeox/tbd/schema/shell", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "$ref": "#/definitions/Shell", + "definitions": { + "Shell": { + "title": "Shell", + "type": "object", + "additionalProperties": false, + "required": [ + "schema", + "statements" + ], + "maxProperties": 100, + "properties": { + "schema": { + "$ref": "#/definitions/Schema_shell", + "description": "" + }, + "statements": { + "type": "array", + "description": "Contains a list of statement elements.", + "minItems": 1, + "items": { + "$ref": "#/definitions/Statement", + "description": "Contains a list of statement elements." + } + } + } + }, + "Statement": { + "title": "Statement", + "type": "object", + "description": "Statements contain the single OpenEoX entries.", + "additionalProperties": false, + "required": [ + "core", + "productName", + "productVersion", + "supplierName" + ], + "maxProperties": 100, + "properties": { + "core": { + "$ref": "#/definitions/Core", + "description": "" + }, + "productName": { + "$ref": "#/definitions/ProductName_t", + "description": "" + }, + "productVersion": { + "$ref": "#/definitions/ProductVersion_t", + "description": "" + }, + "supplierName": { + "$ref": "#/definitions/SupplierName_t", + "description": "" + } + } + }, + "Core": { + "title": "Core", + "type": "object", + "additionalProperties": false, + "required": [ + "schema", + "last_updated", + "status" + ], + "maxProperties": 100, + "properties": { + "schema": { + "$ref": "#/definitions/Schema_core", + "description": "" + }, + "last_updated": { + "$ref": "#/definitions/Timestamp", + "description": "Timestamp of last change" + }, + "status": { + "type": "array", + "description": "Contains a list of status elements.", + "minItems": 1, + "items": { + "$ref": "#/definitions/Status", + "description": "Contains a list of status elements." + } + } + } + }, + "Status": { + "title": "Status", + "type": "object", + "description": "Contains a single entry in the product lifecycle.", + "additionalProperties": false, + "required": [ + "category", + "timestamp" + ], + "maxProperties": 100, + "properties": { + "category": { + "$ref": "#/definitions/Category", + "description": "Contains the category of the status" + }, + "timestamp": { + "$ref": "#/definitions/StatusTimestamp", + "description": "Contains the timestamp at which the product enters the category." + } + } + }, + "StatusTimestamp": { + "title": "StatusTimestamp", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "properties": { + "timestamp": { + "$ref": "#/definitions/Timestamp", + "description": "" + }, + "timeValues": { + "$ref": "#/definitions/TimeValues", + "description": "" + } + } + }, + "Schema_core": { + "title": "Schema core", + "type": "string", + "description": "Specifies the schema the JSON object must be valid against.", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/core" + ] + }, + "Schema_shell": { + "title": "Schema shell", + "type": "string", + "description": "Specifies the schema the JSON object must be valid against.", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/shell.json" + ] + }, + "Category": { + "title": "Category", + "type": "string", + "enum": [ + "EndOfLife", + "EndOfSupport" + ] + }, + "TimeValues": { + "title": "TimeValues", + "type": "string", + "enum": [ + "tba" + ] + }, + "Timestamp": { + "title": "Timestamp", + "type": "string", + "description": "Contains the RFC 3339 timestamp", + "maxLength": 255 + }, + "ProductName_t": { + "title": "ProductName t", + "type": "string", + "description": "Contains the name of the product.", + "maxLength": 255 + }, + "ProductVersion_t": { + "title": "ProductVersion t", + "type": "string", + "description": "Contains the version or release of the product.", + "maxLength": 255 + }, + "SupplierName_t": { + "title": "SupplierName t", + "type": "string", + "description": "Contains the name of the supplier or service provider.", + "maxLength": 255 + } + } +} \ No newline at end of file diff --git a/information-model/generated/shell-resolved_i.puml b/information-model/generated/shell-resolved_i.puml new file mode 100644 index 0000000..37c0403 --- /dev/null +++ b/information-model/generated/shell-resolved_i.puml @@ -0,0 +1,39 @@ +' package: https://docs.oasis-open.org/openeox/tbd/schema/shell +' title: EOL and EOS Information +' description: A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX. +' exports: ['Shell'] +' config: {'$TypeName': '^[$A-Z][-_$A-Za-z0-9]{0,63}$'} + +@startuml + ' !theme spacelab + hide empty members + hide circle + +class "Shell : Record" as n0 + n0 : 1 schema : {field} Schema_shell + n0 : 2 statements : {field} Statement [1..*] + +class "Statement : Record" as n1 + n1 : 1 core : {field} Core + n1 : 2 productName : {field} ProductName_t + n1 : 3 productVersion : {field} ProductVersion_t + n1 : 4 supplierName : {field} SupplierName_t + +class "Core : Record" as n2 + n2 : 1 schema : {field} Schema_core + n2 : 2 last_updated : {field} Timestamp + n2 : 3 status : {field} Status [1..*] + +class "Status : Record" as n3 + n3 : 1 category : {field} Category + n3 : 2 timestamp : {field} StatusTimestamp + +class "StatusTimestamp : Choice" as n4 + n4 : 1 timestamp : {field} Timestamp + n4 : 2 timeValues : {field} TimeValues + + n0 "1" --> "1..*" n1 : statements + n1 "1" --> "1" n2 : core + n2 "1" --> "1..*" n3 : status + n3 "1" --> "1" n4 : timestamp +@enduml diff --git a/information-model/generated/shell-resolved_ia.dot b/information-model/generated/shell-resolved_ia.dot new file mode 100644 index 0000000..d42eba4 --- /dev/null +++ b/information-model/generated/shell-resolved_ia.dot @@ -0,0 +1,88 @@ +# package: https://docs.oasis-open.org/openeox/tbd/schema/shell +# title: EOL and EOS Information +# description: A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX. +# exports: ['Shell'] +# config: {'$TypeName': '^[$A-Z][-_$A-Za-z0-9]{0,63}$'} + +digraph G { + graph [fontname=Arial, fontsize=12]; + node [fontname=Arial, fontsize=8, shape=plain, style=filled, fillcolor=lightskyblue1]; + edge [fontname=Arial, fontsize=7, arrowsize=0.5, labelangle=45.0, labeldistance=0.9]; + bgcolor="transparent"; + +n0 [label=< +
+ + +
Shell : Record
1 schema : Schema_shell
2 statements : Statement [1..*]
>] + +n1 [label=< +
+ + + + +
Statement : Record
1 core : Core
2 productName : ProductName_t
3 productVersion : ProductVersion_t
4 supplierName : SupplierName_t
>] + +n2 [label=< +
+ + + +
Core : Record
1 schema : Schema_core
2 last_updated : Timestamp
3 status : Status [1..*]
>] + +n3 [label=< +
+ + +
Status : Record
1 category : Category
2 timestamp : StatusTimestamp
>] + +n4 [label=< +
+ + +
StatusTimestamp : Choice
1 timestamp : Timestamp
2 timeValues : TimeValues
>] + +n5 [fillcolor=palegreen, label=< +
+ +
Schema_core : Enumerated
1 https://docs.oasis-open.org/openeox/tbd/schema/core
>] + +n6 [fillcolor=palegreen, label=< +
+ +
Schema_shell : Enumerated
1 https://docs.oasis-open.org/openeox/tbd/schema/shell.json
>] + +n7 [fillcolor=palegreen, label=< +
+ + +
Category : Enumerated
1 EndOfLife
2 EndOfSupport
>] + +n8 [fillcolor=palegreen, label=< +
+ +
TimeValues : Enumerated
1 tba
>] + +n9 [label=<Timestamp : String>, shape=ellipse, style=filled, fillcolor=palegreen] + +n10 [label=<ProductName_t : String>, shape=ellipse, style=filled, fillcolor=palegreen] + +n11 [label=<ProductVersion_t : String>, shape=ellipse, style=filled, fillcolor=palegreen] + +n12 [label=<SupplierName_t : String>, shape=ellipse, style=filled, fillcolor=palegreen] + + n0 -> n6 [label=schema, headlabel="1", taillabel="1"] + n0 -> n1 [label=statements, headlabel="1..*", taillabel="1"] + n1 -> n2 [label=core, headlabel="1", taillabel="1"] + n1 -> n10 [label=productName, headlabel="1", taillabel="1"] + n1 -> n11 [label=productVersion, headlabel="1", taillabel="1"] + n1 -> n12 [label=supplierName, headlabel="1", taillabel="1"] + n2 -> n5 [label=schema, headlabel="1", taillabel="1"] + n2 -> n9 [label=last_updated, headlabel="1", taillabel="1"] + n2 -> n3 [label=status, headlabel="1..*", taillabel="1"] + n3 -> n7 [label=category, headlabel="1", taillabel="1"] + n3 -> n4 [label=timestamp, headlabel="1", taillabel="1"] + n4 -> n9 [label=timestamp, headlabel="1", taillabel="1"] + n4 -> n8 [label=timeValues, headlabel="1", taillabel="1"] +} diff --git a/information-model/generated/shell.jidl b/information-model/generated/shell.jidl new file mode 100644 index 0000000..9ec705c --- /dev/null +++ b/information-model/generated/shell.jidl @@ -0,0 +1,25 @@ + title: "EOL and EOS Information" + package: "https://docs.oasis-open.org/openeox/tbd/schema/shell" + description: "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX." + namespaces: {"c": "https://docs.oasis-open.org/openeox/tbd/schema/core"} + exports: ["Shell"] + config: {"$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$"} + +Shell = Record + 1 schema Schema_shell + 2 statements Statement [1..*] // Contains a list of statement elements. + +Schema_shell = Enumerated // Specifies the schema the JSON object must be valid against. + 1 https://docs.oasis-open.org/openeox/tbd/schema/shell.json + +Statement = Record // Statements contain the single OpenEoX entries. + 1 core c:Core + 2 productName ProductName_t + 3 productVersion ProductVersion_t + 4 supplierName SupplierName_t + +ProductName_t = String // Contains the name of the product. + +ProductVersion_t = String // Contains the version or release of the product. + +SupplierName_t = String // Contains the name of the supplier or service provider. diff --git a/information-model/generated/shell.json b/information-model/generated/shell.json new file mode 100644 index 0000000..ea513dd --- /dev/null +++ b/information-model/generated/shell.json @@ -0,0 +1,96 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://docs.oasis-open.org/openeox/tbd/schema/shell", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "$ref": "#/definitions/Shell", + "definitions": { + "Shell": { + "title": "Shell", + "type": "object", + "additionalProperties": false, + "required": [ + "schema", + "statements" + ], + "maxProperties": 100, + "properties": { + "schema": { + "$ref": "#/definitions/Schema_shell", + "description": "" + }, + "statements": { + "type": "array", + "description": "Contains a list of statement elements.", + "minItems": 1, + "items": { + "$ref": "#/definitions/Statement", + "description": "Contains a list of statement elements." + } + } + } + }, + "Schema_shell": { + "title": "Schema shell", + "type": "string", + "description": "Specifies the schema the JSON object must be valid against.", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/shell.json" + ] + }, + "Statement": { + "title": "Statement", + "type": "object", + "description": "Statements contain the single OpenEoX entries.", + "additionalProperties": false, + "required": [ + "core", + "productName", + "productVersion", + "supplierName" + ], + "maxProperties": 100, + "properties": { + "core": { + "$ref": "#/imports/c/Core", + "description": "" + }, + "productName": { + "$ref": "#/definitions/ProductName_t", + "description": "" + }, + "productVersion": { + "$ref": "#/definitions/ProductVersion_t", + "description": "" + }, + "supplierName": { + "$ref": "#/definitions/SupplierName_t", + "description": "" + } + } + }, + "ProductName_t": { + "title": "ProductName t", + "type": "string", + "description": "Contains the name of the product.", + "maxLength": 255 + }, + "ProductVersion_t": { + "title": "ProductVersion t", + "type": "string", + "description": "Contains the version or release of the product.", + "maxLength": 255 + }, + "SupplierName_t": { + "title": "SupplierName t", + "type": "string", + "description": "Contains the name of the supplier or service provider.", + "maxLength": 255 + } + }, + "imports": { + "c": { + "Core": {} + } + } +} \ No newline at end of file diff --git a/information-model/generated/shell.md b/information-model/generated/shell.md new file mode 100644 index 0000000..a719f4e --- /dev/null +++ b/information-model/generated/shell.md @@ -0,0 +1,56 @@ + title: "EOL and EOS Information" + package: "https://docs.oasis-open.org/openeox/tbd/schema/shell" + description: "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX." + namespaces: {"c": "https://docs.oasis-open.org/openeox/tbd/schema/core"} + exports: ["Shell"] + config: {"$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$"} + +**Type: Shell (Record)** + +| ID | Name | Type | \# | Description | +|----|----------------|--------------|-------|----------------------------------------| +| 1 | **schema** | Schema_shell | 1 | | +| 2 | **statements** | Statement | 1..\* | Contains a list of statement elements. | + +********** + +Specifies the schema the JSON object must be valid against. + +**Type: Schema_shell (Enumerated)** + +| ID | Item | Description | +|----|---------------------------------------------------------------|-------------| +| 1 | **https://docs.oasis-open.org/openeox/tbd/schema/shell.json** | | + +********** + +Statements contain the single OpenEoX entries. + +**Type: Statement (Record)** + +| ID | Name | Type | \# | Description | +|----|--------------------|------------------|----|-------------| +| 1 | **core** | c:Core | 1 | | +| 2 | **productName** | ProductName_t | 1 | | +| 3 | **productVersion** | ProductVersion_t | 1 | | +| 4 | **supplierName** | SupplierName_t | 1 | | + +********** + +| Type Name | Type Definition | Description | +|-------------------|-----------------|-----------------------------------| +| **ProductName_t** | String | Contains the name of the product. | + +********** + +| Type Name | Type Definition | Description | +|----------------------|-----------------|-------------------------------------------------| +| **ProductVersion_t** | String | Contains the version or release of the product. | + +********** + +| Type Name | Type Definition | Description | +|--------------------|-----------------|--------------------------------------------------------| +| **SupplierName_t** | String | Contains the name of the supplier or service provider. | + +********** diff --git a/information-model/original-json-schema/core.json b/information-model/original-json-schema/core.json new file mode 100644 index 0000000..a5859e6 --- /dev/null +++ b/information-model/original-json-schema/core.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.oasis-open.org/openeox/tbd/schema/core.json", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "type": "object", + "$defs": { + "schema_t": { + "title": "OpenEoX Core schema", + "description": "Specifies the schema the JSON object must be valid against.", + "type": "string", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/core.json" + ] + } + }, + "required": ["$schema", "last_updated", "status"], + "properties": { + "$schema": { + "$ref": "#/$defs/schema_t" + }, + "last_updated": { + "title": "Timestamp of last change", + "description": "Contains the RFC 3339 timestamp when the record was last updated.", + "type": "string", + "format": "date-time" + }, + "status": { + "title": "List of status", + "description": "Contains a list of status elements.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "title": "Status", + "description": "Contains a single entry in the product lifecycle.", + "type": "object", + "required": ["category", "timestamp"], + "properties": { + "category": { + "title": "Status category", + "description": "Contains the category of the status", + "type": "string", + "enum": ["EndOfLife", "EndOfSupport"] + }, + "timestamp": { + "title": "Timestamp", + "description": "Contains the timestamp at which the product enters the category.", + "type": "string", + "oneOf": [ + { + "format": "date-time" + }, + { + "enum": ["tba"] + } + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/information-model/original-json-schema/shell.json b/information-model/original-json-schema/shell.json new file mode 100644 index 0000000..7b21b89 --- /dev/null +++ b/information-model/original-json-schema/shell.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.oasis-open.org/openeox/tbd/schema/shell.json", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "type": "object", + "$defs": { + "productName_t": { + "title": "Product name", + "description": "Contains the name of the product.", + "type": "string", + "minLength": 1 + }, + "productVersion_t": { + "title": "Product version", + "description": "Contains the version or release of the product.", + "type": "string", + "minLength": 1 + }, + "supplierName_t": { + "title": "Supplier name", + "description": "Contains the name of the supplier or service provider.", + "type": "string", + "minLength": 1 + }, + "schema_t": { + "title": "OpenEoX Shell schema", + "description": "Specifies the schema the JSON object must be valid against.", + "type": "string", + "enum": [ + "https://docs.oasis-open.org/openeox/tbd/schema/shell.json" + ] + } + }, + "required": [ + "$schema", + "statements" + ], + "properties": { + "$schema": { + "$ref": "#/$defs/schema_t" + }, + "statements": { + "title": "List of statements", + "description": "Contains a list of statement elements.", + "type": "array", + "minItems": 1, + "items": { + "title": "Statement", + "description": "Statements contain the single OpenEoX entries.", + "type": "object", + "required": ["core", "productName", "productVersion", "supplierName"], + "properties": { + "core": { + "$ref": "https://docs.oasis-open.org/openeox/tbd/schema/core.json" + }, + "productName": { + "$ref": "#/$defs/productName_t" + }, + "productVersion": { + "$ref": "#/$defs/productVersion_t" + }, + "supplierName": { + "$ref": "#/$defs/supplierName_t" + } + } + } + } + } +} \ No newline at end of file diff --git a/information-model/shell-resolved.jadn b/information-model/shell-resolved.jadn new file mode 100644 index 0000000..0e6e94e --- /dev/null +++ b/information-model/shell-resolved.jadn @@ -0,0 +1,66 @@ +{ + "info": { + "package": "https://docs.oasis-open.org/openeox/tbd/schema/shell", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "exports": ["Shell"], + "config": { + "$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$" + } + }, + + "types": [ + ["Shell", "Record", [], "", [ + [1, "schema", "Schema_shell", [], ""], + [2, "statements", "Statement", ["]0"], "Contains a list of statement elements."] + ]], + + ["Statement", "Record", [], "Statements contain the single OpenEoX entries.", [ + [1, "core", "Core", [], ""], + [2, "productName", "ProductName_t", [], ""], + [3, "productVersion", "ProductVersion_t", [], ""], + [4, "supplierName", "SupplierName_t", [], ""] + ]], + + ["Core", "Record", [], "", [ + [1, "schema", "Schema_core", [], ""], + [2, "last_updated", "Timestamp", [], "Timestamp of last change"], + [3, "status", "Status", ["]0"], "Contains a list of status elements."] + ]], + + ["Status", "Record", [], "Contains a single entry in the product lifecycle.", [ + [1, "category", "Category", [], "Contains the category of the status"], + [2, "timestamp", "StatusTimestamp", [], "Contains the timestamp at which the product enters the category."] + ]], + + ["StatusTimestamp", "Choice", [], "", [ + [1, "timestamp", "Timestamp", [], ""], + [2, "timeValues", "TimeValues", [], ""] + ]], + + ["Schema_core", "Enumerated", [], "Specifies the schema the JSON object must be valid against.", [ + [1, "https://docs.oasis-open.org/openeox/tbd/schema/core", ""] + ]], + + ["Schema_shell", "Enumerated", [], "Specifies the schema the JSON object must be valid against.", [ + [1, "https://docs.oasis-open.org/openeox/tbd/schema/shell.json", ""] + ]], + + ["Category", "Enumerated", [], "", [ + [1, "EndOfLife", ""], + [2, "EndOfSupport", ""] + ]], + + ["TimeValues", "Enumerated", [], "", [ + [1, "tba", ""] + ]], + + ["Timestamp", "String", [], "Contains the RFC 3339 timestamp", []], + + ["ProductName_t", "String", [], "Contains the name of the product.", []], + + ["ProductVersion_t", "String", [], "Contains the version or release of the product.", []], + + ["SupplierName_t", "String", [], "Contains the name of the supplier or service provider.", []] + ] +} diff --git a/information-model/shell.jadn b/information-model/shell.jadn new file mode 100644 index 0000000..db5c0a2 --- /dev/null +++ b/information-model/shell.jadn @@ -0,0 +1,38 @@ +{ + "info": { + "package": "https://docs.oasis-open.org/openeox/tbd/schema/shell", + "title": "EOL and EOS Information", + "description": "A draft schema for representing End-of-Life (EOL) and End-of-Support (EOS) information in OpenEoX.", + "namespaces": { + "c": "https://docs.oasis-open.org/openeox/tbd/schema/core" + }, + "exports": ["Shell"], + "config": { + "$TypeName": "^[$A-Z][-_$A-Za-z0-9]{0,63}$" + } + }, + + "types": [ + ["Shell", "Record", [], "", [ + [1, "schema", "Schema_shell", [], ""], + [2, "statements", "Statement", ["]0"], "Contains a list of statement elements."] + ]], + + ["Schema_shell", "Enumerated", [], "Specifies the schema the JSON object must be valid against.", [ + [1, "https://docs.oasis-open.org/openeox/tbd/schema/shell.json", ""] + ]], + + ["Statement", "Record", [], "Statements contain the single OpenEoX entries.", [ + [1, "core", "c:Core", [], ""], + [2, "productName", "ProductName_t", [], ""], + [3, "productVersion", "ProductVersion_t", [], ""], + [4, "supplierName", "SupplierName_t", [], ""] + ]], + + ["ProductName_t", "String", [], "Contains the name of the product.", []], + + ["ProductVersion_t", "String", [], "Contains the version or release of the product.", []], + + ["SupplierName_t", "String", [], "Contains the name of the supplier or service provider.", []] + ] +}