module DPLA::MAP
  class SourceResource < ActiveTriples::Resource
    configure :base_uri => 'http://dp.la/api/items/', :type => RDF::DPLA.SourceResource

    validates_presence_of :rights, :title

    property :alternative, :predicate => RDF::DC.alternative
    property :collection, :predicate => RDF::DC.isPartOf, :class_name => 'DPLA::MAP::Collection'
    property :contributor, :predicate => RDF::DC.contributor, :class_name => 'DPLA::MAP::Agent'
    property :creator, :predicate => RDF::DC.creator, :class_name => 'DPLA::MAP::Agent'
    property :date, :predicate => RDF::DC11.date, :class_name => 'DPLA::MAP::TimeSpan'
    property :description, :predicate => RDF::DC.description
    property :extent, :predicate => RDF::DC.extent
    property :dcformat, :predicate => RDF::DC11.format
    property :genre, :predicate => RDF::EDM.hasType, :class_name => 'DPLA::MAP::Controlled::Genre'
    property :identifier, :predicate => RDF::DC11.identifier
    property :language, :predicate => RDF::DC.language, :class_name => 'DPLA::MAP::Controlled::Language'
    property :spatial, :predicate => RDF::DC.spatial, :class_name => 'DPLA::MAP::Place'
    property :publisher, :predicate => RDF::DC.publisher, :class_name => 'DPLA::MAP::Agent'
    property :relation, :predicate => RDF::DC11.relation
    property :isReplacedBy, :predicate => RDF::DPLA.isReplacedBy
    property :replaces, :predicate => RDF::DPLA.replaces
    property :rights, :predicate => RDF::DC11.rights
    property :rightsHolder, :predicate => RDF::DC.rightsHolder, :class_name => 'DPLA::MAP::Agent'
    property :subject, :predicate => RDF::DC.subject, :class_name => 'DPLA::MAP::Concept'
    property :temporal, :predicate => RDF::DC.temporal, :class_name => 'DPLA::MAP::TimeSpan'
    property :title, :predicate => RDF::DC.title
    property :dctype, :predicate => RDF::DC.type, :class_name => 'DPLA::MAP::Controlled::DCMIType'
  end
end
