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.", []]
+ ]
+}