Open Supplychain Information Modeling TC

 View Only
  • 1.  [FYI] Prototype JADN Representation of OASIS CIQ

    Posted 11-19-2024 10:18

    In my efforts to evaluate existing Entity representation models I factored in our objectives of delivering an Information Model vs. specific serializations of any schema/model.  A number of Entity representations come in the form of specific serializations.  This led to the question: "Can we use generative AI to transform specific serializations back into a higher-level Information Model?"   I used Generative AI to create a mapping of OASIS CIQ into JADN. 

    I welcome feedback from our experts on the "shape-of-the-data" and conformance to JADN.

    I will also be testing transformations to UML.

    Prompts:

    You are a master of data representation and information models. Please translate the OASIS CIQ schema into JADN.

    <provided a brief example>

    Thats great! Can you extend and provide a full detailed mapping of OASIS CIQ to JADN?

    info:
      title: OASIS CIQ Schema
      version: 1.0
      description: A detailed representation of the OASIS CIQ standard in JADN

    types:
      - Address:
          type: Record
          fields:
            - id: 1
              name: StreetAddress
              type: String
              description: Street address of the customer
            - id: 2
              name: Locality
              type: String
              description: City or locality of the customer
            - id: 3
              name: Region
              type: String
              description: State or region of the customer
            - id: 4
              name: PostalCode
              type: String
              description: Postal code of the customer
            - id: 5
              name: Country
              type: String
              description: Country of the customer
            - id: 6
              name: AddressType
              type: Enumeration
              enum: [Residential, Business, POBox, Other]
              description: Type of address
            - id: 7
              name: AddressLine1
              type: String
              description: Additional address line 1
            - id: 8
              name: AddressLine2
              type: String
              description: Additional address line 2
            - id: 9
              name: AddressLine3
              type: String
              description: Additional address line 3
            - id: 10
              name: POBox
              type: String
              description: Post Office Box number
            - id: 11
              name: AddressValidity
              type: Boolean
              description: Whether the address is valid or not

      - PersonName:
          type: Record
          fields:
            - id: 1
              name: GivenName
              type: String
              description: First name of the person
            - id: 2
              name: MiddleName
              type: String
              description: Middle name of the person
            - id: 3
              name: FamilyName
              type: String
              description: Last name of the person
            - id: 4
              name: NamePrefix
              type: String
              description: Prefix of the name (e.g., Mr., Ms., Dr.)
            - id: 5
              name: NameSuffix
              type: String
              description: Suffix of the name (e.g., Jr., Sr., III)
            - id: 6
              name: FullName
              type: String
              description: Full name of the person
            - id: 7
              name: NameType
              type: Enumeration
              enum: [Legal, Alias, Preferred, Other]
              description: Type of the name

      - ContactInfo:
          type: Record
          fields:
            - id: 1
              name: EmailAddress
              type: String
              description: Email address of the person
            - id: 2
              name: PhoneNumber
              type: String
              description: Phone number of the person
            - id: 3
              name: FaxNumber
              type: String
              description: Fax number of the person
            - id: 4
              name: MobileNumber
              type: String
              description: Mobile phone number of the person
            - id: 5
              name: ContactType
              type: Enumeration
              enum: [Home, Work, Mobile, Fax, Other]
              description: Type of contact information
            - id: 6
              name: PreferredContactMethod
              type: Enumeration
              enum: [Email, Phone, SMS, Fax, Other]
              description: Preferred method of contact

      - Organisation:
          type: Record
          fields:
            - id: 1
              name: OrganisationName
              type: String
              description: Name of the organisation
            - id: 2
              name: Department
              type: String
              description: Department within the organisation
            - id: 3
              name: OrganisationUnit
              type: String
              description: Organisational unit
            - id: 4
              name: OrganisationIdentifier
              type: String
              description: Unique identifier for the organisation
            - id: 5
              name: OrganisationType
              type: Enumeration
              enum: [Corporation, NonProfit, Government, Other]
              description: Type of organisation
            - id: 6
              name: OrganisationAddress
              type: Address
              description: Address of the organisation
            - id: 7
              name: OrganisationContact
              type: ContactInfo
              description: Contact information for the organisation

      - CustomerInformation:
          type: Record
          fields:
            - id: 1
              name: PersonName
              type: PersonName
              description: Person's name information
            - id: 2
              name: Address
              type: Address
              description: Address information
            - id: 3
              name: ContactInfo
              type: ContactInfo
              description: Contact information
            - id: 4
              name: Organisation
              type: Organisation
              description: Organisation information
            - id: 5
              name: CustomerID
              type: String
              description: Unique identifier for the customer
            - id: 6
              name: CustomerType
              type: Enumeration
              enum: [Individual, Business, Government]
              description: Type of customer
            - id: 7
              name: DateOfBirth
              type: String
              format: date
              description: Date of birth of the customer
            - id: 8
              name: Gender
              type: Enumeration
              enum: [Male, Female, Other]
              description: Gender of the customer
            - id: 9
              name: Nationality
              type: String
              description: Nationality of the customer
            - id: 10
              name: MaritalStatus
              type: Enumeration
              enum: [Single, Married, Divorced, Widowed, Other]
              description: Marital status of the customer
            - id: 11
              name: Occupation
              type: String
              description: Occupation of the customer
            - id: 12
              name: AnnualIncome
              type: Number
              description: Annual income of the customer
            - id: 13
              name: PreferredLanguage
              type: String
              description: Preferred language of the customer
            - id: 14
              name: CustomerSince
              type: String
              format: date
              description: Date since the customer has been with the organisation
            - id: 15
              name: CustomerStatus
              type: Enumeration
              enum: [Active, Inactive, Suspended, Closed]
              description: Status of the customer
            - id: 16
              name: LoyaltyLevel
              type: Enumeration
              enum: [Bronze, Silver, Gold, Platinum]
              description: Loyalty level of the customer



    ------------------------------
    Patrick Maroney
    Principal - Cybersecurity
    AT&T Services, Inc.
    Middletown NJ
    ------------------------------


  • 2.  RE: [FYI] Prototype JADN Representation of OASIS CIQ

    Posted 11-19-2024 12:09
    Patrick,

    That's super scary and awesome at the same time -- I didn't know generative AI models had even heard of JADN.

    All it took is a little reformatting to put each field on the same line, add a package namespace, and create Enumerated types from the lists, and we have working JADN.  By default field names start with a lower-case letter and type names are upper, but the schema can be configured to allow any name formats.

          title: "OASIS CIQ Schema"
        package: "http://oasis.com/osim/ciq/v1"
        version: "1.0"
    description: "A detailed representation of the OASIS CIQ standard in JADN"
         config: {"$FieldName": "^[$A-Za-z][_$A-Za-z0-9]{0,63}$"}
          roots: ["CustomerInformation"]

    Address = Record
      1 StreetAddress            String                         // Street address of the customer
      2 Locality                 String                         // City or locality of the customer
      3 Region                   String                         // State or region of the customer
      4 PostalCode               String                         // Postal code of the customer
      5 Country                  String                         // Country of the customer
      6 AddressType              AddressType                    // Type of address
      7 AddressLine1             String                         // Additional address line 1
      8 AddressLine2             String                         // Additional address line 2
      9 AddressLine3             String                         // Additional address line 3
     10 POBox                    String                         // Post Office Box number
     11 AddressValidity          Boolean                        // Whether the address is valid or not

    AddressType = Enumerated
      1 Residential
      2 Business
      3 POBox
      4 Other

    PersonName = Record
      1 GivenName                String                         // First name of the person
      2 MiddleName               String                         // Middle name of the person
      3 FamilyName               String                         // Last name of the person
      4 NamePrefix               String                         // Prefix of the name (e.g., Mr., Ms., Dr.)
      5 NameSuffix               String                         // Suffix of the name (e.g., Jr., Sr., III)
      6 FullName                 String                         // Full name of the person
      7 NameType                 NameType                       // Type of the name

    NameType = Enumerated
      1 Legal
      2 Alias
      3 Preferred
      4 Other

    ContactInfo = Record
      1 EmailAddress             String                         // Email address of the person
      2 PhoneNumber              String                         // Phone number of the person
      3 FaxNumber                String                         // Fax number of the person
      4 MobileNumber             String                         // Mobile phone number of the person
      5 ContactType              ContactType                    // Type of contact information
      6 PreferredContactMethod   ContactMethod                  // Preferred method of contact

    ContactType = Enumerated
      1 Home
      2 Work
      3 Mobile
      4 Fax
      5 Other

    ContactMethod = Enumerated
      1 Email
      2 Phone
      3 SMS
      4 Fax
      5 Other

    Organisation = Record
      1 OrganisationName         String                         // Name of the organisation
      2 Department               String                         // Department within the organisation
      3 OrganisationUnit         String                         // Organisational unit
      4 OrganisationIdentifier   String                         // Unique identifier for the organisation
      5 OrganisationType         OrganizationType               // Type of organisation
      6 OrganisationAddress      Address                        // Address of the organisation
      7 OrganisationContact      ContactInfo                    // Contact information for the organisation

    OrganizationType = Enumerated
      1 Corporation
      2 NonProfit
      3 Government
      4 Other

    CustomerInformation = Record
      1 PersonName               PersonName                     // Person's name information
      2 Address                  Address                        // Address information
      3 ContactInfo              ContactInfo                    // Contact information
      4 Organisation             Organisation                   // Organisation information
      5 CustomerID               String                         // Unique identifier for the customer
      6 CustomerType             CustomerType                   // Type of customer
      7 DateOfBirth              String /date                   // Date of birth of the customer
      8 Gender                   Gender                         // Gender of the customer
      9 Nationality              String                         // Nationality of the customer
     10 MaritalStatus            MaritalStatus                  // Marital status of the customer
     11 Occupation               String                         // Occupation of the customer
     12 AnnualIncome             Number                         // Annual income of the customer
     13 PreferredLanguage        String                         // Preferred language of the customer
     14 CustomerSince            String /date                   // Date since the customer has been with the organisation
     15 CustomerStatus           CustomerStatus                 // Status of the customer
     16 LoyaltyLevel             LoyaltyLevel                   // Loyalty level of the customer

    CustomerType = Enumerated
      1 Individual
      2 Business
      3 Government

    Gender = Enumerated
      1 Male
      2 Female
      3 Other

    MaritalStatus = Enumerated
      1 Single
      2 Married
      3 Divorced
      4 Widowed
      5 Other

    CustomerStatus = Enumerated
      1 Active
      2 Inactive
      3 Suspended
      4 Closed

    LoyaltyLevel = Enumerated
      1 Bronze
      2 Silver
      3 Gold
      4 Platinum
    Or in JSON format:
    {
     "meta": {
       "package": "http://oasis.com/osim/ciq/v1",
       "title": "OASIS CIQ Schema",
       "version": "1.0",
       "description": "A detailed representation of the OASIS CIQ standard in JADN",
       "config": {
         "$FieldName": "^[$A-Za-z][_$A-Za-z0-9]{0,63}$"
       },
       "roots": ["CustomerInformation"]
     },

     "types": [
       ["Address", "Record", [], "", [
         [1, "StreetAddress", "String", [], "Street address of the customer"],
         [2, "Locality", "String", [], "City or locality of the customer"],
         [3, "Region", "String", [], "State or region of the customer"],
         [4, "PostalCode", "String", [], "Postal code of the customer"],
         [5, "Country", "String", [], "Country of the customer"],
         [6, "AddressType", "AddressType", [], "Type of address"],
         [7, "AddressLine1", "String", [], "Additional address line 1"],
         [8, "AddressLine2", "String", [], "Additional address line 2"],
         [9, "AddressLine3", "String", [], "Additional address line 3"],
         [10, "POBox", "String", [], "Post Office Box number"],
         [11, "AddressValidity", "Boolean", [], "Whether the address is valid or not"]
       ]],

       ["AddressType", "Enumerated", [], "", [
         [1, "Residential", ""],
         [2, "Business", ""],
         [3, "POBox", ""],
         [4, "Other", ""]
       ]],

       ["PersonName", "Record", [], "", [
         [1, "GivenName", "String", [], "First name of the person"],
         [2, "MiddleName", "String", [], "Middle name of the person"],
         [3, "FamilyName", "String", [], "Last name of the person"],
         [4, "NamePrefix", "String", [], "Prefix of the name (e.g., Mr., Ms., Dr.)"],
         [5, "NameSuffix", "String", [], "Suffix of the name (e.g., Jr., Sr., III)"],
         [6, "FullName", "String", [], "Full name of the person"],
         [7, "NameType", "NameType", [], "Type of the name"]
       ]],

       ["NameType", "Enumerated", [], "", [
         [1, "Legal", ""],
         [2, "Alias", ""],
         [3, "Preferred", ""],
         [4, "Other", ""]
       ]],

       ["ContactInfo", "Record", [], "", [
         [1, "EmailAddress", "String", [], "Email address of the person"],
         [2, "PhoneNumber", "String", [], "Phone number of the person"],
         [3, "FaxNumber", "String", [], "Fax number of the person"],
         [4, "MobileNumber", "String", [], "Mobile phone number of the person"],
         [5, "ContactType", "ContactType", [], "Type of contact information"],
         [6, "PreferredContactMethod", "ContactMethod", [], "Preferred method of contact"]
       ]],

       ["ContactType", "Enumerated", [], "", [
         [1, "Home", ""],
         [2, "Work", ""],
         [3, "Mobile", ""],
         [4, "Fax", ""],
         [5, "Other", ""]
       ]],

       ["ContactMethod", "Enumerated", [], "", [
         [1, "Email", ""],
         [2, "Phone", ""],
         [3, "SMS", ""],
         [4, "Fax", ""],
         [5, "Other", ""]
       ]],

       ["Organisation", "Record", [], "", [
         [1, "OrganisationName", "String", [], "Name of the organisation"],
         [2, "Department", "String", [], "Department within the organisation"],
         [3, "OrganisationUnit", "String", [], "Organisational unit"],
         [4, "OrganisationIdentifier", "String", [], "Unique identifier for the organisation"],
         [5, "OrganisationType", "OrganizationType", [], "Type of organisation"],
         [6, "OrganisationAddress", "Address", [], "Address of the organisation"],
         [7, "OrganisationContact", "ContactInfo", [], "Contact information for the organisation"]
       ]],

       ["OrganizationType", "Enumerated", [], "", [
         [1, "Corporation", ""],
         [2, "NonProfit", ""],
         [3, "Government", ""],
         [4, "Other", ""]
       ]],

       ["CustomerInformation", "Record", [], "", [
         [1, "PersonName", "PersonName", [], "Person's name information"],
         [2, "Address", "Address", [], "Address information"],
         [3, "ContactInfo", "ContactInfo", [], "Contact information"],
         [4, "Organisation", "Organisation", [], "Organisation information"],
         [5, "CustomerID", "String", [], "Unique identifier for the customer"],
         [6, "CustomerType", "CustomerType", [], "Type of customer"],
         [7, "DateOfBirth", "String", ["/date"], "Date of birth of the customer"],
         [8, "Gender", "Gender", [], "Gender of the customer"],
         [9, "Nationality", "String", [], "Nationality of the customer"],
         [10, "MaritalStatus", "MaritalStatus", [], "Marital status of the customer"],
         [11, "Occupation", "String", [], "Occupation of the customer"],
         [12, "AnnualIncome", "Number", [], "Annual income of the customer"],
         [13, "PreferredLanguage", "String", [], "Preferred language of the customer"],
         [14, "CustomerSince", "String", ["/date"], "Date since the customer has been with the organisation"],
         [15, "CustomerStatus", "CustomerStatus", [], "Status of the customer"],
         [16, "LoyaltyLevel", "LoyaltyLevel", [], "Loyalty level of the customer"]
       ]],

       ["CustomerType", "Enumerated", [], "", [
         [1, "Individual", ""],
         [2, "Business", ""],
         [3, "Government", ""]
       ]],

       ["Gender", "Enumerated", [], "", [
         [1, "Male", ""],
         [2, "Female", ""],
         [3, "Other", ""]
       ]],

       ["MaritalStatus", "Enumerated", [], "", [
         [1, "Single", ""],
         [2, "Married", ""],
         [3, "Divorced", ""],
         [4, "Widowed", ""],
         [5, "Other", ""]
       ]],

       ["CustomerStatus", "Enumerated", [], "", [
         [1, "Active", ""],
         [2, "Inactive", ""],
         [3, "Suspended", ""],
         [4, "Closed", ""]
       ]],

       ["LoyaltyLevel", "Enumerated", [], "", [
         [1, "Bronze", ""],
         [2, "Silver", ""],
         [3, "Gold", ""],
         [4, "Platinum", ""]
       ]]
     ]
    }





  • 3.  RE: [FYI] Prototype JADN Representation of OASIS CIQ

    Posted 11-19-2024 12:22
    Looks like another bug to iron out in the OASIS mail server - inserting random line breaks in the middle of messages.  It isn't an Outlook problem - the copy in my Sent Items folder is fine:






  • 4.  RE: [FYI] Prototype JADN Representation of OASIS CIQ

    Posted 11-19-2024 13:16

    Ask Gen AI and you shall receive!  I don't if 'the machine' sorted out the enumeration 'bits'

     

    Prompt:

    For the detailed CIQ XML to JADN transformation, please: (1) put each field on the same line, (2) add a package namespace, and (3) create Enumerated types from the lists

     

    Certainly! Here is the detailed OASIS CIQ schema transformed into JADN format with each field on the same line, a package namespace, and enumerated types created from the lists.

     

    OASIS CIQ JADN Schema (Detailed, Compact, with Enumerated Types)

     

    info:

      title: OASIS CIQ Schema

      version: 1.0

      description: A detailed representation of the OASIS CIQ standard in JADN

      namespace: ciq

     

    types:

      - Address:

          type: Record

          fields:

            - id: 1, name: StreetAddress, type: String, description: Street address of the customer

            - id: 2, name: Locality, type: String, description: City or locality of the customer

            - id: 3, name: Region, type: String, description: State or region of the customer

            - id: 4, name: PostalCode, type: String, description: Postal code of the customer

            - id: 5, name: Country, type: String, description: Country of the customer

            - id: 6, name: AddressType, type: AddressType, description: Type of address

            - id: 7, name: AddressLine1, type: String, description: Additional address line 1

            - id: 8, name: AddressLine2, type: String, description: Additional address line 2

            - id: 9, name: AddressLine3, type: String, description: Additional address line 3

            - id: 10, name: POBox, type: String, description: Post Office Box number

            - id: 11, name: AddressValidity, type: Boolean, description: Whether the address is valid or not

     

      - PersonName:

          type: Record

          fields:

            - id: 1, name: GivenName, type: String, description: First name of the person

            - id: 2, name: MiddleName, type: String, description: Middle name of the person

            - id: 3, name: FamilyName, type: String, description: Last name of the person

            - id: 4, name: NamePrefix, type: String, description: Prefix of the name (e.g., Mr., Ms., Dr.)

            - id: 5, name: NameSuffix, type: String, description: Suffix of the name (e.g., Jr., Sr., III)

            - id: 6, name: FullName, type: String, description: Full name of the person

            - id: 7, name: NameType, type: NameType, description: Type of the name

     

      - ContactInfo:

          type: Record

          fields:

            - id: 1, name: EmailAddress, type: String, description: Email address of the person

            - id: 2, name: PhoneNumber, type: String, description: Phone number of the person

            - id: 3, name: FaxNumber, type: String, description: Fax number of the person

            - id: 4, name: MobileNumber, type: String, description: Mobile phone number of the person

            - id: 5, name: ContactType, type: ContactType, description: Type of contact information

            - id: 6, name: PreferredContactMethod, type: PreferredContactMethod, description: Preferred method of contact

     

      - Organisation:

          type: Record

          fields:

            - id: 1, name: OrganisationName, type: String, description: Name of the organisation

            - id: 2, name: Department, type: String, description: Department within the organisation

            - id: 3, name: OrganisationUnit, type: String, description: Organisational unit

            - id: 4, name: OrganisationIdentifier, type: String, description: Unique identifier for the organisation

            - id: 5, name: OrganisationType, type: OrganisationType, description: Type of organisation

            - id: 6, name: OrganisationAddress, type: Address, description: Address of the organisation

            - id: 7, name: OrganisationContact, type: ContactInfo, description: Contact information for the organisation

     

      - CustomerInformation:

          type: Record

          fields:

            - id: 1, name: PersonName, type: PersonName, description: Person's name information

            - id: 2, name: Address, type: Address, description: Address information

            - id: 3, name: ContactInfo, type: ContactInfo, description: Contact information

            - id: 4, name: Organisation, type: Organisation, description: Organisation information

            - id: 5, name: CustomerID, type: String, description: Unique identifier for the customer

            - id: 6, name: CustomerType, type: CustomerType, description: Type of customer

            - id: 7, name: DateOfBirth, type: String, format: date, description: Date of birth of the customer

            - id: 8, name: Gender, type: Gender, description: Gender of the customer

            - id: 9, name: Nationality, type: String, description: Nationality of the customer

            - id: 10, name: MaritalStatus, type: MaritalStatus, description: Marital status of the customer

            - id: 11, name: Occupation, type: String, description: Occupation of the customer

            - id: 12, name: AnnualIncome, type: Number, description: Annual income of the customer

            - id: 13, name: PreferredLanguage, type: String, description: Preferred language of the customer

            - id: 14, name: CustomerSince, type: String, format: date, description: Date since the customer has been with the organisation

            - id: 15, name: CustomerStatus, type: CustomerStatus, description: Status of the customer

            - id: 16, name: LoyaltyLevel, type: LoyaltyLevel, description: Loyalty level of the customer

     

      - GeographicLocation:

          type: Record

          fields:

            - id: 1, name: Latitude, type: Decimal, description: Latitude of the location

            - id: 2, name: Longitude, type: Decimal, description: Longitude of the location

            - id: 3, name: Altitude, type: Decimal, description: Altitude of the location

     

      - PhoneNumber:

          type: Record

          fields:

            - id: 1, name: CountryCode, type: String, description: Country code of the phone number

            - id: 2, name: AreaCode, type: String, description: Area code of the phone number

            - id: 3, name: Number, type: String, description: Phone number

            - id: 4, name: Extension, type: String, description: Extension number

            - id: 5, name: Type, type: PhoneNumberType, description: Type of phone number

     

      - AddressType:

          type: Enumeration

          enum: [Residential, Business, POBox, Other]

     

      - NameType:

          type: Enumeration

          enum: [Legal, Alias, Preferred, Other]

     

      - ContactType:

          type: Enumeration

          enum: [Home, Work, Mobile, Fax, Other]

     

      - PreferredContactMethod:

          type: Enumeration

          enum: [Email, Phone, SMS, Fax, Other]

     

      - OrganisationType:

          type: Enumeration

          enum: [Corporation, NonProfit, Government, Other]

     

      - CustomerType:

          type: Enumeration

          enum: [Individual, Business, Government]

     

      - Gender:

          type: Enumeration

          enum: [Male, Female, Other]

     

      - MaritalStatus:

          type: Enumeration

          enum: [Single, Married, Divorced, Widowed, Other]

     

      - CustomerStatus:

          type: Enumeration

          enum: [Active, Inactive, Suspended, Closed]

     

      - LoyaltyLevel:

          type: Enumeration

          enum: [Bronze, Silver, Gold, Platinum]

     

      - PhoneNumberType:

          type: Enumeration

          enum: [Home, Work, Mobile, Fax, Other]



    ------------------------------
    Patrick Maroney
    Principal - Cybersecurity
    AT&T Services, Inc.
    Middletown NJ
    ------------------------------