{
    "about": {"type":"dict", "required":true, "allow_unknown":true, "schema": {
        "datasetID":{"type":"string", "required":true, "empty": false},
        "datasetName":{"type":"string", "required":true, "empty": false},
        "datasetURI":{"type":"string","required":false},
        "description":{"type":"string","required":false},
        "citation":{"type":"string","required":false},
        "publicationDate":{"type":"string","required":false},
        "humanSubjectsResearch": {"type":"boolean", "required":false},
        "license":{"type":"string", "required":false},
        "source":{"type":"string", "required":false},
        "sourceURI":{"type":"string", "required":false},
        "approximateSize":{"type":"string", "required":false},
        "applicationDomain":{"type":"string","required":false},
        "datasetVersion":{"type":"string", "required":true},
        "datasetSchemaVersion":{"type":"string", "required":true},
        "redacted":{"type":"boolean", "required":false},
        "digest":{"type":"string", "required":false}
    }},

    "dataResources":{"type":"list","required":true,"schema":{"type":"dict","required": true,"allow_unknown":true,"schema":{
        "resID":{"type":"string","required":true},
        "resPath":{"type":"string","required":true},
        "resType":{"type":"string","required":true},
        "resFormat":{"type":"dict", "required":true, "keysrules": {"type":"string"}, "valuesrules": {"type":"list"}},
        "isCollection":{"type":"boolean","required":false,"default":false},
        "columnsCount": {"type":"integer","required":false},
        "columns": {
            "type":"list",
            "required": false,
            "schema": {"type":"dict", "required": true, "allow_unknown":true, "schema": {
                "colIndex":{"type":"integer", "required":true},
                "colName":{"type":"string", "required":true, "empty":false},
                "colDescription":{"type":"string", "required":false},
                "colType":{"required":true, "type":"string"},
                "role":{"type":"list","required":true,"schema":{"type":"string"}},
                "refersTo":{"type": "dict", "required":false, "allow_unknown":true, "schema":{
                    "resID":{"type":"string","required":true},
                    "resObject":{"required":true, "oneof":[
                        {"type":"string"},
                        {"type":"dict", "allow_unknown":true, "schema":{
                            "nodeAttribute":{"type":"string","excludes":["edgeAttribute","columnIndex","columnName"]},
                            "edgeAttribute":{"type":"string","excludes":["nodeAttribute","columnIndex","columnName"]},
                            "columnIndex":{"type":"integer","excludes":["nodeAttribute","edgeAttribute","columnName"]},
                            "columnName":{"type":"string","excludes":["nodeAttribute","edgeAttribute","columnIndex"]}}}
                    ]}
                }},
                "timeGranularity":{"type":"dict", "required":false, "allow_unknown":true, "schema":{
                    "value":{"type":"number", "required":true},
                    "unit":{"type":"string", "required":true}
                }}
        }}
    }}}},

    "qualities":{"type":"list","required":false,"schema":{"type":"dict","required":true,"allow_unknown":true,"schema":{
        "qualName":{"type":"string","required":true},
        "qualValue":{"required":true},
        "qualValueType":{"type":"string","required":true},
        "qualValueUnits":{"type":"string","required":false},
        "restrictedTo":{"type":"dict","required":false,"allow_unknown":true,"schema":{
            "resID":{"type":"string","required":true},
            "resComponent":{"oneof":[
                {"type":"dict","required":false,"allow_unknown":true,"schema":{
                    "columnIndex":{"type":"integer","excludes":["columnName","nodeAttribute","edgeAttribute","selector"]},
                    "columnName":{"type":"string","excludes":["columnIndex","nodeAttribute","edgeAttribute","selector"]},
                    "nodeAttribute":{"type":"string","excludes":["columnIndex","columnName","edgeAttribute","selector"]},
                    "edgeAttribute":{"type":"string","excludes":["columnIndex","columnName","nodeAttribute","selector"]},
                    "selector":{"type":"list","excludes":["columnIndex","columnName","nodeAttribute","edgeAttribute"]}
                }},
                {"type":"string","required":false}
            ]}
        }}
    }}}
}
