Water Data in the Unified Modeling Language Xitian Cai Center for Research in Water Resources The...

17
Water Data in the Unified Modeling Language Xitian Cai Center for Research in Water Resources The University of Texas at Austin

Transcript of Water Data in the Unified Modeling Language Xitian Cai Center for Research in Water Resources The...

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)

Previous Work

Enterprise Architect

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

Web Method Queries

Space (Site)

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

Generate XML Schema

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

Questions?

Thanks!