Open-Data-Product-Initiative / v2.1

Open Data Product Specification 2.1
https://opendataproducts.org/v2.1/
Apache License 2.0
4 stars 2 forks source link

Schema for the specification? #11

Closed kyyberi closed 1 year ago

kyyberi commented 2 years ago

Some have raised the need for Schema. That is valid point and now since the specification is in 1.0 version, it makes sense to publish also a Schema. DataMix has pledged to develop one soon. https://www.dataproductbusiness.com/post/datamix-contributes-schema-development-resources-to-open-data-product-specification

kyyberi commented 2 years ago

This is going forward soon

kyyberi commented 2 years ago

Lets invite Datamix people to the next Technical Steering Committee meeting. I have the contacts and I can pass on the invitation

niilahti commented 1 year ago
{
    "title": "Root Schema",
    "description": "The root schema is the schema that comprises the entire JSON document.",
    "type": "object",
    "required": [
        "product"
    ],
    "properties": {
        "product": {
            "title": "The product Schema",
            "description": "An explanation about the purpose of this instance.",
            "type": "object",
            "required": [
                "en",
                "recommendedDataProducts",
                "pricingPlans",
                "dataOps",
                "dataAccess",
                "dataQuality",
                "SLA",
                "license",
                "dataHolder"
            ],
            "properties": {
                "en": {
                    "title": "The en Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "name",
                        "productID",
                        "valueProposition",
                        "description",
                        "productSeries",
                        "visibility",
                        "status",
                        "version",
                        "categories",
                        "standards",
                        "tags",
                        "brandSlogan",
                        "type",
                        "logoURL",
                        "OutputFileFormats",
                        "useCases"
                    ],
                    "properties": {
                        "name": {
                            "title": "The name Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "productID": {
                            "title": "The productID Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "valueProposition": {
                            "title": "The valueProposition Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "description": {
                            "title": "The description Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "productSeries": {
                            "title": "The productSeries Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "visibility": {
                            "title": "The visibility Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "status": {
                            "title": "The status Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "version": {
                            "title": "The version Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "categories": {
                            "title": "The categories Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        },
                        "standards": {
                            "title": "The standards Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        },
                        "tags": {
                            "title": "The tags Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        },
                        "brandSlogan": {
                            "title": "The brandSlogan Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "type": {
                            "title": "The type Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "logoURL": {
                            "title": "The logoURL Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "OutputFileFormats": {
                            "title": "The OutputFileFormats Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        },
                        "useCases": {
                            "title": "The useCases Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        }
                    }
                },
                "recommendedDataProducts": {
                    "title": "The recommendedDataProducts Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "array",
                    "items": {}
                },
                "pricingPlans": {
                    "title": "The pricingPlans Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "en"
                    ],
                    "properties": {
                        "en": {
                            "title": "The en Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "array",
                            "items": {}
                        }
                    }
                },
                "dataOps": {
                    "title": "The dataOps Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "infrastructure"
                    ],
                    "properties": {
                        "infrastructure": {
                            "title": "The infrastructure Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "platform",
                                "storageTechnology",
                                "storageType",
                                "containerTool",
                                "format",
                                "status",
                                "schemaLocationURL",
                                "scriptURL",
                                "deploymentDocumentationURL",
                                "dataLineageTool",
                                "dataLineageOutput",
                                "hashType",
                                "checksum"
                            ],
                            "properties": {
                                "platform": {
                                    "title": "The platform Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "storageTechnology": {
                                    "title": "The storageTechnology Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "storageType": {
                                    "title": "The storageType Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "containerTool": {
                                    "title": "The containerTool Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "format": {
                                    "title": "The format Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "status": {
                                    "title": "The status Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "schemaLocationURL": {
                                    "title": "The schemaLocationURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "scriptURL": {
                                    "title": "The scriptURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "deploymentDocumentationURL": {
                                    "title": "The deploymentDocumentationURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "dataLineageTool": {
                                    "title": "The dataLineageTool Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "dataLineageOutput": {
                                    "title": "The dataLineageOutput Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "hashType": {
                                    "title": "The hashType Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "checksum": {
                                    "title": "The checksum Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                }
                            }
                        }
                    }
                },
                "dataAccess": {
                    "title": "The dataAccess Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "type",
                        "authenticationMethod",
                        "specification",
                        "format",
                        "documentationURL"
                    ],
                    "properties": {
                        "type": {
                            "title": "The type Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "authenticationMethod": {
                            "title": "The authenticationMethod Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "specification": {
                            "title": "The specification Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "format": {
                            "title": "The format Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "documentationURL": {
                            "title": "The documentationURL Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        }
                    }
                },
                "dataQuality": {
                    "title": "The dataQuality Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "accuracy",
                        "completeness",
                        "consistency",
                        "timeliness",
                        "validity",
                        "uniqueness",
                        "dataQualityAssuranceMethods"
                    ],
                    "properties": {
                        "accuracy": {
                            "title": "The accuracy Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "completeness": {
                            "title": "The completeness Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "consistency": {
                            "title": "The consistency Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "timeliness": {
                            "title": "The timeliness Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "validity": {
                            "title": "The validity Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "uniqueness": {
                            "title": "The uniqueness Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "dataQualityAssuranceMethods": {
                            "title": "The dataQualityAssuranceMethods Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        }
                    }
                },
                "SLA": {
                    "title": "The SLA Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "updateFrequency",
                        "uptime",
                        "responseTime",
                        "nullValues",
                        "support",
                        "observability"
                    ],
                    "properties": {
                        "updateFrequency": {
                            "title": "The updateFrequency Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "unit",
                                "value"
                            ],
                            "properties": {
                                "unit": {
                                    "title": "The unit Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "value": {
                                    "title": "The value Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "number"
                                }
                            }
                        },
                        "uptime": {
                            "title": "The uptime Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "unit",
                                "value"
                            ],
                            "properties": {
                                "unit": {
                                    "title": "The unit Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "value": {
                                    "title": "The value Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "number"
                                }
                            }
                        },
                        "responseTime": {
                            "title": "The responseTime Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "unit",
                                "value"
                            ],
                            "properties": {
                                "unit": {
                                    "title": "The unit Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "value": {
                                    "title": "The value Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "number"
                                }
                            }
                        },
                        "nullValues": {
                            "title": "The nullValues Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "unit",
                                "value"
                            ],
                            "properties": {
                                "unit": {
                                    "title": "The unit Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "value": {
                                    "title": "The value Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "number"
                                }
                            }
                        },
                        "support": {
                            "title": "The support Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "company",
                                "community"
                            ],
                            "properties": {
                                "company": {
                                    "title": "The company Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "object",
                                    "required": [
                                        "phoneNumber",
                                        "phoneServiceHours",
                                        "chatURL",
                                        "chatServiceHours",
                                        "chatResponseTime",
                                        "email",
                                        "emailServiceHours",
                                        "emailResponseTime",
                                        "documentationURL",
                                        "guidesURL"
                                    ],
                                    "properties": {
                                        "phoneNumber": {
                                            "title": "The phoneNumber Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "phoneServiceHours": {
                                            "title": "The phoneServiceHours Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "chatURL": {
                                            "title": "The chatURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "chatServiceHours": {
                                            "title": "The chatServiceHours Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "chatResponseTime": {
                                            "title": "The chatResponseTime Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "email": {
                                            "title": "The email Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "emailServiceHours": {
                                            "title": "The emailServiceHours Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "emailResponseTime": {
                                            "title": "The emailResponseTime Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "documentationURL": {
                                            "title": "The documentationURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "guidesURL": {
                                            "title": "The guidesURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        }
                                    }
                                },
                                "community": {
                                    "title": "The community Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "object",
                                    "required": [
                                        "stackoverflowURL",
                                        "forumURL",
                                        "slackURL",
                                        "twitterURL"
                                    ],
                                    "properties": {
                                        "stackoverflowURL": {
                                            "title": "The stackoverflowURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "forumURL": {
                                            "title": "The forumURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "slackURL": {
                                            "title": "The slackURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        },
                                        "twitterURL": {
                                            "title": "The twitterURL Schema",
                                            "description": "An explanation about the purpose of this instance.",
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        },
                        "observability": {
                            "title": "The observability Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "logsURL",
                                "dashboardURL",
                                "uptimeURL"
                            ],
                            "properties": {
                                "logsURL": {
                                    "title": "The logsURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "dashboardURL": {
                                    "title": "The dashboardURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "uptimeURL": {
                                    "title": "The uptimeURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                }
                            }
                        }
                    }
                },
                "license": {
                    "title": "The license Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "scope",
                        "privacy",
                        "termination",
                        "governance"
                    ],
                    "properties": {
                        "scope": {
                            "title": "The scope Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "definition",
                                "language",
                                "restrictions",
                                "geographicalArea",
                                "permanent",
                                "exclusive",
                                "rights"
                            ],
                            "properties": {
                                "definition": {
                                    "title": "The definition Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "language": {
                                    "title": "The language Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "restrictions": {
                                    "title": "The restrictions Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "geographicalArea": {
                                    "title": "The geographicalArea Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "array",
                                    "items": {}
                                },
                                "permanent": {
                                    "title": "The permanent Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "boolean"
                                },
                                "exclusive": {
                                    "title": "The exclusive Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "boolean"
                                },
                                "rights": {
                                    "title": "The rights Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "array",
                                    "items": {}
                                }
                            }
                        },
                        "privacy": {
                            "title": "The privacy Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "containsPersonalData",
                                "applicaplePrivacyLaws",
                                "dpaURL"
                            ],
                            "properties": {
                                "containsPersonalData": {
                                    "title": "The containsPersonalData Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "boolean"
                                },
                                "applicaplePrivacyLaws": {
                                    "title": "The applicaplePrivacyLaws Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "array",
                                    "items": {}
                                },
                                "dpaURL": {
                                    "title": "The dpaURL Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                }
                            }
                        },
                        "termination": {
                            "title": "The termination Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "terminationConditions",
                                "continuityConditions"
                            ],
                            "properties": {
                                "terminationConditions": {
                                    "title": "The terminationConditions Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "continuityConditions": {
                                    "title": "The continuityConditions Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                }
                            }
                        },
                        "governance": {
                            "title": "The governance Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "object",
                            "required": [
                                "damages",
                                "confidentiality",
                                "applicableLaws",
                                "warranties",
                                "audit",
                                "forceMajeure"
                            ],
                            "properties": {
                                "damages": {
                                    "title": "The damages Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "confidentiality": {
                                    "title": "The confidentiality Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "applicableLaws": {
                                    "title": "The applicableLaws Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "warranties": {
                                    "title": "The warranties Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "audit": {
                                    "title": "The audit Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                },
                                "forceMajeure": {
                                    "title": "The forceMajeure Schema",
                                    "description": "An explanation about the purpose of this instance.",
                                    "type": "string"
                                }
                            }
                        }
                    }
                },
                "dataHolder": {
                    "title": "The dataHolder Schema",
                    "description": "An explanation about the purpose of this instance.",
                    "type": "object",
                    "required": [
                        "taxID",
                        "vatID",
                        "businessDomain",
                        "logoURL",
                        "description",
                        "URL",
                        "telephone",
                        "streetAddress",
                        "postalCode",
                        "addressRegion",
                        "addressLocality",
                        "addressCountry",
                        "aggregateRating",
                        "ratingCount",
                        "slogan",
                        "parentOrganization"
                    ],
                    "properties": {
                        "taxID": {
                            "title": "The taxID Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "vatID": {
                            "title": "The vatID Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "businessDomain": {
                            "title": "The businessDomain Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "logoURL": {
                            "title": "The logoURL Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "description": {
                            "title": "The description Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "URL": {
                            "title": "The URL Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "telephone": {
                            "title": "The telephone Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "streetAddress": {
                            "title": "The streetAddress Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "postalCode": {
                            "title": "The postalCode Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "addressRegion": {
                            "title": "The addressRegion Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "addressLocality": {
                            "title": "The addressLocality Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "addressCountry": {
                            "title": "The addressCountry Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "aggregateRating": {
                            "title": "The aggregateRating Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "ratingCount": {
                            "title": "The ratingCount Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "number"
                        },
                        "slogan": {
                            "title": "The slogan Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        },
                        "parentOrganization": {
                            "title": "The parentOrganization Schema",
                            "description": "An explanation about the purpose of this instance.",
                            "type": "string"
                        }
                    }
                }
            }
        }
    }
}
niilahti commented 1 year ago

Implemented to v2.1