mexico 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.document +5 -0
- data/.gitmodules +3 -0
- data/.project +14 -0
- data/.rspec +2 -0
- data/Gemfile +31 -0
- data/LICENSE.txt +165 -0
- data/README.md +116 -0
- data/Rakefile +66 -0
- data/VERSION +1 -0
- data/assets/TESTCORPUS/Corpus.xml +26 -0
- data/assets/fiesta/b6/layer_connectors.fst +16 -0
- data/assets/fiesta/b6/match_jones_161_CM_neu_checked.parsed.xml +1225 -0
- data/assets/fiesta/elan/ElanFileFormat.eaf +76 -0
- data/assets/fiesta/elan/ElanFileFormat.pfsx +8 -0
- data/assets/fiesta/elan/ElanFileFormatComplexInterLayerLinks.eaf +107 -0
- data/assets/fiesta/elan/reflinks_example.eaf +270 -0
- data/assets/fiesta/elan/test_all_interlayerrelations.fst +43 -0
- data/assets/fiesta/head/head.fst +24 -0
- data/assets/fiesta/praat/mexico.ShortTextGrid +81 -0
- data/assets/fiesta/praat/mexico.TextGrid +104 -0
- data/assets/helpers/collection_ref_handler.rb +29 -0
- data/assets/helpers/id_ref_handler.rb +29 -0
- data/assets/helpers/roxml_attribute_handler.rb +57 -0
- data/assets/out_only/construct_and_write_spec.toe +99 -0
- data/assets/spec.html +554 -0
- data/bin/mexico +5 -0
- data/features/mexico.feature +9 -0
- data/features/step_definitions/mexico_steps.rb +0 -0
- data/features/support/env.rb +15 -0
- data/info/releasenotes/0.0.1.md +5 -0
- data/info/releasenotes/0.0.2.md +5 -0
- data/info/releasenotes/0.0.3.md +5 -0
- data/info/releasenotes/0.0.4.md +5 -0
- data/info/releasenotes/0.0.5.md +8 -0
- data/info/releasenotes/0.0.6.md +3 -0
- data/info/releasenotes/0.0.7.md +4 -0
- data/info/releasenotes/0.0.8.md +9 -0
- data/info/releasenotes/0.0.9.md +7 -0
- data/lib/mexico/cmd.rb +210 -0
- data/lib/mexico/constants.rb +82 -0
- data/lib/mexico/constraints/constraint.rb +85 -0
- data/lib/mexico/constraints/fiesta_constraints.rb +209 -0
- data/lib/mexico/constraints.rb +27 -0
- data/lib/mexico/core/corpus_core.rb +39 -0
- data/lib/mexico/core/design_core.rb +31 -0
- data/lib/mexico/core/media_type.rb +61 -0
- data/lib/mexico/core.rb +36 -0
- data/lib/mexico/fiesta/interfaces/b6_chat_game_interface.rb +222 -0
- data/lib/mexico/fiesta/interfaces/elan_interface.rb +143 -0
- data/lib/mexico/fiesta/interfaces/short_text_grid_interface.rb +99 -0
- data/lib/mexico/fiesta/interfaces/text_grid_interface.rb +103 -0
- data/lib/mexico/fiesta/interfaces.rb +31 -0
- data/lib/mexico/fiesta.rb +27 -0
- data/lib/mexico/file_system/bound_to_corpus.rb +37 -0
- data/lib/mexico/file_system/corpus.rb +207 -0
- data/lib/mexico/file_system/data.rb +96 -0
- data/lib/mexico/file_system/design.rb +75 -0
- data/lib/mexico/file_system/design_component.rb +78 -0
- data/lib/mexico/file_system/entry.rb +59 -0
- data/lib/mexico/file_system/fiesta_document.rb +344 -0
- data/lib/mexico/file_system/fiesta_map.rb +112 -0
- data/lib/mexico/file_system/head.rb +33 -0
- data/lib/mexico/file_system/id_ref.rb +46 -0
- data/lib/mexico/file_system/implicit_item_link.rb +19 -0
- data/lib/mexico/file_system/interval_link.rb +84 -0
- data/lib/mexico/file_system/item.rb +166 -0
- data/lib/mexico/file_system/item_link.rb +98 -0
- data/lib/mexico/file_system/item_links_proxy.rb +13 -0
- data/lib/mexico/file_system/layer.rb +89 -0
- data/lib/mexico/file_system/layer_connector.rb +74 -0
- data/lib/mexico/file_system/layer_link.rb +75 -0
- data/lib/mexico/file_system/local_file.rb +101 -0
- data/lib/mexico/file_system/participant.rb +69 -0
- data/lib/mexico/file_system/participant_role.rb +43 -0
- data/lib/mexico/file_system/point_link.rb +79 -0
- data/lib/mexico/file_system/property.rb +35 -0
- data/lib/mexico/file_system/property_map.rb +37 -0
- data/lib/mexico/file_system/resource.rb +174 -0
- data/lib/mexico/file_system/scale.rb +125 -0
- data/lib/mexico/file_system/section.rb +41 -0
- data/lib/mexico/file_system/static_collection_ref.rb +64 -0
- data/lib/mexico/file_system/template.rb +23 -0
- data/lib/mexico/file_system/trial.rb +87 -0
- data/lib/mexico/file_system/url.rb +65 -0
- data/lib/mexico/file_system.rb +62 -0
- data/lib/mexico/not_yet_implemented_error.rb +28 -0
- data/lib/mexico/util/fancy_container.rb +57 -0
- data/lib/mexico/util.rb +51 -0
- data/lib/mexico.rb +36 -0
- data/spec/constraints/constraints_spec.rb +306 -0
- data/spec/core/media_type_spec.rb +50 -0
- data/spec/fiesta/b6_spec.rb +43 -0
- data/spec/fiesta/elan_spec.rb +43 -0
- data/spec/fiesta/head_spec.rb +54 -0
- data/spec/fiesta/praat_spec.rb +54 -0
- data/spec/fiesta/read_spec.rb +76 -0
- data/spec/file_system_based/better_collection_spec.rb +142 -0
- data/spec/file_system_based/corpus_spec.rb +194 -0
- data/spec/file_system_based/design_spec.rb +100 -0
- data/spec/file_system_based/inter_links_spec.rb +100 -0
- data/spec/file_system_based/item_links_spec.rb +76 -0
- data/spec/file_system_based/rdf_spec.rb +177 -0
- data/spec/file_system_based/resource_spec.rb +111 -0
- data/spec/file_system_based/trial_spec.rb +129 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/toe/construct_and_write_spec.rb +82 -0
- data/spec/toe/construction_spec.rb +110 -0
- data/spec/toe/item_spec.rb +58 -0
- data/spec/toe/layer_spec.rb +63 -0
- data/spec/toe/scale_spec.rb +89 -0
- data/spec/toe/toe_document_spec.rb +39 -0
- data/test/helper.rb +19 -0
- data/test/test_mexico.rb +7 -0
- metadata +357 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# Participant Roles describe the nature of the associated participant:
|
20
|
+
# Possible values are, e.g., naive participants, confederates,
|
21
|
+
# experimenters, etc.
|
22
|
+
class Mexico::FileSystem::ParticipantRole
|
23
|
+
|
24
|
+
include Mexico::FileSystem::BoundToCorpus
|
25
|
+
extend Mexico::FileSystem::IdRef
|
26
|
+
|
27
|
+
|
28
|
+
include ::ROXML
|
29
|
+
|
30
|
+
xml_accessor :identifier, :from => '@identifier'
|
31
|
+
xml_accessor :name, :from => '@name'
|
32
|
+
|
33
|
+
xml_accessor :description, :from => "Description"
|
34
|
+
|
35
|
+
|
36
|
+
def initialize(opts={})
|
37
|
+
# @corpus = corpus
|
38
|
+
[:identifier,:name,:description].each do |att|
|
39
|
+
send("#{att}=", opts[att]) if opts.has_key?(att)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# a link that targets an interval out of a scale object.
|
20
|
+
class Mexico::FileSystem::PointLink
|
21
|
+
include ROXML
|
22
|
+
|
23
|
+
xml_name "PointLink"
|
24
|
+
|
25
|
+
# identifier
|
26
|
+
xml_accessor :identifier, :from => '@id'
|
27
|
+
|
28
|
+
# type Float
|
29
|
+
xml_accessor :point, :as => Float, :from => "@point"
|
30
|
+
|
31
|
+
# type String
|
32
|
+
xml_accessor :role, :from => '@role'
|
33
|
+
|
34
|
+
# type String
|
35
|
+
xml_accessor :target, :from => "@target"
|
36
|
+
|
37
|
+
attr_accessor :item
|
38
|
+
attr_accessor :document
|
39
|
+
|
40
|
+
# POSEIdON-based RDF augmentation
|
41
|
+
include Poseidon
|
42
|
+
self_uri %q(http://cats.sfb673.org/PointLink)
|
43
|
+
instance_uri_scheme %q(#{document.self_uri}##{identifier})
|
44
|
+
rdf_property :identifier, %q(http://cats.sfb673.org/identifier)
|
45
|
+
rdf_property :role, %q(http://cats.sfb673.org/role)
|
46
|
+
rdf_property :point, %q(http://cats.sfb673.org/point)
|
47
|
+
rdf_property :target, %q(http://cats.sfb673.org/target), :value_expression => 'RDF::URI(target_object.self_uri)'
|
48
|
+
|
49
|
+
def initialize(args={})
|
50
|
+
args.each do |k,v|
|
51
|
+
if self.respond_to?("#{k}=")
|
52
|
+
send("#{k}=", v)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# returns the target object, in this case, a Scale.
|
58
|
+
# @return (Mexico::FileSystem::Scale) the scale this interval link points to.
|
59
|
+
def target_object
|
60
|
+
@target_object
|
61
|
+
end
|
62
|
+
|
63
|
+
# Sets a new target object (and updates the corresponding identifier)
|
64
|
+
# @param (Mexico::FileSystem::Scale) new_target The new target object to set
|
65
|
+
# @return (void)
|
66
|
+
def target_object=(new_target)
|
67
|
+
@target_object=new_target
|
68
|
+
@target=target_object.identifier
|
69
|
+
end
|
70
|
+
|
71
|
+
# This method attempts to link objects from other locations of the XML/object tree
|
72
|
+
# into position inside this object, by following the xml ids given in the
|
73
|
+
# appropriate fields of this class.
|
74
|
+
# @return (void)
|
75
|
+
def after_parse
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is part of the MExiCo gem.
|
3
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
4
|
+
# http://www.sfb673.org
|
5
|
+
#
|
6
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation, either version 3 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# MExiCo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with MExiCo. If not, see
|
18
|
+
# <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
# This class provides a corpus representation that is backed up by the filesystem.
|
21
|
+
# A central Corpus definition file in the top-level folder contains an
|
22
|
+
# XML representation of the corpus structure, and all actual resources are found
|
23
|
+
# as files on a file system reachable from the top-level folder.
|
24
|
+
|
25
|
+
class Mexico::FileSystem::Property
|
26
|
+
|
27
|
+
include ::ROXML
|
28
|
+
xml_name 'Property'
|
29
|
+
|
30
|
+
xml_accessor :key, :from => '@key'
|
31
|
+
|
32
|
+
xml_accessor :value, :from => :content
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is part of the MExiCo gem.
|
3
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
4
|
+
# http://www.sfb673.org
|
5
|
+
#
|
6
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation, either version 3 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# MExiCo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with MExiCo. If not, see
|
18
|
+
# <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
# This class provides a corpus representation that is backed up by the filesystem.
|
21
|
+
# A central Corpus definition file in the top-level folder contains an
|
22
|
+
# XML representation of the corpus structure, and all actual resources are found
|
23
|
+
# as files on a file system reachable from the top-level folder.
|
24
|
+
|
25
|
+
class Mexico::FileSystem::PropertyMap
|
26
|
+
|
27
|
+
include ::ROXML
|
28
|
+
xml_name 'PropertyMap'
|
29
|
+
|
30
|
+
xml_accessor :key, :from => '@key'
|
31
|
+
|
32
|
+
xml_accessor :properties, :as => [::Mexico::FileSystem::Property], :from => "Property"
|
33
|
+
xml_accessor :property_maps, :as => [::Mexico::FileSystem::PropertyMap], :from => "PropertyMap"
|
34
|
+
|
35
|
+
attr_accessor :values
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
require 'poseidon'
|
20
|
+
|
21
|
+
# A template class doing nothing.
|
22
|
+
class Mexico::FileSystem::Resource
|
23
|
+
|
24
|
+
include Mexico::FileSystem::BoundToCorpus
|
25
|
+
extend Mexico::FileSystem::IdRef
|
26
|
+
extend Mexico::FileSystem::StaticCollectionRef
|
27
|
+
|
28
|
+
include ::ROXML
|
29
|
+
|
30
|
+
# identifier
|
31
|
+
xml_accessor :identifier, :from => '@identifier'
|
32
|
+
|
33
|
+
# type String
|
34
|
+
xml_accessor :name, :from => '@name'
|
35
|
+
|
36
|
+
# type String
|
37
|
+
xml_accessor :description, :from => 'Description'
|
38
|
+
|
39
|
+
# type String
|
40
|
+
xml_accessor :media_type_id, :from => '@media_type_id'
|
41
|
+
|
42
|
+
# type Mexico::Core::MediaType
|
43
|
+
collection_ref :media_type, ::Mexico::Core::MediaType, ::Mexico::Constants::MediaTypes::ALL, ::Mexico::Constants::MediaTypes::OTHER
|
44
|
+
|
45
|
+
# type Array<Mexico::FileSystem::LocalFile>
|
46
|
+
xml_accessor :local_files, :as => [::Mexico::FileSystem::LocalFile], :from => "LocalFile" #, :in => "."
|
47
|
+
|
48
|
+
# type Array<Mexico::FileSystem::URL>
|
49
|
+
xml_accessor :urls, :as => [::Mexico::FileSystem::URL], :from => "URL" # , :in => "."
|
50
|
+
|
51
|
+
# type String
|
52
|
+
xml_accessor :trial_id, :from => "@trial_id"
|
53
|
+
|
54
|
+
# type Mexico::FileSystem::Trial
|
55
|
+
id_ref :trial
|
56
|
+
|
57
|
+
# type String
|
58
|
+
xml_accessor :design_component_id, :from => "@design_component_id"
|
59
|
+
|
60
|
+
# type Mexico::FileSystem::DesignComponent
|
61
|
+
id_ref :design_component
|
62
|
+
|
63
|
+
# POSEIdON-based RDF augmentation
|
64
|
+
include Poseidon
|
65
|
+
|
66
|
+
self_uri %q(http://cats.sfb673.org/Resource)
|
67
|
+
instance_uri_scheme %q(http://phoibos.sfb673.org/corpora/#{corpus.identifier}/resources/#{identifier})
|
68
|
+
|
69
|
+
rdf_property :identifier, %q(http://cats.sfb673.org/identifier)
|
70
|
+
rdf_property :name, %q(http://cats.sfb673.org/name)
|
71
|
+
rdf_property :description, %q(http://cats.sfb673.org/description)
|
72
|
+
rdf_property :document, %q(http://cats.sfb673.org/document), {:value_expression => 'RDF::URI("#{self_uri}.fst")'}
|
73
|
+
|
74
|
+
rdf_include :local_files, %q(http://cats.sfb673.org/hasLocalFile)
|
75
|
+
rdf_include :urls, %q(http://cats.sfb673.org/hasURLs)
|
76
|
+
|
77
|
+
|
78
|
+
# docme
|
79
|
+
|
80
|
+
# creates a new Trial object.
|
81
|
+
# @option opts [String] :identifier The identifier of the new trial object.
|
82
|
+
# @option opts [String] :name The name of the new trial object.
|
83
|
+
# @option opts [String] :description The identifier of the new trial object.
|
84
|
+
def initialize(opts={})
|
85
|
+
# @corpus = corpus
|
86
|
+
[:identifier,:name,:description].each do |att|
|
87
|
+
send("#{att}=", opts[att]) if opts.has_key?(att)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
# Indicates whether this resource is associated with a trial.
|
93
|
+
# @return [true,false] +true+ if this resource belongs to a trial, +false+ otherwise.
|
94
|
+
def linked_to_trial?
|
95
|
+
return trial!=nil
|
96
|
+
end
|
97
|
+
|
98
|
+
# Indicates whether this resource is associated with a design component.
|
99
|
+
# @return [true,false] +true+ if this resource belongs to a design component, +false+ otherwise.
|
100
|
+
def linked_to_design_component?
|
101
|
+
return design_component!=nil
|
102
|
+
end
|
103
|
+
|
104
|
+
# Returns the disk space in bytes used by all local files of this resource.
|
105
|
+
# @return (Integer) disk space in bytes used by all local files of this resource.
|
106
|
+
def complete_file_size
|
107
|
+
local_files.collect{ |f| f.file_size }.inject(:+)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Indicates whether this resource is of the video media type.
|
111
|
+
# @return (Boolean) +true+ if this resource has media type video, +false+ otherwise.
|
112
|
+
def is_video?
|
113
|
+
return media_type==::Mexico::Constants::MediaTypes::VIDEO
|
114
|
+
end
|
115
|
+
|
116
|
+
# Indicates whether this resource is of the audio media type.
|
117
|
+
# @return (Boolean) +true+ if this resource has media type audio, +false+ otherwise.
|
118
|
+
def is_audio?
|
119
|
+
return media_type==::Mexico::Constants::MediaTypes::AUDIO
|
120
|
+
end
|
121
|
+
|
122
|
+
# Indicates whether this resource is of the annotation media type.
|
123
|
+
# @return (Boolean) +true+ if this resource has media type annotation, +false+ otherwise.
|
124
|
+
def is_annotation?
|
125
|
+
return media_type==::Mexico::Constants::MediaTypes::ANNOTATION
|
126
|
+
end
|
127
|
+
|
128
|
+
# Attempts to load the contents of the resource from an appropriate source into an appropriate
|
129
|
+
# data structure (for annotation files, into the ToE format, etc.)
|
130
|
+
# @return (Mexico::FileSystem::FiestaDocument) the document, or +nil+ if no document could be loaded.
|
131
|
+
def load
|
132
|
+
|
133
|
+
# @todo create a loader interface in a separate package
|
134
|
+
# load() then takes a file or url, gets the contents as a stream,
|
135
|
+
# and puts it into appropriate data structures.
|
136
|
+
# choice depends on: MediaType. Whether LocalFile or URL are available.
|
137
|
+
# What kinds of LF / URL are available, and which one is the newest.
|
138
|
+
# first goal: When document is of mediatype ANNOTATION, and there is one
|
139
|
+
# LocalFile, and it is of a matching type (now: ToE import), then import that
|
140
|
+
# one and make the resulting objects available below the resource.
|
141
|
+
|
142
|
+
# first version:
|
143
|
+
# if resource is annotation, and there is a toe file, then: load that toe file
|
144
|
+
# as a document, and define the appropriate member variable.
|
145
|
+
|
146
|
+
# puts "Is anno? %s" % is_annotation?
|
147
|
+
if is_annotation?
|
148
|
+
|
149
|
+
# puts "Toe File? %s" % local_files.find{ |f| f.path=~/toe$/ }
|
150
|
+
toe_file = local_files.find{ |f| f.path=~/toe$/ || f.path=~/fiesta$/ }
|
151
|
+
|
152
|
+
unless toe_file.nil?
|
153
|
+
@document = ::Mexico::FileSystem::FiestaDocument.open(toe_file.absolute_path)
|
154
|
+
@document.resource = self
|
155
|
+
return @document
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
# Returns the annotation document previously loaded in {#load} (this is only the case
|
161
|
+
# if resource has media type video, and if an appropriate local file is present).
|
162
|
+
# @return (Mexico::FileSystem::FiestaDocument) the document, or +nil+ if no document has been loaded.
|
163
|
+
def document
|
164
|
+
defined?(@document) ? @document : nil
|
165
|
+
end
|
166
|
+
|
167
|
+
# This method performs additional linking and cleanup after parsing a XML representation.
|
168
|
+
def after_parse
|
169
|
+
# puts "Parsed Resource #{self.identifier}"
|
170
|
+
end
|
171
|
+
|
172
|
+
# @todo Resource must, upon creation, be bound to a physical resource somewhere in the file system.
|
173
|
+
|
174
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# A generic scale.
|
20
|
+
class Mexico::FileSystem::Scale
|
21
|
+
|
22
|
+
DIM_TIME = 'time'
|
23
|
+
DIM_SPACE = 'space'
|
24
|
+
DIM_OTHER = 'other'
|
25
|
+
|
26
|
+
include ::ROXML
|
27
|
+
xml_name 'Scale'
|
28
|
+
|
29
|
+
xml_accessor :identifier, :from => '@id'
|
30
|
+
xml_accessor :name, :from => '@name'
|
31
|
+
|
32
|
+
xml_accessor :unit, :from => '@unit'
|
33
|
+
xml_accessor :dimension, :from => '@dimension'
|
34
|
+
xml_accessor :role, :from => '@role'
|
35
|
+
xml_accessor :continuous?, :from => '@continuous'
|
36
|
+
|
37
|
+
xml_accessor :mode, :from => '@mode'
|
38
|
+
|
39
|
+
attr_accessor :document
|
40
|
+
|
41
|
+
# POSEIdON-based RDF augmentation
|
42
|
+
include Poseidon
|
43
|
+
self_uri %q(http://cats.sfb673.org/Scale)
|
44
|
+
instance_uri_scheme 'http://phoibos.sfb673.org/resources/1##{identifier}' # %q(#{document.self_uri}##{identifier})
|
45
|
+
rdf_property :identifier, %q(http://cats.sfb673.org/identifier)
|
46
|
+
rdf_property :name, %q(http://cats.sfb673.org/name)
|
47
|
+
|
48
|
+
rdf_property :unit, %q(http://cats.sfb673.org/unit)
|
49
|
+
rdf_property :dimension, %q(http://cats.sfb673.org/dimension)
|
50
|
+
rdf_property :role, %q(http://cats.sfb673.org/role)
|
51
|
+
rdf_property :continuous?, %q(http://cats.sfb673.org/is_continuous)
|
52
|
+
rdf_property :mode, %q(http://cats.sfb673.org/mode)
|
53
|
+
|
54
|
+
|
55
|
+
# static collection of MODES
|
56
|
+
# mode : MODES collection
|
57
|
+
# @todo collection of scale elements (if not continuous)
|
58
|
+
|
59
|
+
# OKunit : SI units or custom units
|
60
|
+
# OK dimension : String (x,y,z,t, etc.)
|
61
|
+
# OK role : String (free text)
|
62
|
+
# continuous? : Boolean
|
63
|
+
|
64
|
+
def initialize(args={})
|
65
|
+
args.each do |k,v|
|
66
|
+
if self.respond_to?("#{k}=")
|
67
|
+
send("#{k}=", v)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# overrides method in ROXML
|
73
|
+
# callback after xml parsing process, to store this element in the
|
74
|
+
# document cache.
|
75
|
+
def after_parse
|
76
|
+
::Mexico::FileSystem::FiestaDocument.store(self.identifier, self)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Creates an RDF representation in Turtle notation for this class.
|
80
|
+
# @return [String] An RDF representation in Turtle notation for this class.
|
81
|
+
def self.to_turtle
|
82
|
+
rdf_writer = RDF::Turtle::Writer
|
83
|
+
return rdf_writer.buffer(:base_uri => 'http://phoibos.sfb673.org/',
|
84
|
+
:prefixes => {
|
85
|
+
:cats => 'http://cats.sfb673.org/',
|
86
|
+
:rdfs => RDF::RDFS.to_uri,
|
87
|
+
:foaf => RDF::FOAF.to_uri,
|
88
|
+
:dc => RDF::DC.to_uri,
|
89
|
+
:owl => RDF::OWL.to_uri,
|
90
|
+
:xsd => RDF::XSD.to_uri} #
|
91
|
+
) do |writer|
|
92
|
+
as_rdf.each_statement do |statement|
|
93
|
+
writer << statement
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Creates an RDF representation in Turtle notation for this object.
|
99
|
+
# @return [String] An RDF representation in Turtle notation for this object.
|
100
|
+
def to_turtle
|
101
|
+
rdf_writer = RDF::Turtle::Writer
|
102
|
+
return rdf_writer.buffer(:base_uri => 'http://phoibos.sfb673.org/',
|
103
|
+
:prefixes => {
|
104
|
+
:cats => 'http://cats.sfb673.org/',
|
105
|
+
:rdfs => RDF::RDFS.to_uri,
|
106
|
+
:foaf => RDF::FOAF.to_uri,
|
107
|
+
:dc => RDF::DC.to_uri,
|
108
|
+
:owl => RDF::OWL.to_uri,
|
109
|
+
:xsd => RDF::XSD.to_uri} #
|
110
|
+
) do |writer|
|
111
|
+
as_rdf.each_statement do |statement|
|
112
|
+
writer << statement
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def is_timeline?
|
118
|
+
self.dimension == DIM_TIME
|
119
|
+
end
|
120
|
+
|
121
|
+
def is_spatial_axis?
|
122
|
+
self.dimension == DIM_SPACE
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is part of the MExiCo gem.
|
3
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
4
|
+
# http://www.sfb673.org
|
5
|
+
#
|
6
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Lesser General Public License as
|
8
|
+
# published by the Free Software Foundation, either version 3 of
|
9
|
+
# the License, or (at your option) any later version.
|
10
|
+
#
|
11
|
+
# MExiCo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Lesser General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
17
|
+
# License along with MExiCo. If not, see
|
18
|
+
# <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
# This class provides a corpus representation that is backed up by the filesystem.
|
21
|
+
# A central Corpus definition file in the top-level folder contains an
|
22
|
+
# XML representation of the corpus structure, and all actual resources are found
|
23
|
+
# as files on a file system reachable from the top-level folder.
|
24
|
+
|
25
|
+
class Mexico::FileSystem::Section
|
26
|
+
|
27
|
+
LIFECYCLE = 'lifecycle'
|
28
|
+
|
29
|
+
VOCABULARIES = 'vocabularies'
|
30
|
+
|
31
|
+
include ::ROXML
|
32
|
+
xml_name 'Section'
|
33
|
+
|
34
|
+
xml_accessor :key, :from => '@key'
|
35
|
+
|
36
|
+
xml_accessor :properties, :as => [::Mexico::FileSystem::Property], :from => "Property"
|
37
|
+
xml_accessor :property_maps, :as => [::Mexico::FileSystem::PropertyMap], :from => "PropertyMap"
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# The +IdRef+ module provides a simple mechanism to map IDREF attributes
|
20
|
+
# in an XML document to Ruby objects that are stored elsewhere in the
|
21
|
+
# object tree. They are retrieved and accessed via the central corpus
|
22
|
+
# object.
|
23
|
+
module Mexico::FileSystem::StaticCollectionRef
|
24
|
+
|
25
|
+
# Defines a foreign key reference for an object. By default, it will
|
26
|
+
# refer to the corresponding collection in the top-level corpus, and
|
27
|
+
# it will retrieve the object via its +identifier+ field.
|
28
|
+
def collection_ref(field_identifier, field_class, field_collection, default)
|
29
|
+
|
30
|
+
field_name = field_identifier.to_s
|
31
|
+
pluralized_field_name = "#{field_name}s"
|
32
|
+
field_name_id = "#{field_name}_id"
|
33
|
+
|
34
|
+
define_method field_name do
|
35
|
+
if instance_variable_get("@#{field_name}").nil?
|
36
|
+
self.send("#{field_name}=", instance_variable_get("@#{field_name_id}"))
|
37
|
+
# self.instance_variable_set("@#{field_name}", instance_variable_get("@#{field_name_id}"))
|
38
|
+
end
|
39
|
+
return instance_variable_get("@#{field_name}")
|
40
|
+
end
|
41
|
+
|
42
|
+
define_method "#{field_name}=" do |param|
|
43
|
+
#instance_variable_set("@#{field_name_id}", param.identifier)
|
44
|
+
#instance_variable_set("@#{field_name}", param)
|
45
|
+
|
46
|
+
if param.nil?
|
47
|
+
instance_variable_set "@#{field_name}", default # Mexico::Constants::MediaTypes::OTHER
|
48
|
+
elsif param.kind_of?(String)
|
49
|
+
#@media_type = Mexico::Constants::MediaTypes::ALL.find{|m| m.identifier==new_media_type.to_s}
|
50
|
+
instance_variable_set "@#{field_name}", field_collection.find{|i| i.identifier==param.to_s}
|
51
|
+
if instance_variable_get("@#{field_name}").blank?
|
52
|
+
instance_variable_set "@#{field_name}", default
|
53
|
+
end
|
54
|
+
elsif param.kind_of?(field_class)
|
55
|
+
instance_variable_set "@#{field_name}", param
|
56
|
+
end
|
57
|
+
@media_type_id = @media_type.identifier
|
58
|
+
instance_variable_set "@#{field_name_id}", instance_variable_get("@#{field_name}").identifier
|
59
|
+
return instance_variable_get("@#{field_name}")
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# This file is part of the MExiCo gem.
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
3
|
+
# http://www.sfb673.org
|
4
|
+
#
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
8
|
+
# the License, or (at your option) any later version.
|
9
|
+
#
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
16
|
+
# License along with MExiCo. If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
# A template class doing nothing.
|
20
|
+
class Mexico::FileSystem::Template
|
21
|
+
|
22
|
+
|
23
|
+
end
|