Data Model View

The SWIM database is designed under the constraints of a NoSQL database managed with MongoDB. This section describes the collection schemas implemented in MongoDB for this project.

Note: Section pending updates according to latest data model upgrades.

Database Catalog

The current data model is composed of the following collections:

  • model-base: Holds base JSON structure of registered models.
  • model-meta: Holds metadata of a registered model.
  • output: Holds a collection of model output metadata. (Description coming soon)
  • parameter2: Holds a collection of model paramater metadata and default values. (Description coming soon)
  • provschema: Holds the basic provenance structure of a model run.
  • userscenario: Holds user defined model executions.

MODEL-META

Stores metadata information of a specific scientific model implementation executable by a modeling software agent. It also provides information regarding model creators, host server and interfacing information.

Primary Representation

MODEL-META Figure

Field Details

Field Type Description
_id xsd:string MongoDB auto-generated unique identifier.
modelName xsd:string Name of the exposed model.
modelDescription xsd:string A short description of what the model does.
dateCreated xsd:datetime Date of the first model release.
dateModified xsd:datetime Date and time of last modification to the model.
softwareAgent xsd:string Software application capable of executing and implementing the model.
license xsd:string The license information for the exposed model.
version xsd:string Provides the version of the base model.
sponsor xsd:string Organization, person or institution that provides funding.
creators Object array Model authors/creators.
creators.name xsd:string Creator full name
creators.department xsd:string A division of a organization such as a government, university, business, or shop, dealing with a specific subject.
creators.organization xsd:string Creator organization name
creators.email xsd:string Electronic mail address for communication.
creators.city xsd:string Named geographical locality
creators.state xsd:string Region associated with the address of an object.
creators.country xsd:string The country name associated with the address of an object.
hostServer Object container Server machine where the base model and corresponding software agent is deployed.
hostServer.serverName xsd:string DNS name of the server.
hostServer.serverIP xsd:string External IP Address of the server.
hostServer.serverAdmin xsd:string Person is charge of administating the server.
hostServer.adminEmail xsd:string Administrator email.
hostServer.serverOwner xsd:string Organization or person that owns the physical server.
serviceInfo Object container Information regarding the exposed webservice of the model.
serviceInfo.serviceURL xsd:string Request URI
serviceInfo.serviceMethod xsd:string http method to invoke a request (EG: POST, GET)
serviceInfo.consumes xsd:string A list of MIME types the service can consume. (E.G: application/json)
serviceInfo.produces xsd:string MIME types produced as a response by the service.
service.isPublic xsd:string If the service is available on the web for public use. (true or false).
serviceInfo.externalDocs Object array Additional external documentation.

JSON Skeleton Representation

{
    "_id" : "",
    "modelName" : "",
    "modelDescription" : "",
    "dateCreated" : "",
    "dateModified" : "",
    "softwareAgent" : "",
    "license" : "",
    "version" : "",
    "sponsor" : "",
    "creators" : [
    {
        "name" : "",
        "department" : "",
        "email" : "",
        "organization" : "",
        "city" : "",
        "state" : "",
        "country" : ""
    }
    ],
    "hostServer" : {
        "serverName" : "",
        "serverIP" : "",
        "serverAdmin" : "",
        "adminEmail" : "",
        "serverOwner" : ""
    },
    "serviceInfo" : {
        "serviceURL" : "",
        "serviceMethod" : "",
        "consumes" : "",
        "produces" : "",
        "isPublic" : "",
        "externalDocs" : [""]
    }
}

MODEL-BASE

Stores a set of default parameter values for a base modeling scenario. Each document provides extended metadata about the scenario such as: name, description, date created and last date modified; a set of model settings: model id, algorithm, method, and finally a set of predefined model inputs: target model id, parameter name, label, unit, default value, default data source, among others. Model-base documents are used to dynamically load default parameter values on the graphical user interface.

Primary Representation

SCENARIO Figure

Field Details

Field Type Description
_id xsd:string MongoDB auto-generated unique identifier.
scenarioName xsd:string Given name of a scenario.
scenarioDescription xsd:string A short description of what the scenario is.
dateCreated xsd:string Date of first scenario specification.
dateModified xsd:datetime Date of last modification to scenario fields.
modelSettings Object array Default general settings of models used for the current scenario.
modelSettings.modelID xsd:string Reference to model-meta document.
modelSettings. ... xsd:string Modeling software specific settings can be added as attributes
modelInputs Object array Array of model inputs.
modelInputs.modelID xsd:string Reference to model-meta document.
modelInputs.paramName xsd:string Parameter name as defined on the modeling code or software agent.
modelInputs.paramCategory xsd:string A class or division to which the parameter is a part of.
modelInputs.paramLabel xsd:string Human readable name for the parameter.
modelInputs.paramUnit xsd:string Particular physical quantity, defined and adopted by convention.
modelInputs.paramDefaultValue Object array A predefined value of a particular parameter.
modelInputs.paramDefaultSource xsd:string A related resource from which the described resource is derived.
modelInputs.maxValue xsd:string The greatest numerical value that the parameter can take.
modelInputs.minValue xsd:string The lowest numerical value that the parameter can take.
modelInputs.structType xsd:string Data structure used on the parameter value field: Scalar: single value Table: 1 to n dimension tables.
modelInputs.structDimension xsd:string Dimension size of the table structure. This field is not required for scalar values.
modelInputs.dataType xsd:string Data type of the defined value. Eg. Integer, double
modelInputs.definitionType xsd:string How the value of the parameter is stablished: Static: hardcoded into the model. Scenario: defined by a specific scenario selection. User: Can be customized by a user.

JSON Skeleton Representation

{
    "_id" : "",
    "scenarioName" : "",
    "scenarioDescription" : "",
    "dateCreated" : "",
    "dateModified" : "",
    "modelSettings" : [
    {
        "modelID" : "",
    }
    ],
    "modelInputs" : [
    {
        "modelID" : "",
        "paramName" : "",
        "paramLabel" : "",
        "paramCategory : "",
        "paramUnit" : "",
        "paramDefaultValue" : "",
        "paramDefaultSource" : "",
        "maxValue" : "",
        "minValue" : "",
        "dataType" : "",
        "structType" : "",
        "structDimension" : "",
        "dataType" : "",
        "definitionType" : ""
    }
    ]
}

USER SCENARIO

Stores a set of user defined scenario metadata, model inputs and requested outputs.

Primary Representation

USER SCENARIO Figure

Field Details

Field Type Description
_id xsd:string MongoDB auto-generated unique identifier.
className xsd:string Morphia mapping java class on webservice.
name xsd:string User defined name of a given projection input.
description xsd:string Short description to describe projection scenario and inputs.
userid xsd:string Reference to user id of the water project website.
baseScenario xsd:string Given name of the scenario taken as base for the current projection.
baseClimateScenario xsd:string Given name of a climate scenario taken as a base for the current projection.
startedAtTime xsd:datetime Date and time when projection was submitted.
endedAtTime xsd:datetime Date and time when model execution finished.
status xsd:string Execution state of submitted projection (queued, running, complete, error).
isPublic xsd:string Flag to determine if the projection is available for public view. (true or false)
modelSettings Object array General settings of models used for the current scenario.
modelSettings.modelID xsd:string Reference to model-meta document.
modelInputs Object array Array of model inputs.
modelInputs.modelID xsd:string Reference to model-meta document.
modelInputs.paramName xsd:string Parameter name as defined on the modeling code or software agent.
modelInputs.paramLabel xsd:string Human readable name for the parameter.
modelInputs.paramUnit xsd:string Particular physical quantity, defined and adopted by convention.
modelInputs.paramDefaultValue Object array A predefined value of a particular parameter.
modelInputs.paramValue Object array User defined value of a particular parameter.
modelInputs.paramDefaultSource xsd:string A related resource from which the described resource is derived.
modelInputs.maxValue xsd:string The greatest numerical value that the parameter can take.
modelInputs.minValue xsd:string The lowest numerical value that the parameter can take.
modelInputs.structType xsd:string Data structure used on the parameter value field: Scalar: single value Table: 1 to n dimension tables.
modelInputs.structDimension xsd:string Dimension size of the table structure. This field is not required for scalar values.
modelInputs.dataType xsd:string Data type of the defined value. Eg. Integer, double
modelInputs.definitionMethod xsd:string How the value of the parameter is stablished: Static: hardcoded into the model. Scenario: defined by a specific scenario selection. User: Can be customized by a user.
modelOutputs Object array
modelOutputs.varName xsd:string Model or software agent name of an output variable.
modelOutputs.varLabel xsd:string Human name of an output variable.
modelOutputs.varDescription xsd:string Detailed information about the variable.
modelOutputs.varCategory xsd:string Class or division to which the variable is part of.
modelOutputs.varValue xsd:string Output value of a particular variable.
modelOutputs.varUnit xsd:string Particular physical quantity, defined and adopted by convention.

JSON Skeleton Representation

{
    "_id" : "",
    "className" : "",
    "name" : "",
    "description" : "",
    "userid" : "",
    "baseScenario" : "",
    "baseClimateScenario" : "",
    "startedAtTime" : "",
    "endedAtTime" : "",
    "status" : "",
    "isPublic" : "",
    "modelSettings" : [
    {
        "modelID" : "",
    }
    ],
"modelInputs" : [
    {
    "modelID" : "",
    "paramName" : "",
    "paramLabel" : "",
    "paramCategory" : "",
    "paramUnit" : "",
    "paramDefaultValue" : "",
    "paramDefaultSource" : "",
    "paramValue" : [""],
    "structType" : "",
    "structDimension" : "",
    "dataType" : "",
    "definitionType" : ""
    }
    ],
"modelOutputs" : [
    {
    "varName" : "",
  "varLabel" : "",
    "varDescription" :"",
    "varCategory" : "",
    "varValue" : [""],
    "varUnit" : "",
    }
    ]
}