From 6d356a6cb897ebf98d3ee91e653e1644712f3830 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 10 Dec 2024 17:01:39 -0500 Subject: [PATCH 01/14] initial "why JADN?" text and examples --- imjadn-v1.0-cn03.md | 53 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 4378410..cadb98c 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -5,9 +5,9 @@ # Information Modeling with JADN Version 1.0 -## Committee Note 02 +## Committee Note 03 -## 19 November 2024 +## 11 December 2024 #### This stage: https://docs.oasis-open.org/openc2/imjadn/v1.0/cn01/imjadn-v1.0-cn01.md (Authoritative) \ @@ -223,6 +223,55 @@ clarity regarding the goals that the eventual implementation must satisfy. This section provides the background for the creation of JADN as an information modeling language for a spectrum of applications. +JADN complements existing schema languages such as JSON Schema and XSD while +providing distinctive features that focus on accurate definition of the +information of interest: + + * Unambiguous definition of the meaning of information separate from its representation for transmission or storage + * Ready translation of JADN models to widely-used format such as JSON Schema and XML Schema that can then be used with common tooling for those formats + * Serialization rules for JSON and CBOR, easily extensible to other representations + * Conversion of representation between formats that preserves the underlying meaning + * Concise, readable format that accurately represents the information model and is readily translatable + +> TO-DO: Update the music library information model to better support this +> introductory example and update the excerpts here + +An excerpt from the Digital Music Library example in [Section 3.3.1](#331-digital-music-library) +helps illustrate. Each musical track is described by a collection of metadata +(present here in JADN Interface Definition Language [JIDL] format): + +``` +Track-Info = Record // information about the individual audio tracks + 1 track_number Integer // track sequence number + 2 title String // track title + 3 length Integer{1..*} // length of track in seconds; + // anticipated user display is mm:ss; minimum length is 1 second + 4 audio_format Audio-Format // format of the digital audio (enumeration) + 5 featured_artist Artist unique [0..*] // optional notable guest performers + 6 track_art Image optional // each track can have optionally have individual artwork + 7 genre Genre // musical genre of the track (enumeration) +``` + +The JIDL presentation is concise and easily understood. The details of `Artist`, +`Image` and other types referenced in this metadata record are defined in other +structures. The JADN from which the JIDL is generated can be readily translated +into JSON or XML schema forms for use with existing tooling but the readability +of the JIDL format simplifies development, examination, and refinement of the +model: + +**JSON Schema** +```json + +``` + +**XML Schema*** +```xml + +``` + + + + ### 1.1.1 Information Models and Data Models Internet Engineering Task Force (IETF) [RFC 3444](#rfc3444), From 1f4fab07ea907388ae98bfe1650958a405f2bd5d Mon Sep 17 00:00:00 2001 From: dlemire60 Date: Tue, 10 Dec 2024 17:07:17 -0500 Subject: [PATCH 02/14] Add JSON and XML schemas to example in 1.1 --- imjadn-v1.0-cn03.md | 76 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 3 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index cadb98c..639f648 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -233,7 +233,7 @@ information of interest: * Conversion of representation between formats that preserves the underlying meaning * Concise, readable format that accurately represents the information model and is readily translatable -> TO-DO: Update the music library information model to better support this +> **TO-DO:** Update the music library information model to better support this > introductory example and update the excerpts here An excerpt from the Digital Music Library example in [Section 3.3.1](#331-digital-music-library) @@ -261,12 +261,82 @@ model: **JSON Schema** ```json - + "Track-Info": { + "title": "Track Info", + "type": "object", + "description": "information about the individual audio tracks", + "additionalProperties": false, + "required": [ + "track_number", + "title", + "length", + "audio_format", + "genre" + ], + "maxProperties": 100, + "properties": { + "track_number": { + "type": "integer", + "description": "track sequence number" + }, + "title": { + "type": "string", + "description": "track title", + "maxLength": 255 + }, + "length": { + "type": "integer", + "description": "length of track in seconds; anticipated user display is mm:ss; minimum length is 1 second", + "minimum": 1 + }, + "audio_format": { + "$ref": "#/definitions/Audio-Format", + "description": "format of the digital audio (enumeration" + }, + "featured_artist": { + "type": "array", + "description": "notable guest performers", + "uniqueItems": true, + "minItems": 1, + "items": { + "$ref": "#/definitions/Artist", + "description": "notable guest performers" + } + }, + "track_art": { + "$ref": "#/definitions/Image", + "description": "each track can have optionally have individual artwork" + }, + "genre": { + "$ref": "#/definitions/Genre", + "description": "musical genre of the track (enumeration)" + } + } + }, ``` +> **NOTE:** update once the Sandbox glitch of not propogating comments to XSD is corrected + + **XML Schema*** ```xml - + + + + + + + + + + + + + + + + + ``` From f5408d03b332541ae852d2eec67edc732fb15b41 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 10 Dec 2024 17:16:15 -0500 Subject: [PATCH 03/14] refine wording --- imjadn-v1.0-cn03.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 639f648..3296fa8 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -233,11 +233,11 @@ information of interest: * Conversion of representation between formats that preserves the underlying meaning * Concise, readable format that accurately represents the information model and is readily translatable -> **TO-DO:** Update the music library information model to better support this -> introductory example and update the excerpts here +> _**TO-DO:** Update the music library information model to better support this +> introductory example and update the excerpts here_ -An excerpt from the Digital Music Library example in [Section 3.3.1](#331-digital-music-library) -helps illustrate. Each musical track is described by a collection of metadata +An excerpt from the Digital Music Library example in [Section 3.3.1](#331-digital-music-library) +helps illustrate. Each music track in the library is described by a collection of metadata (present here in JADN Interface Definition Language [JIDL] format): ``` @@ -252,14 +252,15 @@ Track-Info = Record // information about the individual 7 genre Genre // musical genre of the track (enumeration) ``` -The JIDL presentation is concise and easily understood. The details of `Artist`, -`Image` and other types referenced in this metadata record are defined in other -structures. The JADN from which the JIDL is generated can be readily translated -into JSON or XML schema forms for use with existing tooling but the readability -of the JIDL format simplifies development, examination, and refinement of the -model: +The JIDL presentation is concise and easily understood. Each element is defined +by its meaning (e.g., the track number is an _integer_, not a string containing +only digits). The details of `Artist`, `Image`, and other types referenced in +this metadata record are defined in other structures. The JADN from which the +JIDL is generated can be readily translated into JSON or XML schema forms for +use with existing tooling but the readability of the JIDL format simplifies +development, examination, and refinement of the model: -**JSON Schema** +**Track-Info in JSON Schema** ```json "Track-Info": { "title": "Track Info", @@ -318,7 +319,7 @@ model: > **NOTE:** update once the Sandbox glitch of not propogating comments to XSD is corrected -**XML Schema*** +**Track-Info in XML Schema*** ```xml @@ -339,8 +340,8 @@ model: ``` - - +The following sections examine the meaning of information and the value of +information models in more detail. ### 1.1.1 Information Models and Data Models From e12ff6c208fcd2f17cc39748566791d206aa8118 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 10 Dec 2024 17:19:30 -0500 Subject: [PATCH 04/14] add revision history table line --- imjadn-v1.0-cn03.md | 1 + 1 file changed, 1 insertion(+) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 3296fa8..ba8491b 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -3326,6 +3326,7 @@ The following individuals have participated in the creation of this document and | imjadn-v1.0-cn01-wd02.md | 2023-11-07 | David Lemire | Administrative clean-up (PR #78) | | imjadn-v1.0-cn01-wd02.md | 2023-11-14 | David Lemire | Update diagrams (PR #81) and text (PR #82) to align w/JADN Spec changes | | imjadn-v1.0-cn03.md | 2023-11-26 | David Lemire | Add example development JADN IM from JSON schema starting point (PR #xx), rename document for next CN version | +| imjadn-v1.0-cn03.md | 2023-12-11 | David Lemire | Add "Why JADN?" material in Section 1.1 (PR #88) | ------- From 9eb7971d36135846428ba2fb0c033938a23de3d4 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 10 Dec 2024 17:24:21 -0500 Subject: [PATCH 05/14] refine wording about music lib example excerpt --- imjadn-v1.0-cn03.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index ba8491b..319c45f 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -236,7 +236,8 @@ information of interest: > _**TO-DO:** Update the music library information model to better support this > introductory example and update the excerpts here_ -An excerpt from the Digital Music Library example in [Section 3.3.1](#331-digital-music-library) +An excerpt from the Digital Music Library example presented in full +in [Section 3.3.1](#331-digital-music-library) helps illustrate. Each music track in the library is described by a collection of metadata (present here in JADN Interface Definition Language [JIDL] format): From 6f60c72f487fff665bde333f49427b6335c33009 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 10 Dec 2024 17:26:57 -0500 Subject: [PATCH 06/14] text refinements --- imjadn-v1.0-cn03.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 319c45f..0c6c43d 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -256,9 +256,9 @@ Track-Info = Record // information about the individual The JIDL presentation is concise and easily understood. Each element is defined by its meaning (e.g., the track number is an _integer_, not a string containing only digits). The details of `Artist`, `Image`, and other types referenced in -this metadata record are defined in other structures. The JADN from which the +this metadata record are defined in other similar structures. The JADN from which the JIDL is generated can be readily translated into JSON or XML schema forms for -use with existing tooling but the readability of the JIDL format simplifies +use with existing tooling for those formats but the readability of the JIDL format simplifies development, examination, and refinement of the model: **Track-Info in JSON Schema** @@ -317,7 +317,7 @@ development, examination, and refinement of the model: }, ``` -> **NOTE:** update once the Sandbox glitch of not propogating comments to XSD is corrected +> **NOTE:** update once the Sandbox glitch of not propagating comments to XSD is corrected **Track-Info in XML Schema*** From 67896145590637d72123526b5038780ab62f2e61 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 14:20:14 -0500 Subject: [PATCH 07/14] trim JSON & XML schemas by removing comments, add a note --- imjadn-v1.0-cn03.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 0c6c43d..9ce0e9d 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -259,14 +259,15 @@ only digits). The details of `Artist`, `Image`, and other types referenced in this metadata record are defined in other similar structures. The JADN from which the JIDL is generated can be readily translated into JSON or XML schema forms for use with existing tooling for those formats but the readability of the JIDL format simplifies -development, examination, and refinement of the model: +development, examination, and refinement of the model. + +> NOTE: Comments have been omitted from the JSON and XML schemas below for space reasons. **Track-Info in JSON Schema** ```json "Track-Info": { "title": "Track Info", "type": "object", - "description": "information about the individual audio tracks", "additionalProperties": false, "required": [ "track_number", @@ -279,39 +280,31 @@ development, examination, and refinement of the model: "properties": { "track_number": { "type": "integer", - "description": "track sequence number" }, "title": { "type": "string", - "description": "track title", "maxLength": 255 }, "length": { "type": "integer", - "description": "length of track in seconds; anticipated user display is mm:ss; minimum length is 1 second", "minimum": 1 }, "audio_format": { "$ref": "#/definitions/Audio-Format", - "description": "format of the digital audio (enumeration" }, "featured_artist": { "type": "array", - "description": "notable guest performers", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/definitions/Artist", - "description": "notable guest performers" } }, "track_art": { "$ref": "#/definitions/Image", - "description": "each track can have optionally have individual artwork" }, "genre": { "$ref": "#/definitions/Genre", - "description": "musical genre of the track (enumeration)" } } }, From 87034103773a80897cf6f12eb75650dd3405ff75 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 14:50:23 -0500 Subject: [PATCH 08/14] add junk file for testing --- junk.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 junk.md diff --git a/junk.md b/junk.md new file mode 100644 index 0000000..05e2b10 --- /dev/null +++ b/junk.md @@ -0,0 +1 @@ +# Junk Markdown File for testing \ No newline at end of file From bc007a5d18a0352a144ed88c0bd8e9f039b97b46 Mon Sep 17 00:00:00 2001 From: dlemire60 Date: Wed, 11 Dec 2024 14:50:58 -0500 Subject: [PATCH 09/14] remove junk testing file --- junk.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 junk.md diff --git a/junk.md b/junk.md deleted file mode 100644 index 05e2b10..0000000 --- a/junk.md +++ /dev/null @@ -1 +0,0 @@ -# Junk Markdown File for testing \ No newline at end of file From 0d895326f18ce55cd0aa7e7fe8c75c8723e96a59 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 15:15:21 -0500 Subject: [PATCH 10/14] capture html source for table 3-2 graphic --- sources/table-3-2.html | 272 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 sources/table-3-2.html diff --git a/sources/table-3-2.html b/sources/table-3-2.html new file mode 100644 index 0000000..1b7feda --- /dev/null +++ b/sources/table-3-2.html @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BinaryBooleanIntegerNumberStringArrayArrayOfMapMapOfRecordChoiceEnumerated
idXXX
vtypeXX
ktypeX
enumX
pointerX
formatXXXXX
patternX
minfX
maxfX
minvXXXXXXXX
maxvXXXXXXXX
uniqueX
setX
unorderedX
extendXXXXX
default
\ No newline at end of file From 24f2203fee9a7defb3d1c743c99ee99ffa8604cb Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 15:16:16 -0500 Subject: [PATCH 11/14] add image file for table 3-2 graphic --- images/table-3-2.png | Bin 0 -> 22116 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/table-3-2.png diff --git a/images/table-3-2.png b/images/table-3-2.png new file mode 100644 index 0000000000000000000000000000000000000000..bca8f8b83ca7072123019b69a84981226d469bf1 GIT binary patch literal 22116 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 literal 0 HcmV?d00001 From b780e1f1fdde06f19d59481b54f74fbaaf427cca Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 15:42:54 -0500 Subject: [PATCH 12/14] remove now extraneous note in intro material --- imjadn-v1.0-cn03.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 9ce0e9d..c394dd8 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -309,10 +309,7 @@ development, examination, and refinement of the model. } }, ``` - -> **NOTE:** update once the Sandbox glitch of not propagating comments to XSD is corrected - - +

**Track-Info in XML Schema*** ```xml From dbf0a000c84ad574b57304cb46d83df500411d33 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Wed, 11 Dec 2024 15:43:36 -0500 Subject: [PATCH 13/14] manual fix in JSON schema conversion minItems value --- imjadn-v1.0-cn03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index c394dd8..668b5e0 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -295,7 +295,7 @@ development, examination, and refinement of the model. "featured_artist": { "type": "array", "uniqueItems": true, - "minItems": 1, + "minItems": 0, "items": { "$ref": "#/definitions/Artist", } From fb577332485b17148daa7966d3ceddad6b096a41 Mon Sep 17 00:00:00 2001 From: David Lemire Date: Tue, 17 Dec 2024 11:40:33 -0500 Subject: [PATCH 14/14] replace Markdown Table 3-2 w/graphic for improved layout --- imjadn-v1.0-cn03.md | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/imjadn-v1.0-cn03.md b/imjadn-v1.0-cn03.md index 668b5e0..e047ef4 100644 --- a/imjadn-v1.0-cn03.md +++ b/imjadn-v1.0-cn03.md @@ -1155,24 +1155,7 @@ Table 3-2 summarizes the applicability of type options to JADN core types. ###### Table 3-2 -- Type Option Applicability -| | Binary | Boolean | Integer | Number | String | Array | ArrayOf | Map | MapOf | Record | Choice | Enumerated | -|----------:|:------:|:-------:|:-------:|:------:|:------:|:-----:|:-------:|:---:|:-----:|:------:|:------:|:----------:| -| id | | | | | | | | X | | | X | X | -| vtype | | | | | | | X | | X | | | | -| ktype | | | | | | | | | X | | | | -| enum | | | | | | | | | | | | X | -| pointer | | | | | | | | | | | | X | -| format | X | | X | X | X | X | | | | | | | -| pattern | | | | | X | | | | | | | | -| minf | | | | X | | | | | | | | | -| maxf | | | | X | | | | | | | | | -| minv | X | | X | | X | X | X | X | X | X | | | -| maxv | X | | X | | X | X | X | X | X | X | | | -| unique | | | | | | | X | | | | | | -| set | | | | | | | X | | | | | | -| unordered | | | | | | | X | | | | | | -| extend | | | | | | X | | X | | X | X | X | -| default | | | | | | | | | | | | | +![Table 3-2 -- Type Option Applicability](images/table-3-2.png) #### 3.1.1.3 Item Or Field Definitions