@startuml
hide methods
skinparam groupInheritance 2
skinparam class {
    ArrowColor Black
    BorderColor Black
    BackgroundColor<<master-data>> LightSalmon
    BackgroundColor<<work-product-component>> Gold
    BackgroundColor<<abstract>> LightSteelBlue
    BackgroundColor<<dataset>> Ivory
    BackgroundColor<<reference-data>> Turquoise
    BackgroundColor<<Abstraction>> LightSkyBlue
    BackgroundColor<<error>> Red
    BackgroundColor<<Activity>> LightSkyBlue
    BackgroundColor<<ReferenceType>> LightSkyBlue
    BackgroundColor<<WorkProductComponent>> LightSkyBlue
    BackgroundColor<<Project>> LightSkyBlue
    BackgroundColor<<File>> LightSkyBlue
    BackgroundColor<<FileCollection>> LightSkyBlue
    BackgroundColor<<MasterData>> LightSkyBlue
    BackgroundColor<<nested array>> WhiteSmoke
    BackgroundColor<<nested>> WhiteSmoke
    packageStyle rectangle
}
package "RockFluidUnitInterpretation Outgoing Relationships View" <<rectangle>>
{
class "<size:48>RockFluidUnitInterpretation</size>" as RockFluidUnitInterpretation <<work-product-component>>
class "AnyGroupTypeObject" <<any-group-type>>
abstract "LineageAssertions[]" <<nested array>>
"RockFluidUnitInterpretation" *-- "*" "LineageAssertions[]"
"LineageAssertions[]" --> "1" "AnyGroupTypeObject" : "ID"
class "AnyDataset" <<dataset>>
abstract "Artefacts[]" <<nested array>>
"RockFluidUnitInterpretation" *-- "*" "Artefacts[]"
"Artefacts[]" --> "1" "AnyDataset" : "ResourceID"
"RockFluidUnitInterpretation" --> "*" "AnyDataset" : "Datasets[]"
class "Basin" <<master-data>>
abstract "GeoContexts[]" <<nested array>>
"RockFluidUnitInterpretation" *-- "*" "GeoContexts[]"
"GeoContexts[]" --> "1" "Basin" : "BasinID"
class "BoundaryFeature" <<master-data>>
"RockFluidUnitInterpretation" --> "1" "BoundaryFeature" : "FeatureID"
class "Field" <<master-data>>
"GeoContexts[]" --> "1" "Field" : "FieldID"
class "GeoPoliticalEntity" <<master-data>>
"GeoContexts[]" --> "1" "GeoPoliticalEntity" : "GeoPoliticalEntityID"
class "ModelFeature" <<master-data>>
"RockFluidUnitInterpretation" --> "1" "ModelFeature" : "FeatureID"
class "Organisation" <<master-data>>
abstract "TechnicalAssurances[]" <<nested array>>
"RockFluidUnitInterpretation" *-- "*" "TechnicalAssurances[]"
abstract "Reviewers[]" <<nested array>>
"TechnicalAssurances[]" *-- "*" "Reviewers[]"
"Reviewers[]" --> "1" "Organisation" : "OrganisationID"
class "Play" <<master-data>>
"GeoContexts[]" --> "1" "Play" : "PlayID"
class "Prospect" <<master-data>>
"GeoContexts[]" --> "1" "Prospect" : "ProspectID"
class "RockVolumeFeature" <<master-data>>
"RockFluidUnitInterpretation" --> "1" "RockVolumeFeature" : "FeatureID"
class "LocalBoundaryFeature" <<work-product-component>>
"RockFluidUnitInterpretation" --> "1" "LocalBoundaryFeature" : "FeatureID"
class "LocalModelFeature" <<work-product-component>>
"RockFluidUnitInterpretation" --> "1" "LocalModelFeature" : "FeatureID"
class "LocalRockVolumeFeature" <<work-product-component>>
"RockFluidUnitInterpretation" --> "1" "LocalRockVolumeFeature" : "FeatureID"

class "Reference Data Relationships" <<reference-data>> {
==
"data.Artefacts[].RoleID" → ArtefactRole
==
"data.DomainTypeID" → DomainType
"data.FluidPhaseTypeID" → FluidPhaseType
==
"data.GeoContexts[].GeoTypeID" → BasinType
"data.GeoContexts[].GeoTypeID" → GeoPoliticalEntityType
"data.GeoContexts[].GeoTypeID" → PlayType
"data.GeoContexts[].GeoTypeID" → ProspectType
==
"data.GeologicUnitShapeTypeID" → GeologicUnitShapeType
==
"data.LineageAssertions[].LineageRelationshipType" → LineageRelationshipType
==
"data.LithologyTypeID" → LithologyType
==
"data.SpatialArea.AsIngestedCoordinates.CoordinateReferenceSystemID" → CoordinateReferenceSystem
"data.SpatialArea.AsIngestedCoordinates.VerticalCoordinateReferenceSystemID" → CoordinateReferenceSystem
"data.SpatialArea.AsIngestedCoordinates.VerticalUnitID" → UnitOfMeasure
==
"data.SpatialArea.QualitativeSpatialAccuracyTypeID" → QualitativeSpatialAccuracyType
"data.SpatialArea.QuantitativeAccuracyBandID" → QuantitativeAccuracyBand
"data.SpatialArea.SpatialGeometryTypeID" → SpatialGeometryType
"data.SpatialArea.SpatialParameterTypeID" → SpatialParameterType
==
"data.SpatialPoint.AsIngestedCoordinates.CoordinateReferenceSystemID" → CoordinateReferenceSystem
"data.SpatialPoint.AsIngestedCoordinates.VerticalCoordinateReferenceSystemID" → CoordinateReferenceSystem
"data.SpatialPoint.AsIngestedCoordinates.VerticalUnitID" → UnitOfMeasure
==
"data.SpatialPoint.QualitativeSpatialAccuracyTypeID" → QualitativeSpatialAccuracyType
"data.SpatialPoint.QuantitativeAccuracyBandID" → QuantitativeAccuracyBand
"data.SpatialPoint.SpatialGeometryTypeID" → SpatialGeometryType
"data.SpatialPoint.SpatialParameterTypeID" → SpatialParameterType
==
"data.TechnicalAssurances[].AcceptableUsage[].WorkflowPersona" → WorkflowPersonaType
"data.TechnicalAssurances[].AcceptableUsage[].WorkflowUsage" → WorkflowUsageType
==
"data.TechnicalAssurances[].Reviewers[].RoleTypeID" → ContactRoleType
==
"data.TechnicalAssurances[].TechnicalAssuranceTypeID" → TechnicalAssuranceType
==
"data.TechnicalAssurances[].UnacceptableUsage[].WorkflowPersona" → WorkflowPersonaType
"data.TechnicalAssurances[].UnacceptableUsage[].WorkflowUsage" → WorkflowUsageType
}
"RockFluidUnitInterpretation" .up.> "Reference Data Relationships"
abstract "AbstractWPCGroupType" <<Abstraction>>
"RockFluidUnitInterpretation" -right-|>  "AbstractWPCGroupType"
}
@enduml