Post on 02-Jan-2016
Water Data in the Unified Modeling Language
Xitian Cai
Center for Research in Water Resources
The University of Texas at Austin
CUAHSI-HIS Status
• Facilitate better interoperability and promote better dissemination, understanding and collaboration between water data users
• Make possible access to hydrological data sets by other interested domains
• OGC Hydrology working group; World Meteorological Organization (WMO)
• An international standard• UML
WaterML
Locations
Variable Codes
Date Ranges
GetSiteInfoGetVariableInfoGetValues
WaterOneFlowWeb Service
Client
STORET
NAMNWIS
DataRepositories
Data
DataData
EXTRACTTRANSFORMLOAD
WaterML
WaterML is an XML language for communicating water data
(Maidment, 2007)
eXtensible Markup Language (XML)
• XML was designed to transport and store data
• Environmental Markup Language (EML) • Earth Science Markup Language (ESML)• Mathematical Markup Language (MathML)• Field Data Markup Language (FDML)• Geography Markup Language (GML)
class CuahsiTimeSeries_v1_0
«XSDcomplexType»SiteInfoType
«XSDelement»+ siteName: string+ elevation_m: double [0..1]+ verticalDatum: string [0..1]+ altname: string
«XSDcomplexType»SiteInfoType::siteCode
«XSDattribute»+ defaultId: boolean+ network: normalizedString+ siteID: normalizedString+ agencyCode: normalizedString+ agencyName: normalizedString
string
«XSDsimple...string
«XSDcompl...SiteInfoType::geoLocation
«XSDcomplexType»SiteInfoType::geoLocation::
localSiteXY
«XSDelement»+ X: double+ Y: double+ Z: double [0..1]
«XSDattribute»+ projectionInformation: string
«XSDcomplexType»TsValuesSingleVariableType
«XSDattribute»+ timeZoneShiftApplied: boolean+ count: nonNegativeInteger+ unitsAreConverted: boolean
«XSDcompl...VariableInfoType
«XSDsequence»ModelGroup1
«XSDelement»+ variableName: string [0..1]+ variableDescription: string [0..1]+ NoDataValue: string [0..1]
«XSDcompl...ModelGroup1::
related
«XSDcompl...ModelGroup1::
related::parentID
«XSDcompl...ModelGroup1::
related::relatedID
«XSDcomplexType»ModelGroup1::timeSupport
«XSDelement»+ timeInterval: int [0..1]
«XSDattribute»+ isRegular: boolean
«XSDcomplexType»QueryInfoType
«XSDelement»+ creationTime: dateTime [0..1]+ queryURL: string [0..1]+ querySQL: string [0..1]
«XSDcomplexType»QueryInfoType::criteria
«XSDelement»+ locationParam: string [0..1]+ variableParam: string [0..1]
«XSDcomplexType»QueryInfoType::criteria::
timeParam
«XSDelement»+ beginDateTime: string [0..1]+ endDateTime: string [0..1]
«XSDtopLev...variables
«XSDcomplexT...variables::
ComplexTypeClass1
«XSDattributeGr...VocabularyAttributes
«XSDattribute»+ network: string+ vocabulary: string+ default: boolean
«XSDattributeGroup»DbIdentifiers
«XSDattribute»+ oid: normalizedString+ metadataDateTime: dateTime
«XSDtopLev...timeZoneInfo
«XSDcomplexType»timeZoneInfo::ComplexTypeClass2
«XSDattribute»+ siteUsesDaylightSavingsTime: boolean
«XSDcomplexTy...timeZoneInfo::
ComplexTypeClass2::defaultTimeZone
«XSDcomplexType»timeZoneInfo::
ComplexTypeClass2::daylightSavingsTimeZone
«XSDattributeGroup»ValueAttr
«XSDattribute»+ qualifiers: string+ dateTime: dateTime+ methodID: int+ sourceID: int+ accuracyStdDev: double+ codedVocabulary: boolean+ codedVocabularyTerm: string+ sampleID: int
«XSDattributeGroup»timeZoneAttr
«XSDattribute»+ ZoneAbbreviation: normalizedString+ ZoneOffset: string
«XSDtopLev...optionGroup
«XSDcomplexT...optionGroup::
ComplexTypeClass3
«XSDcomplexT...DocumentationType
token
«XSDunion»DocumentationEnumTypes
«enumeration»DocumentationEnumTypes::
SimpleTypeClass1
funding history processing_level rights summary
«XSDattribut...XLinkAttr
«XSDattribute»+ href: string+ title: string+ show: string
«XSDtopLev...options
«XSDcomplexT...options::
ComplexTypeClass4
«XSDcompl...SourceInfoType
«XSDcomplexType»DataSetInfoType
«XSDelement»+ dataSetIdentifier: string+ dataSetDescription: string
«XSDtopLev...datasetInfo
«XSDcompl...TimePeriodType
«XSDcomplexType»TimeIntervalType
«XSDelement»+ beginDateTime: dateTime+ endDateTime: dateTime
«XSDcomplexType»TimeSingleType
«XSDelement»+ timeSingle: dateTime+ beginDateTime: dateTime+ endDateTime: dateTime
«XSDcomplexType»TimePeriodRealTimeType
«XSDelement»+ realTimeDataPeriod: duration+ beginDateTime: dateTime+ endDateTime: dateTime
«XSDcompl...GeogLocationType
«XSDattribute»+ srs: string
«XSDcompl...LatLonPointType
«XSDtopLev...latLonPoint
«XSDcompl...LatLonBoxType
«XSDtopLev...latLonBox
double
«XSDsimple...Longitude
double
«XSDsimple...Latitude
«XSDcomplexType»seriesCatalogType
«XSDattribute»+ menuGroupName: string+ serviceWsdl: anyURI
«XSDcomplex...seriesCatalogType::
series
«XSDcomplexType»seriesCatalogType::series::
valueCount
«XSDattribute»+ countIsEstimated: boolean
int
«XSDsimple...int
«XSDattributeGroup»offsetAttr
«XSDattribute»+ offsetValue: double+ offsetTypeID: int+ offsetDescription: string+ offsetUnitsAbbreviation: string+ offsetUnitsCode: string
«enumeratio...CensorCodeEnum
lt gt nc nd pnq
«XSDcompl...QualifiersType
«XSDcomplexType»QualifiersType::qualifier
«XSDelement»+ qualifierCode: token
«XSDattribute»+ qualifierID: int
«XSDcompl...TimeSeriesType
«XSDattribute»+ name: string
«XSDtopLevelE...variablesResponse
«XSDtopLevelEl...timeSeriesResponse
«XSDtopLev...sitesResponse
«XSDcompl...NoteType
«XSDattribute»+ type: string
«XSDtopLev...option
«XSDcomplexType»option::ComplexTypeClass5
«XSDattribute»+ name: normalizedString+ optionID: integer+ optionCode: token
«XSDtopLev...variableCode
«XSDcomplexType»variableCode::
ComplexTypeClass6
«XSDattribute»+ variableID: integer
«XSDtopLev...units
«XSDcomplexT...units::
ComplexTypeClass7
«XSDattributeGroup»unitsAttr
«XSDattribute»+ unitsAbbreviation: normalizedString+ unitsCode: token
«enumeration»UnitsTypeEnum
Angle Area Dimensionless Energy Energy Flux Flow Force Frequency Length Light Mass Permeability Power Pressure/Stress Resolution Scale Temperature Time Velocity Volume
«XSDcomplexTy...ValueSingleVariable
decimal
«XSDsimple...decimal
«XSDtopLev...qualifier
«XSDcomplexType»QualifiersType::qualifier::
ComplexTypeClass8
«XSDattribute»+ qualifierCode: token+ qualifierID: integer
anyType
«XSDtopLev...extension
«XSDcomplexType»VariablesResponseType
«XSDcomplexType»TimeSeriesResponseType
«XSDcomplexTyp...SiteInfoResponseType
«XSDtopLev...site
«XSDcomplexT...site::
ComplexTypeClass9
«enumeration»QualityControlLevelEnum
Raw data Quality controlled data Derived products Interpreted products Knowledge products Unknown
«XSDtopLevel...qualityControlLevel
«XSDcomplexType»qualityControlLevel::ComplexTypeClass10
«XSDelement»+ qualityControlLevelID: normalizedString
«XSDattribute»+ qualityControlLevelCode: string
«XSDcomplexType»QualityControlLevelType
«XSDattribute»+ qualityControlLevelID: int
«enumeration»SampleMediumEnum
Surface Water Ground Water Sediment Soil Air Tissue Precipitation Unknown Other Snow Not Relevant
«enumeration»generalCategoryEnum
Water Quality Climate Hydrology Geology Biota Unknown Instrumentation
«enumeration»dataTypeEnum
Continuous Instantaneous Cumulative Incremental Average Maximum Minimum Constant Over Interval Categorical Best Easy Systematic Estimator Unknown Variance Median Mode Best Easy Systematic Estimator Standard Deviation Skewness Equivalent Mean Sporadic Unknown
«enumeratio...sampleTypeEnum
FD FF FL LF GW PB PD PE PI PW RE SE SR SS SW TE TI TW VE VI VW Grab Unknown No Sample
«enumeration»valueTypeEnum
Field Observation Sample Model Simulation Result Derived Value Unknown
«XSDcomplexType»UnitsType
«XSDelement»+ UnitName: string+ UnitDescription: string+ UnitAbbreviation: string
«XSDattribute»+ UnitID: int
«XSDcomplexType»MethodType
«XSDelement»+ MethodDescription: string+ MethodLink: string
«XSDattribute»+ methodID: int
«XSDcomplexType»SampleType
«XSDelement»+ labSampleCode: string
«XSDattribute»+ sampleID: int
«XSDcomplexType»LabMethodType
«XSDelement»+ labName: string [0..1]+ labOrganization: string [0..1]+ LabMethodName: string [0..1]+ labMethodDescription: string [0..1]+ labMethodLink: string
«XSDattribute»+ labMethodID: int
«XSDcomplexType»SourceType
«XSDelement»+ Organization: string [0..1]+ SourceDescription: string [0..1]+ SourceLink: anyURI [0..1]
«XSDattribute»+ sourceID: int
«XSDcomplexType»ContactInformationType
«XSDelement»+ ContactName: string+ TypeOfContact: string [0..1]+ Phone: string [0..1]+ Email: string [0..1]+ Address: anyType [0..1]
«XSDcomplexType»MetaDataType
«XSDelement»+ TopicCategory: string [0..1]+ Title: string [0..1]+ Abstract: string [0..1]+ ProfileVersion: string [0..1]+ MetadataLink: anyURI [0..1]
«XSDcomplexType»OffsetType
«XSDelement»+ offsetValue: float+ offsetDescription: string+ offsetIsVertical: boolean [0..1]+ offsetHorizDirectionDegrees: int [0..1]
«XSDattribute»+ offsetTypeID: int
«XSDextension»
«XSDextension»
+note 1..*
1..1
+variable
0..*
+censorCode«XSDattribute»
+qualityControlLevel«XSDattribute»
1..*+type«XSDattribute»
1..1
0..1
0..*
0..1
+note
0..*
+dataSetLocation
0..11..1
«XSDextension» «XSDextension» «XSDextension»
«XSDextension»
+latitude 1..1 +longitude 1..1
«XSDextension»
«XSDextension»
0..1 +geogLocation 1..1
+note
0..*+note 0..*
1..1
+value
1..*0..*0..*
+method
0..*
+unit
0..1
+offset
0..*
+south 1..11..*
+valueType
0..1
+dataType
0..1+generalCategory
0..1
+sampleMedium 0..1
0..10..1
+note
0..*
«XSDextension»«XSDextension»
+source
0..*
+queryInfo
1..1
+unitsType«XSDattribute»
«XSDextension»
«XSDextension»
+queryInfo 1..1
1..1
«XSDextension»
+timeSeries
1..1
0..*
+siteInfo
1..1
+seriesCatalog 1..*
1..1
«XSDextension»
+UnitType
1..1
+SampleType
1..1
+LabMethod 0..1
+Metadata 0..1+ContactInformation 0..1
+queryInfo 1..1
+Source 0..1
+west 1..1+north 1..1 +east 1..1
+note
0..*+dataType
0..1
+variable
1..1
«XSDextension»
+variableTimeInterval
1..1
+valueType 0..1+generalCategory 0..1
+Method
0..1
1..1 +QualityControlLevel 0..1+sourceInfo 1..1
+variable
1..1 +values
1..1
«XSDextension»«XSDextension»
«XSDextension»
+sampleMedium 0..1
class CuahsiTimeSeries_v1_0C...
Time and Measured Values
UnitsWeb Method Queries
Variables
Space
«XSDcomplexType»SiteInfoType
«XSDelement»+ altname: string+ elevation_m: double [0..1]+ siteName: string+ verticalDatum: string [0..1]
«XSDcomplexType»TsValuesSingleVariableType
«XSDattribute»+ count: nonNegativeInteger+ timeZoneShiftApplied: boolean+ unitsAreConverted: boolean
«XSDcomplexTyp...VariableInfoType
«XSDsequence»ModelGroup1
«XSDelement»+ NoDataValue: string [0..1]+ variableDescription: string [0..1]+ variableName: string [0..1]
«XSDcomplexType»ModelGroup1::
timeSupport
«XSDattribute»+ isRegular: boolean
«XSDelement»+ timeInterval: int [0..1]
«XSDcomplexType»QueryInfoType
«XSDelement»+ creationTime: dateTime [0..1]+ querySQL: string [0..1]+ queryURL: string [0..1]
«XSDtopLev...variables
«XSDcomplexTyp...variables::
ComplexTypeClass1
«XSDattributeGroup»DbIdentifiers
«XSDattribute»+ metadataDateTime: dateTime+ oid: normalizedString
«XSDtopLevelElement»timeZoneInfo
«XSDtopLevelElement»options
«XSDcomplexType»SourceInfoType
«XSDcomplexType»DataSetInfoType
«XSDelement»+ dataSetDescription: string+ dataSetIdentif ier: string
«XSDtopLevelElement»datasetInfo
«XSDcomplexType»TimePeriodType
«XSDcomplexType»GeogLocationType
«XSDattribute»+ srs: string
«XSDcomplexType»seriesCatalogType
«XSDattribute»+ menuGroupName: string+ serviceWsdl: anyURI
«XSDcomplexType»seriesCatalogType::series
«XSDcomplexType»TimeSeriesType
«XSDattribute»+ name: string
«XSDtopLevelE...variablesResponse
«XSDtopLevelElem...timeSeriesResponse
«XSDtopLevelElement»sitesResponse
«XSDtopLevelElement»variableCode
string
«XSDcomplexType»units::
ComplexTypeClass7
«XSDattributeGroup»unitsAttr
«XSDattribute»+ unitsAbbreviation: normalizedString+ unitsCode: token
«enumeration»UnitsTypeEnum
Angle Area Dimensionless Energy Energy Flux Flow Force Frequency Length Light Mass Permeability Pow er Pressure/Stress Resolution Scale Temperature Time Velocity Volume
decimal
«XSDcomplexType»ValueSingleVariable
«XSDtopLevelElement»qualifier
«XSDcomplexType»VariablesResponseType
«XSDcomplexType»TimeSeriesResponseType
«XSDcomplexType»SiteInfoResponseType
«XSDtopLevelElement»site
«XSDcomplexType»site::ComplexTypeClass9
«XSDtopLevelElement»qualityControlLevel
string
«XSDcomplexType»QualityControlLevelType
«XSDattribute»+ qualityControlLevelID: int
«enumeration»SampleMediumEnum
Surface Water Ground Water Sediment Soil Air Tissue Precipitation Unknow n Other Snow Not Relevant
«enumeration»generalCategoryEnum
Water Quality Climate Hydrology Geology Biota Unknow n Instrumentation
«enumeration»dataTypeEnum
Continuous Instantaneous Cumulative Incremental Average Maximum Minimum Constant Over Interval Categorical Best Easy Systematic Estimator Unknow n Variance Median Mode Best Easy Systematic Estimator Standard Deviation Skew ness Equivalent Mean Sporadic Unknow n
«enumeration»valueTypeEnum
Field Observation Sample Model Simulation Result Derived Value Unknow n
«XSDcomplexType»UnitsType
«XSDelement»+ UnitAbbreviation: string+ UnitDescription: string+ UnitName: string
«XSDattribute»+ UnitID: int
«XSDcomplexType»MethodType
«XSDelement»+ MethodDescription: string+ MethodLink: string
«XSDattribute»+ methodID: int
«XSDcomplexType»SourceType
«XSDelement»+ Organization: string [0..1]+ SourceDescription: string [0..1]+ SourceLink: anyURI [0..1]
«XSDattribute»+ sourceID: int
«XSDcomplexType»OffsetType
«XSDelement»+ offsetDescription: string+ offsetHorizDirectionDegrees: int [0..1]+ offsetIsVertical: boolean [0..1]+ offsetValue: f loat
«XSDattribute»+ offsetTypeID: int
1..*
+dataSetLocation 0..1 0..1
«XSDextension»
+variable
0..*
+unit 0..1
0..1
+sampleMedium
0..1
+generalCategory
0..1
«XSDextension»
+valueType
0..1
+variableTimeInterval
1..1
+offset 0..*
+source
0..*
+method
0..*
0..*
0..*
+value
1..*
0..1
+dataType
0..1
+seriesCatalog 1..*
+siteInfo
1..1
0..*
+queryInfo
1..1
+timeSeries 1..1
+queryInfo
1..1
1..1
+queryInfo
1..1
+unitsType«XSDattribute»
+dataType
0..1
+variable
1..1
+values
1..1
+variable 1..1
+sourceInfo
1..1
+QualityControlLevel 0..1
+Source 0..1
+Method
0..1
+sampleMedium
0..1
+generalCategory
0..1
+valueType
0..1
+UnitType
1..1
class ODM...
Data Qualifiers
Data Collection Methods
Data Sources
Value Grouping
ODM Version
Observation Values
Variables
OffsetsUnits
Monitoring Site Locations
Categories
«column»*FK VariableID: int* DataValue: f loat* CategoryDescription: nvarchar(MAX)
«FK»+ FK_Categories_Variables(int)
CensorCodeCV
«column»*PK Term: nvarchar(50) Definition: nvarchar(MAX)
«PK»+ PK_CensorCodeCV_Term(nvarchar)
«check»+ CK_CensorCodeCV_Term()
DataTypeCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_DataTypeCV_Term(nvarchar)
«check»+ CK_DataTypeCV_Term()
DataValues
«column»*PK ValueID: int* DataValue: f loat ValueAccuracy: f loat* LocalDateTime: datetime* UTCOffset: f loat* DateTimeUTC: datetime*FK SiteID: int*FK VariableID: int OffsetValue: f loat FK OffsetTypeID: int*FK CensorCode: nvarchar(50) = ('nc') FK Qualif ierID: int*FK MethodID: int = ((0))*FK SourceID: int FK SampleID: int DerivedFromID: int*FK QualityControlLevelID: int = ((-9999))
«PK»+ PK_DataValues_ValueID(int)
«unique»+ UNIQUE_DataValues(f loat, f loat, datetime, f loat, datetime, int, int, f loat, int, nvarchar, int, int, int, int, int, int)
«FK»+ FK_DataValues_CensorCodeCV(nvarchar)+ FK_DataValues_Methods(int)+ FK_DataValues_OffsetTypes(int)+ FK_DataValues_Qualif iers(int)+ FK_DataValues_QualityControlLevels(int)+ FK_DataValues_Samples(int)+ FK_DataValues_Sites(int)+ FK_DataValues_Sources(int)+ FK_DataValues_Variables(int)
DerivedFrom
«column»* DerivedFromID: int*FK ValueID: int
«FK»+ FK_DerivedFrom_DataValues(int)
GeneralCategoryCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_GeneralCategoryCV_Term(nvarchar)
«check»+ CK_GeneralCategoryCV_Term()
GroupDescriptions
«column»*PK GroupID: int GroupDescription: nvarchar(MAX)
«PK»+ PK_GroupDescriptions_GroupID(int)
Groups
«column»*FK GroupID: int*FK ValueID: int
«FK»+ FK_Groups_DataValues(int)+ FK_Groups_GroupDescriptions(int)
ISOMetadata
«column»*PK MetadataID: int*FK TopicCategory: nvarchar(255) = ('Unknow n')* Title: nvarchar(255) = ('Unknow n')* Abstract: nvarchar(MAX) = ('Unknow n')* ProfileVersion: nvarchar(255) = ('Unknow n') MetadataLink: nvarchar(500)
«PK»+ PK_ISOMetadata_MetadataID(int)
«check»+ CK_ISOMetadata_Title()+ CK_ISOMetadata_ProfileVersion()
«FK»+ FK_ISOMetadata_TopicCategoryCV(nvarchar)
LabMethods
«column»*PK LabMethodID: int* LabName: nvarchar(255) = ('Unknow n')* LabOrganization: nvarchar(255) = ('Unknow n')* LabMethodName: nvarchar(255) = ('Unknow n')* LabMethodDescription: nvarchar(MAX) = ('Unknow n') LabMethodLink: nvarchar(500)
«PK»+ PK_LabMethods_LabMethodID(int)
«check»+ CK_LabMethods_LabName()+ CK_LabMethods_LabOrganization()+ CK_LabMethods_LabMethodName()
Methods
«column»*PK MethodID: int* MethodDescription: nvarchar(MAX) MethodLink: nvarchar(500)
«PK»+ PK_Methods_MethodID(int)
ODMVersion
«column»* VersionNumber: nvarchar(50)
«check»+ CK_ODMVersion_VersionNumber()
OffsetTypes
«column»*PK OffsetTypeID: int*FK OffsetUnitsID: int* OffsetDescription: nvarchar(MAX)
«PK»+ PK_OffsetTypes_OffsetTypeID(int)
«FK»+ FK_OffsetTypes_Units(int)
Qualifiers
«column»*PK Qualif ierID: int Qualif ierCode: nvarchar(50)* Qualif ierDescription: nvarchar(MAX)
«PK»+ PK_Qualif iers_Qualif ierID(int)
«check»+ CK_Qualif iers_Qualif ierCode()
QualityControlLevels
«column»*PK QualityControlLevelID: int* QualityControlLevelCode: nvarchar(50)* Definition: nvarchar(255)* Explanation: nvarchar(MAX)
«PK»+ PK_QualityControlLevels_QualityControlLevelID(int)
«check»+ CK_QualityControlLevels_QualityControlLevelCode()+ CK_QualityControlLevels_Definition()
SampleMediumCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_SampleMediumCV_Term(nvarchar)
«check»+ CK_SampleMediumCV_Term()
Samples
«column»*PK SampleID: int*FK SampleType: nvarchar(255) = ('Unknow n')* LabSampleCode: nvarchar(50)*FK LabMethodID: int = ((0))
«PK»+ PK_Samples_SampleID(int)
«check»+ CK_Samples_LabSampleCode()
«FK»+ FK_Samples_LabMethods(int)+ FK_Samples_SampleTypeCV(nvarchar)
SampleTypeCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_SampleTypeCV_Term(nvarchar)
«check»+ CK_SampleTypeCV_Term()
SeriesCatalog
«column»*PK SeriesID: int SiteID: int SiteCode: nvarchar(50) SiteName: nvarchar(255) VariableID: int VariableCode: nvarchar(50) VariableName: nvarchar(255) Speciation: nvarchar(255) VariableUnitsID: int VariableUnitsName: nvarchar(255) SampleMedium: nvarchar(255) ValueType: nvarchar(255) TimeSupport: f loat TimeUnitsID: int TimeUnitsName: nvarchar(255) DataType: nvarchar(255) GeneralCategory: nvarchar(255) MethodID: int MethodDescription: nvarchar(MAX) SourceID: int Organization: nvarchar(255) SourceDescription: nvarchar(MAX) Citation: nvarchar(MAX) QualityControlLevelID: int QualityControlLevelCode: nvarchar(50) BeginDateTime: datetime EndDateTime: datetime BeginDateTimeUTC: datetime EndDateTimeUTC: datetime ValueCount: int
«PK»+ PK_SeriesCatalog_SeriesID(int)
Sites
«column»*PK SiteID: int* SiteCode: nvarchar(50)* SiteName: nvarchar(255)* Latitude: f loat* Longitude: f loat*FK LatLongDatumID: int = ((0)) Elevation_m: f loat FK VerticalDatum: nvarchar(255) LocalX: f loat LocalY: f loat FK LocalProjectionID: int PosAccuracy_m: f loat State: nvarchar(255) County: nvarchar(255) Comments: nvarchar(MAX)
«PK»+ PK_Sites_SiteID(int)
«unique»+ AK_Sites_SiteCode(nvarchar)
«check»+ CK_Sites_SiteCode()+ CK_Sites_SiteName()+ CK_Sites_Latitude()+ CK_Sites_Longitude()+ CK_Sites_State()+ CK_Sites_County()
«FK»+ FK_Sites_SpatialReferences(int)+ FK_Sites_SpatialReferences1(int)+ FK_Sites_VerticalDatumCV(nvarchar)
Sources
«column»*PK SourceID: int* Organization: nvarchar(255)* SourceDescription: nvarchar(MAX) SourceLink: nvarchar(500)* ContactName: nvarchar(255) = ('Unknow n')* Phone: nvarchar(255) = ('Unknow n')* Email: nvarchar(255) = ('Unknow n')* Address: nvarchar(255) = ('Unknow n')* City: nvarchar(255) = ('Unknow n')* State: nvarchar(255) = ('Unknow n')* ZipCode: nvarchar(255) = ('Unknow n')* Citation: nvarchar(MAX) = ('Unknow n')*FK MetadataID: int = ((0))
«PK»+ PK_Sources_SourceID(int)
«check»+ CK_Sources_Organization()+ CK_Sources_ContactName()+ CK_Sources_Phone()+ CK_Sources_Email()+ CK_Sources_Address()+ CK_Sources_City()+ CK_Sources_State()+ CK_Sources_ZipCode()
«FK»+ FK_Sources_ISOMetaData(int)
SpatialReferences
«column»*PK SpatialReferenceID: int SRSID: int* SRSName: nvarchar(255) IsGeographic: bit Notes: nvarchar(MAX)
«PK»+ PK_SpatialReferences_SpatialReferenceID(int)
«check»+ CK_SpatialReferences_SRSName()
SpeciationCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_SpeciationCV_Term(nvarchar)
«check»+ CK_SpeciationCV_Term()
sysdiagrams
«column»* name: nvarchar(128)* principal_id: int*PK diagram_id: int version: int definition: varbinary(MAX)
«PK»+ PK__sysdiagrams__3A81B327(int)
«unique»+ UK_principal_name(int, nvarchar)
TopicCategoryCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_TopicCategoryCV_Term(nvarchar)
«check»+ CK_TopicCategoryCV_Term()
Units
«column»*PK UnitsID: int* UnitsName: nvarchar(255)* UnitsType: nvarchar(255)* UnitsAbbreviation: nvarchar(255)
«PK»+ PK_Units_UnitsID(int)
«check»+ CK_Units_UnitsName()+ CK_Units_UnitsType()+ CK_Units_UnitsAbbreviation()
ValueTypeCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_ValueTypeCV_Term(nvarchar)
«check»+ CK_ValueTypeCV_Term()
VariableNameCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_VariableNameCV_Term(nvarchar)
«check»+ CK_VariableNameCV_Term()
Variables
«column»*PK VariableID: int* VariableCode: nvarchar(50)*FK VariableName: nvarchar(255)*FK Speciation: nvarchar(255) = ('Not Applicable')*FK VariableUnitsID: int*FK SampleMedium: nvarchar(255) = ('Unknow n')*FK ValueType: nvarchar(255) = ('Unknow n')* IsRegular: bit = ((0))* TimeSupport: f loat = ((0))*FK TimeUnitsID: int = ((103))*FK DataType: nvarchar(255) = ('Unknow n')*FK GeneralCategory: nvarchar(255) = ('Unknow n')* NoDataValue: f loat = ((-9999))
«PK»+ PK_Variables_VariableID(int)
«unique»+ AK_Variables_VariableCode(nvarchar)
«check»+ CK_Variables_VariableCode()
«FK»+ FK_Variables_DataTypeCV(nvarchar)+ FK_Variables_GeneralCategoryCV(nvarchar)+ FK_Variables_SampleMediumCV(nvarchar)+ FK_Variables_SpeciationCV(nvarchar)+ FK_Variables_Units(int)+ FK_Variables_Units1(int)+ FK_Variables_ValueTypeCV(nvarchar)+ FK_Variables_VariableNameCV(nvarchar)
VerticalDatumCV
«column»*PK Term: nvarchar(255) Definition: nvarchar(MAX)
«PK»+ PK_VerticalDatumCV_Term(nvarchar)
«check»+ CK_VerticalDatumCV_Term()
«stored procedures»OD
«proc»+ sp_alterdiagram(sysname(128), int, int, varbinary)+ sp_creatediagram(sysname(128), int, int, varbinary)+ sp_dropdiagram(sysname(128), int)+ sp_helpdiagramdefinition(sysname(128), int)+ sp_helpdiagrams(sysname(128), int)+ sp_renamediagram(sysname(128), int, sysname(128))+ sp_upgraddiagrams()+ spUpdateSeriesCatalog()
+FK_Samples_LabMethods
0..*
(LabMethodID =LabMethodID)
+PK_LabMethods_LabMethodID 1
+FK_DataValues_CensorCodeCV 0..*
(CensorCode =Term)
+PK_CensorCodeCV_Term 1
+FK_DataValues_Methods
0..*
(MethodID =MethodID)
+PK_Methods_MethodID 1+FK_DataValues_OffsetTypes
0..*(OffsetTypeID=OffsetTypeID)
+PK_OffsetTypes_OffsetTypeID
1
+FK_DataValues_Qualif iers
0..*
(Qualif ierID =Qualif ierID)
+PK_Qualif iers_Qualif ierID
1
+FK_DataValues_QualityControlLevels
0..*
(QualityControlLevelID=QualityControlLevelID)
+PK_QualityControlLevels_QualityControlLevelID
1
+FK_DataValues_Samples0..*
(SampleID =SampleID)
+PK_Samples_SampleID
1
+FK_DataValues_Sites
0..*(SiteID =SiteID)
+PK_Sites_SiteID
1
+FK_DataValues_Sources
0..*(SourceID =SourceID)
+PK_Sources_SourceID
1
+FK_DataValues_Variables
0..*
(VariableID =VariableID)
+PK_Variables_VariableID
1 +FK_DerivedFrom_DataValues 0..*
(ValueID =ValueID)
+PK_DataValues_ValueID 1
+FK_Groups_DataValues
0..*
(ValueID =ValueID)
+PK_DataValues_ValueID 1
+FK_Groups_GroupDescriptions
0..*
(GroupID =GroupID)
+PK_GroupDescriptions_GroupID
1
+FK_Categories_Variables 0..*
(VariableID =VariableID)
+PK_Variables_VariableID 1
+FK_OffsetTypes_Units
0..*(OffsetUnitsID =UnitsID)
+PK_Units_UnitsID
1
+FK_Variables_VariableNameCV 0..*(VariableName =Term)
+PK_VariableNameCV_Term
1
+FK_Samples_SampleTypeCV
0..* (SampleType =Term)
+PK_SampleTypeCV_Term
1
+FK_Sites_SpatialReferences
0..*(LatLongDatumID =SpatialReferenceID)
+PK_SpatialReferences_SpatialReferenceID
1
+FK_Sites_SpatialReferences1
0..*(LocalProjectionID=SpatialReferenceID)
+PK_SpatialReferences_SpatialReferenceID
1
+FK_Sites_VerticalDatumCV
0..*(VerticalDatum =Term)
+PK_VerticalDatumCV_Term
1
+FK_Sources_ISOMetaData
0..*(MetadataID =MetadataID)
+PK_ISOMetadata_MetadataID
1
+FK_Variables_DataTypeCV
0..*
(DataType = Term)
+PK_DataTypeCV_Term
1
+FK_Variables_GeneralCategoryCV
0..*
(GeneralCategory = Term)
+PK_GeneralCategoryCV_Term
1
+FK_Variables_SampleMediumCV
0..*(SampleMedium = Term)
+PK_SampleMediumCV_Term
1
+FK_Variables_SpeciationCV
0..*(Speciation = Term)
+PK_SpeciationCV_Term
1
+FK_Variables_Units
0..*
(VariableUnitsID =UnitsID)
+PK_Units_UnitsID
1
+FK_Variables_Units1
0..*
(TimeUnitsID =UnitsID)
+PK_Units_UnitsID
1
+FK_Variables_ValueTypeCV 0..*
(ValueType = Term)
+PK_ValueTypeCV_Term
1
+FK_ISOMetadata_TopicCategoryCV
0..*(TopicCategory =Term)
+PK_TopicCategoryCV_Term
1
Conclusion
• UML provide a standard platform to build and visualize a system's architectural blueprints
• Enterprise Architect is powerful dealing with diagram and code– C, C++, C#, Delphi, Java, PHP, Python, Visual Basic and
VB.NET
• It is an opportunity to create international standard for hydrological data
• This term project currently don’t relate to GIS