dpla-map 4.0.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8ebd5e84c95f802530ade9eb09ee8a8790d6e053
4
+ data.tar.gz: 8a431e821e1e7dc0e81172cfef1d5b613a05989f
5
+ SHA512:
6
+ metadata.gz: 93111c3fd951e3dd37449412590975f6dd887bd814466ca86777b89a9a3054da550cb11225a3d670717dde2b4ab6338a39a3a4eb3f95c8b5b3b619f3684baa22
7
+ data.tar.gz: 88b91dacc8b6629fde2387bf21c9e198322c1c48cab3a2f61a75bdb62b1d4c35a53741ea769d21725154bb0b88d2ee5f52a7a23d6be6898394ac919fba129b89
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,14 @@
1
+ DPLA Metadata Application Profile
2
+ ==================================
3
+
4
+ An implementation of the [DPLA metadata application profile](http://dp.la/info/developers/map/) (MAP) as ActiveTriples models.
5
+
6
+ Versioning
7
+ -----------
8
+
9
+ This software is versioned according to a modified [SemVer](semver.org). Major versions correspond directly to versions of the DPLA MAP, so versions are given in MAP-MAJOR.MAP-MINOR.MINOR.PATCH (e.g. ```3.1.0.0```).
10
+
11
+ To specify a version of the MAP in a Gemfile, use (for example): ```~>3.1.0```
12
+
13
+
14
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'dpla'
4
+
5
+ desc "Generate Vocabularies"
6
+
7
+ task :gen_vocabs do
8
+ LinkedVocabs.vocabularies.each_key do |name|
9
+ puts "Generating vocabulary at lib/rdf/#{name}.rb"
10
+ begin
11
+ LinkedVocabs.load_vocabulary(name)
12
+ rescue
13
+ puts "Failed to load #{name}: #{$!.message}"
14
+ puts $!.backtrace
15
+ end
16
+ end
17
+ end
data/dpla-map.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require 'dpla/map/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "dpla-map"
6
+ s.version = DPLA::MAP::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Tom Johnson"]
9
+ s.homepage = 'https://github.com/dpla/dpla_map'
10
+ s.email = 'tom@dp.la'
11
+ s.summary = %q{DPLA's metadata application profile in ActiveTriples.}
12
+ s.description = %q{DPLA's metadata application profile in ActiveTriples.}
13
+ s.required_ruby_version = '>= 1.9.3'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+
19
+ s.require_paths = ['lib', 'lib/dpla', 'lib/dpla/map', 'lib/rdf']
20
+
21
+ s.add_dependency 'active-triples', '~>0.3'
22
+ s.add_dependency 'linked_vocabs', '~>0.1'
23
+
24
+ s.add_development_dependency 'rspec'
25
+ s.add_development_dependency 'pry'
26
+ s.add_development_dependency 'pry-doc'
27
+ s.add_development_dependency 'pry-debugger'
28
+ s.add_development_dependency 'factory_girl', '~>4.0'
29
+ end
@@ -0,0 +1,8 @@
1
+ module DPLA::MAP
2
+ class Agent < ActiveTriples::Resource
3
+ configure :type => RDF::EDM.Agent
4
+
5
+ property :label, :predicate => RDF::SKOS.prefLabel
6
+ property :sameAs, :predicate => RDF::OWL.sameAs
7
+ end
8
+ end
@@ -0,0 +1,19 @@
1
+ module DPLA::MAP
2
+ class Aggregation < ActiveTriples::Resource
3
+ configure :type => RDF::ORE.Aggregation
4
+
5
+ validates_presence_of :aggregatedSourceResource, :originalRecord, :isShownAt, :object, :provider
6
+
7
+ property :aggregatedSourceResource, :predicate => RDF::EDM.aggregatedCHO, :class_name => 'DPLA::MAP::SourceResource'
8
+ property :dataProvider, :predicate => RDF::EDM.dataProvider
9
+ property :originalRecord, :predicate => RDF::DPLA.originalRecord
10
+ property :hasView, :predicate => RDF::EDM.hasView, :class_name => 'DPLA::MAP::WebResource'
11
+ property :intermediateProvider, :predicate => RDF::DPLA.intermediateProvider
12
+ property :isShownAt, :predicate => RDF::EDM.isShownAt, :class_name => 'DPLA::MAP::WebResource'
13
+ property :object, :predicate => RDF::EDM.object, :class_name => 'DPLA::MAP::WebResource'
14
+ property :preview, :predicate => RDF::EDM.preview, :class_name => 'DPLA::MAP::WebResource'
15
+ property :provider, :predicate => RDF::EDM.provider, :class_name => 'DPLA::MAP::Agent'
16
+ property :rightsStatement, :predicate => RDF::EDM.rights, :class_name => 'DPLA::MAP::RightsStatement'
17
+
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ module DPLA::MAP
2
+ class Collection < ActiveTriples::Resource
3
+ configure :base_uri => 'http://dp.la/api/collections/', :type => RDF::DCMITYPE.Collection
4
+
5
+ property :title, :predicate => RDF::DC11.title # any real reason not to use dcterms here? RDF::DC.title
6
+ property :description, :predicate => RDF::DC11.description # any reason not to use dcterms here? RDF::DC.description
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ module DPLA::MAP
2
+ class Concept < ActiveTriples::Resource
3
+ configure :type => RDF::SKOS.Concept
4
+
5
+ property :prefLabel, :predicate => RDF::SKOS.prefLabel
6
+ property :note, :predicate => RDF::SKOS.note
7
+ property :scheme, :predicate => RDF::SKOS.inScheme
8
+
9
+ alias_method :concept, :prefLabel
10
+ alias_method :concept=, :prefLabel=
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module DPLA::MAP
2
+ module Controlled
3
+ class DCMIType < DPLA::MAP::Concept
4
+ include LinkedVocabs::Controlled
5
+ configure :type => RDF::RDFS.Class
6
+
7
+ use_vocabulary :dcmitype
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ module DPLA::MAP
2
+ module Controlled
3
+ class Genre < DPLA::MAP::Concept
4
+ include LinkedVocabs::Controlled
5
+
6
+ configure :base_uri => 'http://vocab.getty.edu/aat/', :type => 'http://vocab.getty.edu/ontology#Concept'
7
+
8
+ use_vocabulary :aat
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module DPLA::MAP
2
+ module Controlled
3
+ class Language < ActiveTriples::Resource
4
+ include LinkedVocabs::Controlled
5
+
6
+ configure :base_uri => "http://lexvo.org/id/iso639-3/", :rdf_label => RDF::URI('http://www.w3.org/2008/05/skos#prefLabel')
7
+
8
+ use_vocabulary :iso_639_3
9
+
10
+ property :prefLabel, :predicate => RDF::SKOS.prefLabel
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ module DPLA::MAP::Controlled
2
+ autoload :Language, 'dpla/map/controlled/language'
3
+ autoload :DCMIType, 'dpla/map/controlled/dcmitype'
4
+ autoload :Genre, 'dpla/map/controlled/genre'
5
+ end
@@ -0,0 +1,82 @@
1
+ require 'dpla/map'
2
+
3
+ FactoryGirl.define do
4
+
5
+ factory :source_resource, class: DPLA::MAP::SourceResource do
6
+ collection { |collection| collection.association :collection, :strategy => :build }
7
+ contributor 'Norma Ford'
8
+ title 'Stonewall Inn [2]'
9
+ creator 'Davies, Diana (1938-)'
10
+ subject ['Lesbians', 'Gay activists']
11
+ description 'Window of the Stonewall Bar N.Y. 1969. The other half of the graffiti was erased by the time Diana photographed it.'
12
+ extent '10x12 cm'
13
+ format 'Silver Gelatin Print'
14
+ identifier '510d47e3-57d2-a3d9-e040-e00a18064a99'
15
+ language { |language| language.association :language, :strategy => :build }
16
+ place { |place| place.association :place, :strategy => :build }
17
+ publisher 'Penguin Books'
18
+ relation ['Stonewall Inn [1]', 'Stonewall Inn [3]']
19
+ rights "The New York Public Library is interested in learning more about items you've seen on our websites or elsewhere online. If you have any more information about an item or its copyright status, we want to hear from you. Please contact DigitalCollections@nypl.org with your contact information and a link to the relevant content."
20
+ genre { |genre| genre.association :genre, :strategy => :build }
21
+ temporalCoverage '1969'
22
+ dctype { |type| type.association :dctype, :strategy => :build }
23
+ end
24
+
25
+ factory :aggregation, class: DPLA::MAP::Aggregation do
26
+ aggregatedSourceResource { |sr| sr.association :source_resource, :strategy => :build }
27
+ dataProvider 'Manuscripts and Archives Division. The New York Public Library'
28
+ originalRecord '<record><title>Stonewall Inn [2]</title></record>'
29
+ hasView { |wr| wr.association :web_resource, :strategy => :build }
30
+ intermediateProvider 'NYPL'
31
+ isShownAt 'http://digitalcollections.nypl.org/items/510d47e3-57d2-a3d9-e040-e00a18064a99'
32
+ object 'http://dp.la/item/116d5aaf3d77a5d7c5a6c7a3e10c5afe'
33
+ provider {
34
+ prov = ActiveTriples::Resource.new('http://dp.la/api/contributor/nypl')
35
+ prov << RDF::Statement(prov, RDF::SKOS.prefLabel, "The New York Public Library")
36
+ prov
37
+ }
38
+ rightsStatement { ActiveTriples::Resource.new('http://creativecommons.org/publicdomain/mark/1.0/') }
39
+ end
40
+
41
+ factory :web_resource, class: DPLA::MAP::WebResource do
42
+ format 'image/tiff'
43
+ rights 'Public Domain'
44
+ rightsStatement { ActiveTriples::Resource.new('http://creativecommons.org/publicdomain/mark/1.0/') }
45
+ end
46
+
47
+ factory :place, class: DPLA::MAP::Place do
48
+ name 'New York, NY'
49
+ # city 'New York'
50
+ # county 'New York County'
51
+ # coordinates '40.7127, 74.0059'
52
+ end
53
+
54
+ factory :collection, class: DPLA::MAP::Collection do
55
+ title 'Diana Davies photographs, 1965-1978'
56
+ description 'Photographs of Diana Davies; LGBT and HIV/AIDS Activist Collections'
57
+ end
58
+
59
+ factory :language, class: DPLA::MAP::Controlled::Language do
60
+ initialize_with do
61
+ new('eng')
62
+ end
63
+ end
64
+
65
+ factory :dctype, class: DPLA::MAP::Controlled::DCMIType do
66
+ initialize_with do
67
+ new('Image')
68
+ end
69
+ end
70
+
71
+ factory :genre, class: DPLA::MAP::Controlled::Genre do
72
+ initialize_with do
73
+ new('300132472')
74
+ end
75
+ end
76
+ end
77
+
78
+ RSpec.configure do |config|
79
+ config.before(:suite) do
80
+ FactoryGirl.lint
81
+ end
82
+ end
@@ -0,0 +1,16 @@
1
+ module DPLA::MAP
2
+ class Place < ActiveTriples::Resource
3
+ configure :type => RDF::EDM.Place
4
+
5
+ validates_presence_of :name # validates_cardinality_of ... :count => 1?
6
+
7
+ property :name, :predicate => RDF::SKOS.prefLabel
8
+ property :latitude, :predicate => RDF::GEO.lat
9
+ property :longitude, :predicate => RDF::GEO.long
10
+ property :altitude, :predicate => RDF::GEO.alt
11
+ property :parentFeature, :predicate => RDF::GN.parentFeature
12
+ property :parentCountry, :predicate => RDF::GN.countryCode
13
+ property :sameAs, :predicate => RDF::OWL.sameAs
14
+
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ module DPLA::MAP
2
+ class RightsStatement < DPLA::MAP::Concept
3
+ configure :type => RDF::DC.RightsStatement
4
+ end
5
+ end
@@ -0,0 +1,39 @@
1
+ module DPLA::MAP
2
+ class SourceResource < ActiveTriples::Resource
3
+ configure :base_uri => 'http://dp.la/api/items/', :type => RDF::DPLA.SourceResource
4
+
5
+ validates_presence_of :rights, :title
6
+ validates_vocabulary_of :dctype, :genre, :language
7
+
8
+ property :alternateTitle, :predicate => RDF::DC.alternative
9
+ property :collection, :predicate => RDF::DC.isPartOf, :class_name => 'DPLA::MAP::Collection'
10
+ property :contributor, :predicate => RDF::DC11.contributor, :class_name => 'DPLA::MAP::Agent' # literal and/or URI
11
+ property :creator, :predicate => RDF::DC11.creator, :class_name => 'DPLA::MAP::Agent' # literal and/or URI
12
+ property :date, :predicate => RDF::DC11.date, :class_name => 'DPLA::MAP::TimeSpan'
13
+ property :description, :predicate => RDF::DC11.description # any reason not to use dcterms here? RDF::DC.description
14
+ property :extent, :predicate => RDF::DC.extent
15
+ property :format, :predicate => RDF::DC11.format # literal and/or URI
16
+ property :identifier, :predicate => RDF::DC11.identifier # literal and/or URI
17
+ property :language, :predicate => RDF::DC.language, :class_name => 'DPLA::MAP::Controlled::Language'
18
+ property :place, :predicate => RDF::DC.spatial, :class_name => 'DPLA::MAP::Place' # literal and/or URI
19
+ property :publisher, :predicate => RDF::DC11.publisher # literal and/or URI
20
+ property :relation, :predicate => RDF::DC11.relation # literal and/or URI
21
+ property :replacedBy, :predicate => RDF::DC.isReplacedBy # literal and/or URI
22
+ property :replaces, :predicate => RDF::DC.replaces # literal and/or URI
23
+ property :rights, :predicate => RDF::DC11.rights
24
+ property :genre, :predicate => RDF::EDM.hasType, :class_name => 'DPLA::MAP::Controlled::Genre'
25
+ property :subject, :predicate => RDF::DC.subject, :class_name => 'DPLA::MAP::Concept'
26
+ property :temporalCoverage, :predicate => RDF::DC.temporal # literal and/or URI
27
+ property :title, :predicate => RDF::DC11.title # any reason not to use dcterms here? RDF::DC.title
28
+ property :dctype, :predicate => RDF::DC11.type, :class_name => 'DPLA::MAP::Controlled::DCMIType'
29
+
30
+ # formal rights statements
31
+ # property :rights, :predicate => RDF::DC.rights, :class_name => 'DPLA::RightsStatement'
32
+
33
+ # languages w/ better handling of the controlled vocab?
34
+ # property :languageControlled, :predicate => RDF::DC.language, :class_name => 'DPLA::Controlled::Language'
35
+
36
+ # controlled vocab on type
37
+ # property :dcmitype, :predicate => RDF::DC.type, :class_name => 'DPLA::Controlled::DCMIType'
38
+ end
39
+ end
@@ -0,0 +1,10 @@
1
+ module DPLA::MAP
2
+ class TimeSpan < ActiveTriples::Resource
3
+ configure :type => RDF::EDM.TimeSpan
4
+
5
+ validates_presence_of :originalSourceDate # validates_cardinality_of ... :count => 1?
6
+
7
+ property :begin, :predicate => RDF::EDM.begin
8
+ property :end, :predicate => RDF::EDM.end
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module DPLA
2
+ module MAP
3
+ VERSION = '4.0.0.0.pre.1'
4
+ end
5
+ end
6
+
@@ -0,0 +1,9 @@
1
+ module DPLA::MAP
2
+ class WebResource < ActiveTriples::Resource
3
+ configure :type => RDF::EDM.WebResource
4
+
5
+ property :format, :predicate => RDF::DC11.format
6
+ property :rights, :predicate => RDF::DC11.rights
7
+ property :rightsStatement, :predicate => RDF::EDM.rights, :class_name => 'DPLA::MAP::RightsStatement'
8
+ end
9
+ end
data/lib/dpla/map.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'active_triples'
2
+ require 'linked_vocabs'
3
+
4
+ require 'rdf/dpla'
5
+
6
+ require 'rdf/aat'
7
+ require 'rdf/dcmitype'
8
+ require 'rdf/edm'
9
+ require 'rdf/geonames'
10
+ require 'rdf/gn'
11
+ require 'rdf/iso_639_3'
12
+ require 'rdf/ore'
13
+
14
+ module DPLA
15
+ module MAP
16
+ LinkedVocabs.add_vocabulary(:aat, 'http://vocab.getty.edu/aat/')
17
+ LinkedVocabs.add_vocabulary(:iso_639_3, 'http://lexvo.org/id/iso639-3/')
18
+ LinkedVocabs.add_vocabulary(:gn, 'http://www.geonames.org/ontology#', :source => 'http://www.geonames.org/ontology/ontology_v3.1.rdf', :fetch => true)
19
+
20
+
21
+ autoload :SourceResource, 'dpla/map/source_resource'
22
+ autoload :Collection, 'dpla/map/collection'
23
+ autoload :Place, 'dpla/map/place'
24
+ autoload :TimeSpan, 'dpla/map/time_span'
25
+ autoload :Aggregation, 'dpla/map/aggregation'
26
+ autoload :WebResource, 'dpla/map/web_resource'
27
+ autoload :Agent, 'dpla/map/agent'
28
+ autoload :Concept, 'dpla/map/concept'
29
+ autoload :RightsStatement, 'dpla/map/rights_statement'
30
+
31
+ autoload :Controlled, 'dpla/map/controlled'
32
+
33
+ end
34
+ end
data/lib/dpla.rb ADDED
@@ -0,0 +1,2 @@
1
+ module DPLA
2
+ end
data/lib/rdf/aat.rb ADDED
@@ -0,0 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # This file generated automatically using vocab-fetch from http://vocab.getty.edu/aat/
3
+ require 'rdf'
4
+ module RDF
5
+ class AAT < RDF::Vocabulary("http://vocab.getty.edu/aat/")
6
+ # terms not fetched by vocab-fetch
7
+ end
8
+ end
@@ -0,0 +1,138 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # This file generated automatically using vocab-fetch from http://dublincore.org/2012/06/14/dctype.rdf
3
+ require 'rdf'
4
+ module RDF
5
+ class DCMITYPE < RDF::StrictVocabulary("http://purl.org/dc/dcmitype/")
6
+
7
+ # Class definitions
8
+ term :Collection,
9
+ comment: %(An aggregation of resources.).freeze,
10
+ "dc:description" => %(A collection is described as a group; its parts may also be separately described.).freeze,
11
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Collection-003).freeze,
12
+ "dc:issued" => %(2000-07-11).freeze,
13
+ "dc:modified" => %(2008-01-14).freeze,
14
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
15
+ label: "Collection".freeze,
16
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
17
+ type: "rdfs:Class".freeze
18
+ term :Dataset,
19
+ comment: %(Data encoded in a defined structure.).freeze,
20
+ "dc:description" => %(Examples include lists, tables, and databases. A dataset may be useful for direct machine processing.).freeze,
21
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Dataset-003).freeze,
22
+ "dc:issued" => %(2000-07-11).freeze,
23
+ "dc:modified" => %(2008-01-14).freeze,
24
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
25
+ label: "Dataset".freeze,
26
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
27
+ type: "rdfs:Class".freeze
28
+ term :Event,
29
+ comment: %(A non-persistent, time-based occurrence.).freeze,
30
+ "dc:description" => %(Metadata for an event provides descriptive information that is the basis for discovery of the purpose, location, duration, and responsible agents associated with an event. Examples include an exhibition, webcast, conference, workshop, open day, performance, battle, trial, wedding, tea party, conflagration.).freeze,
31
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Event-003).freeze,
32
+ "dc:issued" => %(2000-07-11).freeze,
33
+ "dc:modified" => %(2008-01-14).freeze,
34
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
35
+ label: "Event".freeze,
36
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
37
+ type: "rdfs:Class".freeze
38
+ term :Image,
39
+ comment: %(A visual representation other than text.).freeze,
40
+ "dc:description" => %(Examples include images and photographs of physical objects, paintings, prints, drawings, other images and graphics, animations and moving pictures, film, diagrams, maps, musical notation. Note that Image may include both electronic and physical representations.).freeze,
41
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Image-004).freeze,
42
+ "dc:issued" => %(2000-07-11).freeze,
43
+ "dc:modified" => %(2008-01-14).freeze,
44
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
45
+ label: "Image".freeze,
46
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
47
+ type: "rdfs:Class".freeze
48
+ term :InteractiveResource,
49
+ comment: %(A resource requiring interaction from the user to be understood, executed, or experienced.).freeze,
50
+ "dc:description" => %(Examples include forms on Web pages, applets, multimedia learning objects, chat services, or virtual reality environments.).freeze,
51
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#InteractiveResource-003).freeze,
52
+ "dc:issued" => %(2000-07-11).freeze,
53
+ "dc:modified" => %(2008-01-14).freeze,
54
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
55
+ label: "Interactive Resource".freeze,
56
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
57
+ type: "rdfs:Class".freeze
58
+ term :MovingImage,
59
+ comment: %(A series of visual representations imparting an impression of motion when shown in succession.).freeze,
60
+ "dc:description" => %(Examples include animations, movies, television programs, videos, zoetropes, or visual output from a simulation. Instances of the type Moving Image must also be describable as instances of the broader type Image.).freeze,
61
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#MovingImage-003).freeze,
62
+ "dc:issued" => %(2003-11-18).freeze,
63
+ "dc:modified" => %(2008-01-14).freeze,
64
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
65
+ label: "Moving Image".freeze,
66
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
67
+ subClassOf: "dcmitype:Image".freeze,
68
+ type: "rdfs:Class".freeze
69
+ term :PhysicalObject,
70
+ comment: %(An inanimate, three-dimensional object or substance.).freeze,
71
+ "dc:description" => %(Note that digital representations of, or surrogates for, these objects should use Image, Text or one of the other types.).freeze,
72
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#PhysicalObject-003).freeze,
73
+ "dc:issued" => %(2002-07-13).freeze,
74
+ "dc:modified" => %(2008-01-14).freeze,
75
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
76
+ label: "Physical Object".freeze,
77
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
78
+ type: "rdfs:Class".freeze
79
+ term :Service,
80
+ comment: %(A system that provides one or more functions.).freeze,
81
+ "dc:description" => %(Examples include a photocopying service, a banking service, an authentication service, interlibrary loans, a Z39.50 or Web server.).freeze,
82
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Service-003).freeze,
83
+ "dc:issued" => %(2000-07-11).freeze,
84
+ "dc:modified" => %(2008-01-14).freeze,
85
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
86
+ label: "Service".freeze,
87
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
88
+ type: "rdfs:Class".freeze
89
+ term :Software,
90
+ comment: %(A computer program in source or compiled form.).freeze,
91
+ "dc:description" => %(Examples include a C source file, MS-Windows .exe executable, or Perl script.).freeze,
92
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Software-003).freeze,
93
+ "dc:issued" => %(2000-07-11).freeze,
94
+ "dc:modified" => %(2008-01-14).freeze,
95
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
96
+ label: "Software".freeze,
97
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
98
+ type: "rdfs:Class".freeze
99
+ term :Sound,
100
+ comment: %(A resource primarily intended to be heard.).freeze,
101
+ "dc:description" => %(Examples include a music playback file format, an audio compact disc, and recorded speech or sounds.).freeze,
102
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Sound-003).freeze,
103
+ "dc:issued" => %(2000-07-11).freeze,
104
+ "dc:modified" => %(2008-01-14).freeze,
105
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
106
+ label: "Sound".freeze,
107
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
108
+ type: "rdfs:Class".freeze
109
+ term :StillImage,
110
+ comment: %(A static visual representation.).freeze,
111
+ "dc:description" => %(Examples include paintings, drawings, graphic designs, plans and maps. Recommended best practice is to assign the type Text to images of textual materials. Instances of the type Still Image must also be describable as instances of the broader type Image.).freeze,
112
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#StillImage-003).freeze,
113
+ "dc:issued" => %(2003-11-18).freeze,
114
+ "dc:modified" => %(2008-01-14).freeze,
115
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
116
+ label: "Still Image".freeze,
117
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
118
+ subClassOf: "dcmitype:Image".freeze,
119
+ type: "rdfs:Class".freeze
120
+ term :Text,
121
+ comment: %(A resource consisting primarily of words for reading.).freeze,
122
+ "dc:description" => %(Examples include books, letters, dissertations, poems, newspapers, articles, archives of mailing lists. Note that facsimiles or images of texts are still of the genre Text.).freeze,
123
+ "dc:hasVersion" => %(http://dublincore.org/usage/terms/history/#Text-003).freeze,
124
+ "dc:issued" => %(2000-07-11).freeze,
125
+ "dc:modified" => %(2008-01-14).freeze,
126
+ "http://purl.org/dc/dcam/memberOf" => %(dc:DCMIType).freeze,
127
+ label: "Text".freeze,
128
+ "rdfs:isDefinedBy" => %(dcmitype:).freeze,
129
+ type: "rdfs:Class".freeze
130
+
131
+ # Extra definitions
132
+ term :"",
133
+ "dc:modified" => %(2012-06-14).freeze,
134
+ "dc:publisher" => %(http://purl.org/dc/aboutdcmi#DCMI).freeze,
135
+ "dc:title" => %(DCMI Type Vocabulary).freeze,
136
+ label: "".freeze
137
+ end
138
+ end
data/lib/rdf/dpla.rb ADDED
@@ -0,0 +1,4 @@
1
+ module RDF
2
+ class DPLA < ::RDF::Vocabulary("http://dp.la/about/map/")
3
+ end
4
+ end
data/lib/rdf/edm.rb ADDED
@@ -0,0 +1,5 @@
1
+ module RDF
2
+ class EDM < ::RDF::Vocabulary("http://www.europeana.eu/schemas/edm/")
3
+ end
4
+ end
5
+
@@ -0,0 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # This file generated automatically using vocab-fetch from http://sws.geonames.org/
3
+ require 'rdf'
4
+ module RDF
5
+ class GEONAMES < RDF::Vocabulary("http://sws.geonames.org/")
6
+ # terms not fetched by vocab-fetch
7
+ end
8
+ end