citizen-science-association / ppsr-core

PPSR Core standards repsository
GNU General Public License v3.0
24 stars 18 forks source link

Agree on how to extend the basic (core) schema #14

Open dersenv opened 5 years ago

dersenv commented 5 years ago

Once the basic schema is agreed... here a proposal with FAKE extensions (soon to be also in the wiki):

{ "$schema":"http://json-schema.org/draft-07/schema#", "type":"object", "required":[ "Project" ], "properties":{ "Project":{ "$id":"#/properties/Project", "$comment": "Definition as text to be replaced with a URL once available, can we use format:URL?", "definition": "An explanation about the purpose of this instance.", "type":"object", "required":[ "projectCore" ], "properties":{ "projectCore":{ "$id":"#/properties/Project/properties/projectCore", "type":"object", "required":[ "projectGUID" ,"projectName" ,"projectDescription" ,"projectWebPage" ,"projectStartDate" ,"projectEndDate" ,"projectDuration" ,"projectStatus" ], "properties":{ "projectGUID":{ "$id":"#/properties/Project/properties/projectCore/properties/projectGUID" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" }, "projectName":{ "$id":"#/properties/Project/properties/projectCore/properties/projectName" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" }, "projectDescription":{ "$id":"#/properties/Project/properties/projectCore/properties/projectDescription" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" }, "projectWebPage":{ "$id":"#/properties/Project/properties/projectCore/properties/projectWebPage" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" ,"examples":["http://.../csp/topics/..."] }, "projectStartDate":{ "$id":"#/properties/Project/properties/projectCore/properties/projectStartDate" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" ,"format": "date" }, "projectEndDate":{ "$id":"#/properties/Project/properties/projectCore/properties/projectEndDate" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":["null","string"] ,"default":null }, "projectDuration":{ "$id":"#/properties/Project/properties/projectCore/properties/projectDuration" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"number" ,"minimum":0 ,"default":0 }, "projectStatus":{ "$id":"#/properties/Project/properties/projectCore/properties/projectStatus" ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available." ,"type":"string" ,"enum": ["Ongoing", "Ended"]

              }
           }
        },
           "projectExtensions":{
              "$id":"#/properties/Project/properties/projectExtensions"
              ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
              ,"type":"object"
              ,"properties":{
                 "projectDetailedInformation":{
                    "$id":"#/properties/Project/properties/projectExtensions/properties/projectDetailedInformation"
                    ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                    ,"type":"string"
                 },
                 "projectAffiliation":{
                    "$id":"#/properties/Project/properties/projectExtensions/properties/projectAffiliation"
                    ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                    ,"type":"string"
                 },
                 "projectFunding":{
                    "$id":"#/properties/Project/properties/projectExtensions/properties/projectFunding"
                    ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                    ,"type":"object"
                    ,"required":[
                       "fundingProgramName"
                       ,"fundingProgramDescription"
                       ,"fundingProgramWebPage"
                    ],
                    "properties":{
                       "fundingProgramName":{
                          "$id":"#/properties/Project/properties/projectExtensions/properties/projectFunding/properties/fundingProgramName"
                          ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                          ,"type":"string"
                       },
                       "fundingProgramDescription":{
                          "$id":"#/properties/Project/properties/projectExtensions/properties/projectFunding/properties/fundingProgramDescription"
                          ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                          ,"type":"string"
                       },
                       "fundingProgramWebPage":{
                            "$id":"#/properties/Project/properties/projectExtensions/properties/projectFunding/properties/fundingProgramWebPage"
                            ,"definition": "An explanation about the purpose of this instance. Definition as text to be replaced with a URL once available."
                            ,"type":"string"
                       }
                    }
                 }
              }
           }
     }
  }

} }