@startuml

' Resource Class Definition
class Resource {
  + identifier : xsd:anyURI
  + title : rdfs:Literal
  + description : rdfs:Literal
  + publisher : Agent
  + creator : Agent
  + modified : xsd:date
  + version : rdfs:Literal
  + language : rdfs:Literal
  + license : xsd:anyURI
  + rights : rdfs:Literal
}

' Dataset Class Definition
class Dataset {
  + productGroup : rdfs:Literal
  + productGroupURI : xsd:anyURI
  + productGroupName : rdfs:Literal
  + productType : rdfs:Literal
  + productTypeURI : xsd:anyURI
  + productTypeName : rdfs:Literal
  + theme : rdfs:Literal
  + accessURL : xsd:anyURI
  + accrualPeriodicity : rdfs:Literal
  + referenceQuantity : rdfs:Literal
  + location : GeoNamesFeature
  + statisticalMethod : xsd:anyURI
  + descriptiveStatistics : rdfs:Literal
  + startDate : xsd:date
  + endDate : xsd:date
  + hasObservation : Observation
}

' Observation Class Definition
class Observation {
  + date : xsd:date
  + price : xsd:float
  + currency : xsd:string
}

' Agent Class Definition
class Agent {
  + name : rdfs:Literal
  + homepage : xsd:anyURI
  + email : rdfs:Literal
}

' GeoNamesFeature Class Definition
class GeoNamesFeature {
  + geoNamesName : rdfs:Literal
  + geoNamesID : xsd:anyURI
}

' Relationships
Resource --|> Dataset
Dataset --> Observation : hasObservation
Dataset --> GeoNamesFeature : location
Resource --> Agent : publisher
Resource --> Agent : creator