mexico 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +15 -0
  2. data/.document +5 -0
  3. data/.gitmodules +3 -0
  4. data/.project +14 -0
  5. data/.rspec +2 -0
  6. data/Gemfile +31 -0
  7. data/LICENSE.txt +165 -0
  8. data/README.md +116 -0
  9. data/Rakefile +66 -0
  10. data/VERSION +1 -0
  11. data/assets/TESTCORPUS/Corpus.xml +26 -0
  12. data/assets/fiesta/b6/layer_connectors.fst +16 -0
  13. data/assets/fiesta/b6/match_jones_161_CM_neu_checked.parsed.xml +1225 -0
  14. data/assets/fiesta/elan/ElanFileFormat.eaf +76 -0
  15. data/assets/fiesta/elan/ElanFileFormat.pfsx +8 -0
  16. data/assets/fiesta/elan/ElanFileFormatComplexInterLayerLinks.eaf +107 -0
  17. data/assets/fiesta/elan/reflinks_example.eaf +270 -0
  18. data/assets/fiesta/elan/test_all_interlayerrelations.fst +43 -0
  19. data/assets/fiesta/head/head.fst +24 -0
  20. data/assets/fiesta/praat/mexico.ShortTextGrid +81 -0
  21. data/assets/fiesta/praat/mexico.TextGrid +104 -0
  22. data/assets/helpers/collection_ref_handler.rb +29 -0
  23. data/assets/helpers/id_ref_handler.rb +29 -0
  24. data/assets/helpers/roxml_attribute_handler.rb +57 -0
  25. data/assets/out_only/construct_and_write_spec.toe +99 -0
  26. data/assets/spec.html +554 -0
  27. data/bin/mexico +5 -0
  28. data/features/mexico.feature +9 -0
  29. data/features/step_definitions/mexico_steps.rb +0 -0
  30. data/features/support/env.rb +15 -0
  31. data/info/releasenotes/0.0.1.md +5 -0
  32. data/info/releasenotes/0.0.2.md +5 -0
  33. data/info/releasenotes/0.0.3.md +5 -0
  34. data/info/releasenotes/0.0.4.md +5 -0
  35. data/info/releasenotes/0.0.5.md +8 -0
  36. data/info/releasenotes/0.0.6.md +3 -0
  37. data/info/releasenotes/0.0.7.md +4 -0
  38. data/info/releasenotes/0.0.8.md +9 -0
  39. data/info/releasenotes/0.0.9.md +7 -0
  40. data/lib/mexico/cmd.rb +210 -0
  41. data/lib/mexico/constants.rb +82 -0
  42. data/lib/mexico/constraints/constraint.rb +85 -0
  43. data/lib/mexico/constraints/fiesta_constraints.rb +209 -0
  44. data/lib/mexico/constraints.rb +27 -0
  45. data/lib/mexico/core/corpus_core.rb +39 -0
  46. data/lib/mexico/core/design_core.rb +31 -0
  47. data/lib/mexico/core/media_type.rb +61 -0
  48. data/lib/mexico/core.rb +36 -0
  49. data/lib/mexico/fiesta/interfaces/b6_chat_game_interface.rb +222 -0
  50. data/lib/mexico/fiesta/interfaces/elan_interface.rb +143 -0
  51. data/lib/mexico/fiesta/interfaces/short_text_grid_interface.rb +99 -0
  52. data/lib/mexico/fiesta/interfaces/text_grid_interface.rb +103 -0
  53. data/lib/mexico/fiesta/interfaces.rb +31 -0
  54. data/lib/mexico/fiesta.rb +27 -0
  55. data/lib/mexico/file_system/bound_to_corpus.rb +37 -0
  56. data/lib/mexico/file_system/corpus.rb +207 -0
  57. data/lib/mexico/file_system/data.rb +96 -0
  58. data/lib/mexico/file_system/design.rb +75 -0
  59. data/lib/mexico/file_system/design_component.rb +78 -0
  60. data/lib/mexico/file_system/entry.rb +59 -0
  61. data/lib/mexico/file_system/fiesta_document.rb +344 -0
  62. data/lib/mexico/file_system/fiesta_map.rb +112 -0
  63. data/lib/mexico/file_system/head.rb +33 -0
  64. data/lib/mexico/file_system/id_ref.rb +46 -0
  65. data/lib/mexico/file_system/implicit_item_link.rb +19 -0
  66. data/lib/mexico/file_system/interval_link.rb +84 -0
  67. data/lib/mexico/file_system/item.rb +166 -0
  68. data/lib/mexico/file_system/item_link.rb +98 -0
  69. data/lib/mexico/file_system/item_links_proxy.rb +13 -0
  70. data/lib/mexico/file_system/layer.rb +89 -0
  71. data/lib/mexico/file_system/layer_connector.rb +74 -0
  72. data/lib/mexico/file_system/layer_link.rb +75 -0
  73. data/lib/mexico/file_system/local_file.rb +101 -0
  74. data/lib/mexico/file_system/participant.rb +69 -0
  75. data/lib/mexico/file_system/participant_role.rb +43 -0
  76. data/lib/mexico/file_system/point_link.rb +79 -0
  77. data/lib/mexico/file_system/property.rb +35 -0
  78. data/lib/mexico/file_system/property_map.rb +37 -0
  79. data/lib/mexico/file_system/resource.rb +174 -0
  80. data/lib/mexico/file_system/scale.rb +125 -0
  81. data/lib/mexico/file_system/section.rb +41 -0
  82. data/lib/mexico/file_system/static_collection_ref.rb +64 -0
  83. data/lib/mexico/file_system/template.rb +23 -0
  84. data/lib/mexico/file_system/trial.rb +87 -0
  85. data/lib/mexico/file_system/url.rb +65 -0
  86. data/lib/mexico/file_system.rb +62 -0
  87. data/lib/mexico/not_yet_implemented_error.rb +28 -0
  88. data/lib/mexico/util/fancy_container.rb +57 -0
  89. data/lib/mexico/util.rb +51 -0
  90. data/lib/mexico.rb +36 -0
  91. data/spec/constraints/constraints_spec.rb +306 -0
  92. data/spec/core/media_type_spec.rb +50 -0
  93. data/spec/fiesta/b6_spec.rb +43 -0
  94. data/spec/fiesta/elan_spec.rb +43 -0
  95. data/spec/fiesta/head_spec.rb +54 -0
  96. data/spec/fiesta/praat_spec.rb +54 -0
  97. data/spec/fiesta/read_spec.rb +76 -0
  98. data/spec/file_system_based/better_collection_spec.rb +142 -0
  99. data/spec/file_system_based/corpus_spec.rb +194 -0
  100. data/spec/file_system_based/design_spec.rb +100 -0
  101. data/spec/file_system_based/inter_links_spec.rb +100 -0
  102. data/spec/file_system_based/item_links_spec.rb +76 -0
  103. data/spec/file_system_based/rdf_spec.rb +177 -0
  104. data/spec/file_system_based/resource_spec.rb +111 -0
  105. data/spec/file_system_based/trial_spec.rb +129 -0
  106. data/spec/spec_helper.rb +14 -0
  107. data/spec/toe/construct_and_write_spec.rb +82 -0
  108. data/spec/toe/construction_spec.rb +110 -0
  109. data/spec/toe/item_spec.rb +58 -0
  110. data/spec/toe/layer_spec.rb +63 -0
  111. data/spec/toe/scale_spec.rb +89 -0
  112. data/spec/toe/toe_document_spec.rb +39 -0
  113. data/test/helper.rb +19 -0
  114. data/test/test_mexico.rb +7 -0
  115. metadata +357 -0
@@ -0,0 +1,87 @@
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
+ # Trials model the events from reality that form the ultimate substrate
22
+ # of a corpus. Trials are usually numbered sequentially. A trial
23
+ # stands for a specific clip or segment of reality, e.g., a time span
24
+ # and a location in space where the events under observation occurred.
25
+ class Mexico::FileSystem::Trial
26
+
27
+ include Mexico::FileSystem::BoundToCorpus
28
+ extend Mexico::FileSystem::IdRef
29
+
30
+ include ::ROXML
31
+
32
+ # identifier
33
+ xml_accessor :identifier, :from => '@identifier'
34
+
35
+ # type String
36
+ xml_accessor :name, :from => '@name'
37
+
38
+ # type String
39
+ xml_accessor :cue, :from => '@cue'
40
+
41
+ # type Integer
42
+ xml_accessor :running_number, :from => '@runningnumber', :as => Integer
43
+
44
+ # type String
45
+ xml_accessor :description, :from => "Description"
46
+
47
+ # attr_accessor :corpus
48
+ xml_accessor :design_id, :from => '@design_id'
49
+
50
+ # type Mexico::FileSystem::Design
51
+ id_ref :design
52
+
53
+ # POSEIdON-based RDF augmentation
54
+ include Poseidon
55
+
56
+ self_uri %q(http://cats.sfb673.org/Trial)
57
+ instance_uri_scheme %q(http://phoibos.sfb673.org/corpora/#{corpus.identifier}/trials/#{identifier})
58
+
59
+ rdf_property :identifier, %q(http://cats.sfb673.org/identifier)
60
+ rdf_property :name, %q(http://cats.sfb673.org/name)
61
+ rdf_property :description, %q(http://cats.sfb673.org/description)
62
+ rdf_property :cue, %q(http://cats.sfb673.org/cue)
63
+ rdf_property :running_number, %q(http://cats.sfb673.org/running_number)
64
+
65
+ # creates a new Trial object.
66
+ # @option opts [String] :identifier The identifier of the new trial object.
67
+ # @option opts [String] :description The identifier of the new trial object.
68
+ # @option opts [String] :cue The cue for the new trial object.
69
+ # @option opts [Integer] :running_number The running number for the new trial object.
70
+ def initialize(opts={})
71
+ # @corpus = corpus
72
+ [:identifier,:name,:description,:cue,:running_number].each do |att|
73
+ send("#{att}=", opts[att]) if opts.has_key?(att)
74
+ end
75
+ end
76
+
77
+ # Returns a collection of resources that are associated with this trial.
78
+ # @return [Array<Resource>] an array of resources associated with this trial.
79
+ def resources
80
+ @corpus.resources.select{ |i| i.trial === self }
81
+ end
82
+
83
+ def linked_to_design?
84
+ return design!=nil
85
+ end
86
+
87
+ end
@@ -0,0 +1,65 @@
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
+ # An URL object stands for a resource representation at the given location.
22
+ class Mexico::FileSystem::URL
23
+
24
+ include Mexico::FileSystem::BoundToCorpus
25
+ extend Mexico::FileSystem::IdRef
26
+ extend Mexico::FileSystem::StaticCollectionRef
27
+
28
+ include ::ROXML
29
+
30
+ xml_accessor :identifier, :from => '@identifier'
31
+ xml_accessor :name, :from => '@name'
32
+ xml_accessor :description, :from => 'Description'
33
+
34
+ xml_accessor :href, :from => "@href"
35
+
36
+ # POSEIdON-based RDF augmentation
37
+ include Poseidon
38
+ self_uri %q(http://cats.sfb673.org/URL)
39
+ instance_uri_scheme %q(http://phoibos.sfb673.org/corpora/#{corpus.identifier}/urls/#{identifier})
40
+ rdf_property :identifier, %q(http://cats.sfb673.org/identifier)
41
+ rdf_property :name, %q(http://cats.sfb673.org/name)
42
+ rdf_property :description, %q(http://cats.sfb673.org/description)
43
+ rdf_property :href, %q(http://cats.sfb673.org/href)
44
+
45
+ def initialize(opts={})
46
+ # @corpus = corpus
47
+ [:identifier,:name,:description].each do |att|
48
+ send("#{att}=", opts[att]) if opts.has_key?(att)
49
+ end
50
+ end
51
+
52
+ # Retrieves a bunch of meta data with information about this resource representation.
53
+ # @return [Hash] A hash containing various information (size, mime_type, availability)
54
+ def info
55
+ # @todo Implement this method stub
56
+ end
57
+
58
+ # Attempts to fetch the contents at this resource.
59
+ # @option opts [String] :format The format to be retrieved. If omitted, the standard format will be retrieved.
60
+ # @return [String or ByteArray] The file contents, as a string or binary object.
61
+ def get(opts = {} )
62
+ # @todo Implement this method stub
63
+ end
64
+
65
+ end
@@ -0,0 +1,62 @@
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 FileSystem module contains an implementation of the MExiCo
20
+ # library that works locally with a set of folders and files as
21
+ # its backend.
22
+ module Mexico::FileSystem
23
+
24
+ end
25
+
26
+ #require 'mexico/file_system/file_system_utils.rb'
27
+ #require 'mexico/file_system/xml_based_collection.rb'
28
+
29
+ require 'mexico/file_system/bound_to_corpus.rb'
30
+ require 'mexico/file_system/id_ref.rb'
31
+ require 'mexico/file_system/static_collection_ref.rb'
32
+
33
+ require 'mexico/file_system/participant_role.rb'
34
+ require 'mexico/file_system/participant.rb'
35
+ require 'mexico/file_system/local_file.rb'
36
+ require 'mexico/file_system/url.rb'
37
+ require 'mexico/file_system/resource.rb'
38
+
39
+ require 'mexico/file_system/property.rb'
40
+ require 'mexico/file_system/property_map.rb'
41
+ require 'mexico/file_system/section.rb'
42
+ require 'mexico/file_system/head.rb'
43
+ require 'mexico/file_system/scale.rb'
44
+ require 'mexico/file_system/layer.rb'
45
+ require 'mexico/file_system/layer_connector.rb'
46
+ #require 'mexico/file_system/fiesta_list.rb'
47
+ require 'mexico/file_system/fiesta_map.rb'
48
+ require 'mexico/file_system/data.rb'
49
+ require 'mexico/file_system/layer_link.rb'
50
+ require 'mexico/file_system/item_link.rb'
51
+ require 'mexico/file_system/implicit_item_link.rb'
52
+ require 'mexico/file_system/point_link.rb'
53
+ require 'mexico/file_system/interval_link.rb'
54
+ require 'mexico/file_system/item.rb'
55
+ require 'mexico/file_system/fiesta_document.rb'
56
+
57
+ require 'mexico/file_system/trial.rb'
58
+ require 'mexico/file_system/design_component.rb'
59
+ require 'mexico/file_system/design.rb'
60
+ require 'mexico/file_system/corpus.rb'
61
+
62
+
@@ -0,0 +1,28 @@
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
+ # This class provides a corpus representation that is backed up by the filesystem.
20
+ # A central Corpus definition file in the top-level folder contains an
21
+ # XML representation of the corpus structure, and all actual resources are found
22
+ # as files on a file system reachable from the top-level folder.
23
+
24
+ class NotYetImplementedError < StandardError
25
+
26
+
27
+
28
+ end
@@ -0,0 +1,57 @@
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 module contains various helper methods.
21
+ module Mexico::Util::FancyContainer
22
+
23
+ #module ClassMethods
24
+
25
+ def add_fancy_container(container_name, p_back_collection_name=nil)
26
+ back_collection_name = p_back_collection_name.nil? ? "#{container_name.to_s}_container" : p_back_collection_name
27
+ define_method(container_name) do |*args|
28
+ coll = Array.new(instance_variable_get("@#{back_collection_name}"))
29
+ if args.is_a?(Enumerable)
30
+ if args.length==1
31
+ if args.first.is_a?(String)
32
+ # one argument in string form: assume an identifier, return a single object or nil
33
+ return instance_variable_get("@#{back_collection_name}").find{|x| x.identifier == args.first }
34
+ end
35
+ if args.first.is_a?(Hash)
36
+ # one argument in string form: assume a hash with conditions
37
+ args.first.each do |key,val|
38
+ if val.is_a?(String)
39
+ coll.select!{|c| c.send(key).to_s==val }
40
+ elsif val.is_a?(Regexp)
41
+ coll.select!{|c| c.send(key).to_s=~val }
42
+ end
43
+ end
44
+ return coll
45
+ end
46
+ if args.first.is_a?(Integer)
47
+ return coll[args.first]
48
+ end
49
+ end
50
+ end
51
+ # otherwise:
52
+ orig_coll = instance_variable_get("@#{back_collection_name}")
53
+ orig_coll = [] if orig_coll.nil?
54
+ Array.new(orig_coll)
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,51 @@
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 module contains various helper methods.
21
+ module Mexico::Util
22
+
23
+ # A list of umlauts and other special characters that are word characters in German.
24
+ UMLAUTS = {
25
+ "ä" => "ae",
26
+ "ö" => "oe",
27
+ "ü" => "ue",
28
+ "ß" => "ss"
29
+ }
30
+
31
+ # Simple helper that strips away double quotes around a string.
32
+ # @param string [String] The string to be unquoted.
33
+ # @return [String] The unquoted string.
34
+ def self.strip_quotes(string)
35
+ return string.gsub(/^"/, '').gsub(/"$/, '')
36
+ end
37
+
38
+ # Helper method that takes a name and sanitizes it for use as an XML/FiESTA id.
39
+ # @param string [String] The string to be converted to an ID.
40
+ # @return [String] The resulting ID.
41
+ def self.to_xml_id(string)
42
+ result = string.downcase
43
+ UMLAUTS.each_pair do |u,v|
44
+ result.gsub!(/#{u}/, v)
45
+ end
46
+ return result.gsub(/[^\w\d]/, '')
47
+ end
48
+
49
+ end
50
+
51
+ require 'mexico/util/fancy_container'
data/lib/mexico.rb ADDED
@@ -0,0 +1,36 @@
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
+
20
+
21
+ require 'nokogiri'
22
+ require 'roxml'
23
+ require 'fileutils'
24
+
25
+ # This is the main module for the MExiCO gem.
26
+ module Mexico
27
+
28
+ end
29
+
30
+ require "mexico/core.rb"
31
+ require "mexico/util.rb"
32
+ require "mexico/constraints.rb"
33
+ require "mexico/file_system.rb"
34
+ require "mexico/constants.rb"
35
+ require "mexico/fiesta.rb"
36
+ require 'mexico/cmd.rb'