rtm 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. data/DISCLAIMER +10 -33
  2. data/LICENSE +201 -0
  3. data/README +3 -3
  4. data/lib/rtm.rb +148 -74
  5. data/lib/rtm/axes.rb +295 -0
  6. data/lib/rtm/axes/association.rb +76 -0
  7. data/lib/rtm/axes/associations.rb +96 -0
  8. data/lib/rtm/axes/assocs_names_occs.rb +56 -0
  9. data/lib/rtm/axes/characteristic.rb +68 -0
  10. data/lib/rtm/axes/characteristics.rb +93 -0
  11. data/lib/rtm/axes/string.rb +76 -0
  12. data/lib/rtm/axes/strings.rb +87 -0
  13. data/lib/rtm/axes/topic.rb +233 -0
  14. data/lib/rtm/axes/topics.rb +280 -0
  15. data/lib/rtm/{backward_compatibility.rb → deprecated/index_property_set.rb} +3 -0
  16. data/lib/rtm/engine.rb +58 -0
  17. data/lib/rtm/extensions.rb +11 -1
  18. data/lib/rtm/{locator_helpers.rb → helpers/locator.rb} +15 -4
  19. data/lib/rtm/{helpers.rb → helpers/no_output.rb} +3 -0
  20. data/lib/rtm/helpers/uri.rb +13 -0
  21. data/lib/rtm/io.rb +18 -0
  22. data/lib/rtm/io/from_xtm2_libxml.rb +2 -1
  23. data/lib/rtm/io/ontopia_io.rb +25 -0
  24. data/lib/rtm/io/tmapix.rb +234 -0
  25. data/lib/rtm/io/to_hash.rb +116 -0
  26. data/lib/rtm/io/to_jtm.rb +53 -103
  27. data/lib/rtm/io/to_rdf.rb +30 -0
  28. data/lib/rtm/io/to_string.rb +8 -6
  29. data/lib/rtm/io/to_xtm1.rb +6 -4
  30. data/lib/rtm/io/to_xtm2.rb +10 -8
  31. data/lib/rtm/io/to_yaml.rb +29 -98
  32. data/lib/rtm/navigation.rb +37 -0
  33. data/lib/rtm/navigation/association/players.rb +25 -0
  34. data/lib/rtm/navigation/name/atomify.rb +19 -0
  35. data/lib/rtm/navigation/name/characteristics.rb +33 -0
  36. data/lib/rtm/navigation/occurrence/atomify.rb +19 -0
  37. data/lib/rtm/navigation/occurrence/characteristics.rb +33 -0
  38. data/lib/rtm/navigation/topic/characteristics.rb +33 -0
  39. data/lib/rtm/navigation/topic/indicators.rb +31 -0
  40. data/lib/rtm/navigation/topic/items.rb +31 -0
  41. data/lib/rtm/navigation/topic/locators.rb +31 -0
  42. data/lib/rtm/navigation/topic/players.rb +27 -0
  43. data/lib/rtm/navigation/topic/supertypes.rb +162 -0
  44. data/lib/rtm/navigation/topic/traverse.rb +51 -0
  45. data/lib/rtm/navigation/topic/types.rb +107 -0
  46. data/lib/rtm/psi.rb +33 -2
  47. data/lib/rtm/sugar.rb +34 -0
  48. data/lib/rtm/sugar/association/hash_access.rb +46 -0
  49. data/lib/rtm/sugar/occurrence/dynamic_value.rb +75 -0
  50. data/lib/rtm/{pimp_my_api.rb → sugar/occurrence/externalize.rb} +3 -0
  51. data/lib/rtm/sugar/role/counterparts.rb +133 -46
  52. data/lib/rtm/sugar/topic/characteristics.rb +126 -12
  53. data/lib/rtm/sugar/topic/counterparts.rb +130 -7
  54. data/lib/rtm/sugar/topic/hash_access.rb +140 -30
  55. data/lib/rtm/sugar/topic/scoped.rb +65 -0
  56. data/lib/rtm/sugar/topic/topic_ref.rb +35 -0
  57. data/lib/rtm/sugar/topic/typed.rb +159 -0
  58. data/lib/rtm/sugar/typed/types.rb +38 -0
  59. data/lib/rtm/validation.rb +8 -5
  60. data/lib/rtm/version.rb +18 -0
  61. data/spec/helpers/spec_exampleexamplegroup.rb +14 -0
  62. data/spec/rtm/axes/association_spec.rb +88 -0
  63. data/spec/rtm/axes/associations_spec.rb +60 -0
  64. data/spec/rtm/axes/assocs_names_occs_spec.rb +9 -0
  65. data/spec/rtm/axes/characteristic_spec.rb +90 -0
  66. data/spec/rtm/axes/characteristics_spec.rb +85 -0
  67. data/spec/rtm/axes/string_spec.rb +145 -0
  68. data/spec/rtm/axes/strings_spec.rb +168 -0
  69. data/spec/rtm/axes/topic_spec.rb +124 -0
  70. data/spec/rtm/axes/topics_spec.rb +103 -0
  71. data/spec/rtm/base_spec.rb +32 -0
  72. data/spec/rtm/io/tmapix_spec.rb +85 -0
  73. data/spec/rtm/navigation/association/players_spec.rb +58 -0
  74. data/spec/rtm/navigation/association_spec.rb +52 -0
  75. data/spec/rtm/navigation/name/atomify_spec.rb +27 -0
  76. data/spec/rtm/navigation/name/characteristics_spec.rb +34 -0
  77. data/spec/rtm/navigation/name_spec.rb +52 -0
  78. data/spec/rtm/navigation/occurrence/atomify_spec.rb +27 -0
  79. data/spec/rtm/navigation/occurrence/characteristics_spec.rb +34 -0
  80. data/spec/rtm/navigation/occurrence_spec.rb +52 -0
  81. data/spec/rtm/navigation/string_spec.rb +51 -0
  82. data/spec/rtm/navigation/topic/characteristics_spec.rb +55 -0
  83. data/spec/rtm/navigation/topic/indicators_spec.rb +43 -0
  84. data/spec/rtm/navigation/topic/items_spec.rb +44 -0
  85. data/spec/rtm/navigation/topic/locators_spec.rb +44 -0
  86. data/spec/rtm/navigation/topic/players_spec.rb +48 -0
  87. data/spec/rtm/navigation/topic/scope_spec.rb +41 -0
  88. data/spec/rtm/navigation/topic/supertypes_spec.rb +376 -0
  89. data/spec/rtm/navigation/topic/traverse_spec.rb +64 -0
  90. data/spec/rtm/navigation/topic/types_spec.rb +195 -0
  91. data/spec/rtm/navigation/topic_spec.rb +153 -0
  92. data/spec/rtm/sugar/association/hash_access_spec.rb +55 -0
  93. data/spec/rtm/sugar/occurrence/dynamic_value_spec.rb +16 -0
  94. data/spec/rtm/sugar/role/counterparts_spec.rb +191 -0
  95. data/spec/rtm/sugar/topic/characteristics_spec.rb +318 -0
  96. data/spec/rtm/sugar/topic/counterparts_spec.rb +184 -0
  97. data/spec/rtm/sugar/topic/hash_access_spec.rb +234 -0
  98. data/spec/rtm/sugar/topic/scoped_spec.rb +131 -0
  99. data/spec/rtm/sugar/topic/topic_ref_spec.rb +44 -0
  100. data/spec/rtm/sugar/topic/typed_spec.rb +155 -0
  101. data/spec/rtm/sugar/typed/types_spec.rb +24 -0
  102. data/spec/rtm/tmapi/core/association_spec.rb +169 -0
  103. data/spec/rtm/tmapi/core/construct_spec.rb +25 -0
  104. data/spec/rtm/tmapi/core/name_spec.rb +85 -0
  105. data/spec/rtm/tmapi/core/occurrence_spec.rb +96 -0
  106. data/spec/rtm/tmapi/core/reifiable_spec.rb +168 -0
  107. data/spec/rtm/tmapi/core/role_spec.rb +73 -0
  108. data/spec/rtm/tmapi/core/scoped_spec.rb +403 -0
  109. data/spec/rtm/tmapi/core/topic_map_spec.rb +648 -0
  110. data/spec/rtm/tmapi/core/topic_spec.rb +992 -0
  111. data/spec/rtm/tmapi/core/typed_spec.rb +112 -0
  112. data/spec/rtm/tmapi/core/variant_spec.rb +52 -0
  113. data/spec/rtm/tmapi/ext/java_util_set_spec.rb +34 -0
  114. data/spec/rtm/tmapi_spec.rb +44 -0
  115. data/spec/rtm/utils/sparql_spec.rb +26 -0
  116. data/spec/rtm_spec.rb +94 -0
  117. data/spec/spec_helper.rb +23 -0
  118. data/test/base_unit_test.rb +161 -0
  119. data/test/{base_test.rb → base_unit_test_tmapi.rb} +46 -43
  120. metadata +122 -66
  121. data/COPYRIGHT +0 -4
  122. data/lib/Rakefile.rb +0 -42
  123. data/lib/activetopicmaps.rb +0 -278
  124. data/lib/rtm/backend/active_record.rb +0 -58
  125. data/lib/rtm/backend/active_record/001_initial_schema.rb +0 -116
  126. data/lib/rtm/backend/active_record/association_and_role.rb +0 -33
  127. data/lib/rtm/backend/active_record/locators.rb +0 -55
  128. data/lib/rtm/backend/active_record/name_variant_occurrence.rb +0 -45
  129. data/lib/rtm/backend/active_record/quaaxtm2rtm.rb +0 -113
  130. data/lib/rtm/backend/active_record/quaaxtm2rtmviews.rb +0 -134
  131. data/lib/rtm/backend/active_record/set_wrapper.rb +0 -98
  132. data/lib/rtm/backend/active_record/tm_construct.rb +0 -62
  133. data/lib/rtm/backend/active_record/tm_delegator.rb +0 -345
  134. data/lib/rtm/backend/active_record/tm_set_delegator.rb +0 -195
  135. data/lib/rtm/backend/active_record/tmdm.rb +0 -298
  136. data/lib/rtm/backend/active_record/topic.rb +0 -87
  137. data/lib/rtm/backend/active_record/topic_map.rb +0 -314
  138. data/lib/rtm/backend/active_record/traverse_associations.rb +0 -87
  139. data/lib/rtm/base.rb +0 -92
  140. data/lib/rtm/connect.rb +0 -92
  141. data/lib/rtm/core_ext.rb +0 -6
  142. data/lib/rtm/io/from_xtm2.rb +0 -263
  143. data/lib/rtm/merging/merging.rb +0 -307
  144. data/lib/rtm/sugar/topic/identifier_direct.rb +0 -11
  145. data/lib/rtm/sugar/topic/predefined_associations.rb +0 -42
  146. data/lib/run_main_project.rb +0 -16
@@ -0,0 +1,280 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
4
+ module RTM::Axes
5
+ module Topics
6
+
7
+ def self.extended(k)
8
+ k.extend ArrayProxy
9
+ end
10
+
11
+ def result
12
+ self.map{|i| i.construct}
13
+ end
14
+ alias :tmapi :result
15
+
16
+ # ---- characteristics-axis ----------------------------------------------#
17
+
18
+ # Returns all Names and Occurrences of these Topics.
19
+ # If an identifier is given, only those Names and Occurrences are returned,
20
+ # whose type or supertypes include the identifier.
21
+ #
22
+ # Identifier may be a Topic or Topic-Reference.
23
+ #
24
+ # The result may be empty.
25
+ #
26
+ # :call-seq:
27
+ # characteristics -> Array of Names and Occurrences
28
+ # characteristics(identifier) -> Array of Names and Occurrences
29
+ #
30
+ def characteristics(type=:any)
31
+ _res = self.inject([]){|all,containee| all << containee.send(:characteristics,type)}.flatten
32
+ ### NO UNIQUE NEEDED
33
+ _res = _res.extend(Characteristics)
34
+ _res
35
+ end
36
+
37
+ # ---- indicators-axis ---------------------------------------------------#
38
+
39
+ # Returns all indicators (subject identifiers) of these Topics.
40
+ #
41
+ # The result may be empty.
42
+ #
43
+ # :call-seq:
44
+ # indicators -> Array of Strings
45
+ #
46
+ def indicators
47
+ #self = Array of TopicProxies
48
+ #containee: RTM::Axes::Topic
49
+ #send -> Array of Strings
50
+ self.inject([]){|all,containee| all << containee.send(:indicators)}.flatten
51
+ ### NO UNIQUE NEEDED
52
+ end
53
+
54
+ # ---- item-axis ---------------------------------------------------------#
55
+
56
+ # Returns one item identifier for each of these Topics, only if
57
+ # if the Topic has an item identifier.
58
+ #
59
+ # The result may be an empty Array.
60
+ #
61
+ # :call-seq:
62
+ # item -> Array of Strings
63
+ #
64
+ def item
65
+ #self = Array of TopicProxies
66
+ #containee: RTM::Axes::Topic
67
+ #send -> Array of (String or nil)s
68
+ _res = self.inject([]){|all,containee| all << containee.send(:item)}.flatten
69
+ _res = _res.select{|i| i}
70
+ ### NO UNIQUE NEEDED
71
+ end
72
+
73
+ # ---- locators-axis -----------------------------------------------------#
74
+
75
+ # Returns all subject locators of these Topics.
76
+ #
77
+ # The result may be empty.
78
+ #
79
+ # :call-seq:
80
+ # locators -> Array of Strings
81
+ #
82
+ def locators
83
+ self.inject([]){|all,containee| all << containee.send(:locators)}.flatten
84
+ ### NO UNIQUE NEEDED
85
+ end
86
+
87
+ # ---- players-axis ------------------------------------------------------#
88
+
89
+ # Returns all Associations in which these Topics play a Role.
90
+ #
91
+ # The optional
92
+ # identifier specifies the type of the Roles to be considered.
93
+ # The identifier may be a Topic or Topic-Reference.
94
+ #
95
+ # Multiple instances of the same Association are possible.
96
+ # The result may be empty.
97
+ #
98
+ # :call-seq:
99
+ # reverse_players -> Array of Associations
100
+ # reverse_players(identifier) -> Array of Associations
101
+ #
102
+ def reverse_players(type=:any)
103
+ _res = self.inject([]){|all,containee| all << containee.send(:reverse_players,type)}.flatten
104
+ ### NO UNIQUE ###
105
+ _res = _res.extend(Associations)
106
+ _res
107
+ end
108
+
109
+ # ---- reifier-axis ------------------------------------------------------#
110
+
111
+ # Returns the Constructs which are reified by one of these Topics
112
+ # only if such Constructs exist.
113
+ #
114
+ # :call-seq:
115
+ # reifier -> Array of Associations, Names and Occurrences
116
+ #
117
+ def reifier
118
+ _res = self.inject([]){|all,containee| all << containee.send(:reifier)}.flatten
119
+ _res = _res.select{|i| i} #reject nil
120
+ ### NO UNIQUE NEEDED
121
+ _res = _res.extend(AssocsNamesOccs)
122
+ _res
123
+ end
124
+
125
+ # ---- roles-axis --------------------------------------------------------#
126
+
127
+ # Returns all Associations that have Roles that have one of
128
+ # these Topics as Roletype. Multiple instances of the same
129
+ # Association are possible.
130
+ #
131
+ # The result may be empty.
132
+ #
133
+ # :call-seq:
134
+ # reverse_roles -> Array of Associations
135
+ #
136
+ def reverse_roles
137
+ _res = self.inject([]){|all,containee| all << containee.send(:reverse_roles)}.flatten
138
+ ### NO UNIQUE ###
139
+ _res = _res.extend(Associations)
140
+ _res
141
+ end
142
+
143
+ # ---- scope-axis --------------------------------------------------------#
144
+
145
+ # Returns all Associations, Names and Occurrences that include at least one of these
146
+ # Topics (themes) in their scope.
147
+ #
148
+ # The result may be empty.
149
+ #
150
+ # :call-seq:
151
+ # reverse_scope -> Array of Names, Associations and Occurrences
152
+ #
153
+ def reverse_scope
154
+ _res = self.inject([]){|all,containee| all << containee.send(:reverse_scope)}.flatten
155
+ ### FLAG UNIQUE ###
156
+ _res = _res.map{|i| i.construct}.uniq.map{|i| i.axes}
157
+ ### ###
158
+ _res = _res.extend(AssocsNamesOccs)
159
+ _res
160
+ end
161
+
162
+ # ---- supertypes-axis ---------------------------------------------------#
163
+
164
+ # Returns all supertypes of all of these Topics. The result includes
165
+ # all direct supertypes
166
+ # and the supertypes of these direct supertypes.
167
+ #
168
+ # The result may be an empty Array.
169
+ #
170
+ # :call-seq:
171
+ # supertypes -> Array of Topics
172
+ #
173
+ def supertypes
174
+ _res = self.define_helper(:supertypes)
175
+ #_res = self.inject([]){|all,containee| all << containee.send(:supertypes)}.flatten
176
+ ### FLAG UNIQUE ###
177
+ _res = _res.map{|i| i.construct}.uniq.map{|i| i.axes}
178
+ ### ###
179
+ _res = _res.extend(Topics)
180
+ _res
181
+ end
182
+
183
+ # Returns all subtypes of all of these Topics. The result includes the direct subtypes
184
+ # and the subtypes of these direct subtypes.
185
+ #
186
+ # The result may be an empty Array.
187
+ #
188
+ # :call-seq:
189
+ # subtypes -> Array of Topics
190
+ #
191
+ def subtypes
192
+ _res = self.inject([]){|all,containee| all << containee.send(:subtypes)}.flatten
193
+ ### FLAG UNIQUE ###
194
+ _res = _res.map{|i| i.construct}.uniq.map{|i| i.axes}
195
+ ### ###
196
+ _res = _res.extend(Topics)
197
+ _res
198
+ end
199
+
200
+ alias reverse_subtypes supertypes
201
+ alias reverse_supertypes subtypes
202
+
203
+ # ---- traverse-axis ---------------------------------------------------#
204
+
205
+ # First computes all Associations where these Topics play a Role.
206
+ # There, the optional identifier filters the Associations for their type.
207
+ #
208
+ # Returns all Players of all Roles in these Associations.
209
+ # Each Topic is deducted ones from the returned Array.
210
+ # The result may be empty.
211
+ #
212
+ # The identifier may be a Topic or Topic-Reference.
213
+ #
214
+ # :call-seq:
215
+ # traverse(identifier) -> Array of Topics
216
+ #
217
+ def traverse(type=:any)
218
+ _res = self.inject([]){|all,containee| all << containee.send(:traverse,type)}.flatten
219
+ ### NO UNIQUE ###
220
+ _res = _res.extend(Topics)
221
+ _res
222
+ end
223
+
224
+ # Always returns an empty Array
225
+ #
226
+ # :call-seq:
227
+ # reverse_traverse -> Array of Topics
228
+ #
229
+ def reverse_traverse
230
+ _res = [] #HARDCODED
231
+ _res.extend(Topics)
232
+ end
233
+
234
+ # ---- types-axis --------------------------------------------------------#
235
+
236
+ # Returns the Topics these Topics are instances of. Calls
237
+ # the TMAPI getTypes method.
238
+ #
239
+ # The result may be empty.
240
+ #
241
+ # :call-seq:
242
+ # types -> Array of Topics
243
+ #
244
+ def types
245
+ #self = Array of TopicProxies
246
+ #containee: RTM::Axes::Topic
247
+ #send -> Array of TopicProxies
248
+ #uniq -> Topics in Array, call unique on Array
249
+ #convert to TopicProxies again
250
+ #extend result-Array
251
+ _res = self.inject([]){|all,containee| all << containee.send(:types)}.flatten
252
+ ### FLAG UNIQUE ###
253
+ _res = _res.map{|i| i.construct}.uniq.map{|i| i.axes}
254
+ ### ###
255
+ _res.extend(Topics)
256
+ _res
257
+ end
258
+
259
+ # Returns the Topics which are instances of these Topics.
260
+ # Uses the TMAPI TypeInstanceIndex.
261
+ #
262
+ # The result may be empty.
263
+ #
264
+ # :call-seq:
265
+ # instances -> Array of Topics
266
+ #
267
+ def instances
268
+ _res = self.inject([]){|all,containee| all << containee.send(:instances)}.flatten
269
+ ### FLAG UNIQUE ###
270
+ _res = _res.map{|i| i.construct}.uniq.map{|i| i.axes}
271
+ ### ###
272
+ _res.extend(Topics)
273
+ _res
274
+ end
275
+
276
+ alias reverse_types instances
277
+ alias reverse_instances types
278
+
279
+ end
280
+ end
@@ -1,3 +1,6 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
1
4
  class RTM::AR::Topic
2
5
  extend RTM::AR::TraverseAssociations
3
6
  def self.index_property_set(*args)
data/lib/rtm/engine.rb ADDED
@@ -0,0 +1,58 @@
1
+ module RTM
2
+ class Engine
3
+ def self.abstract?
4
+ self == Engine
5
+ end
6
+
7
+ def self.inherited(subclass)
8
+ Engine.add(subclass) # this MUST be Engine and not self! Otherwise every intermediate class in the inheritance chain will have it's own list
9
+ end
10
+
11
+ def self.add(engine)
12
+ @engines ||= []
13
+ @engines << engine
14
+ end
15
+
16
+ def self.identifier(i=nil)
17
+ if i
18
+ # setter / declaration
19
+ @identifier = i
20
+ else
21
+ # getter
22
+ @identifier
23
+ end
24
+ end
25
+
26
+ def self.all
27
+ @engines ||= []
28
+ @engines.reject!{|e| e.abstract?} # this needs to be done here because in the inherited hook the method is not yet available.
29
+ @engines
30
+ end
31
+
32
+ def self.list
33
+ all.map{|e| e.identifier}
34
+ end
35
+
36
+ def self.[](identifier)
37
+ all.find {|e| e.identifier == identifier}
38
+ end
39
+
40
+ def self.load(engine_name)
41
+ begin
42
+ require "rtm/#{engine_name}"
43
+ rescue LoadError
44
+ engine_path = File.expand_path(File.join(File.dirname(__FILE__), "../../../rtm-#{engine_name}/lib"))
45
+ if File.directory?(engine_path)
46
+ $:.unshift engine_path
47
+ require "rtm/#{engine_name}"
48
+ end
49
+ end
50
+ end
51
+
52
+ attr_reader :connections
53
+ def initialize(params={})
54
+ @params = params
55
+ end
56
+
57
+ end
58
+ end
@@ -1,3 +1,6 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
1
4
  module RTM
2
5
  # Register a module as extension.
3
6
  #
@@ -16,4 +19,11 @@ module RTM
16
19
  const_get(const).send(:include, plugin_mod.const_get(const) ) if const_defined?(const)
17
20
  end
18
21
  end
19
- end
22
+ module AR
23
+ def self.register_extension(plugin_mod)
24
+ plugin_mod.constants.each do |const|
25
+ const_get(const).send(:include, plugin_mod.const_get(const) ) if const_defined?(const)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,6 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
1
4
  module RTM
2
5
  # Some helpers for locators which could ideally mixed into String and Locator.
3
6
  # Anyway, they are not here to not clutter up the namespace too much.
@@ -5,7 +8,9 @@ module RTM
5
8
  # removes "=" (and possible whitespace thereafter) from the beginning of a String or Locator if it is there
6
9
  def self.slo2iri(slo)
7
10
  slo = slo.to_s
8
- slo = slo[1..-1].lstrip if slo[0] == "="[0] # remove = if slo starts with it
11
+ slo =~ /^(=|sl:)\s*(.+)/
12
+ return $2 if $2
13
+ # old: slo[1..-1].lstrip if slo[0] == "="[0] # remove = if slo starts with it
9
14
  slo
10
15
  end
11
16
 
@@ -17,7 +22,8 @@ module RTM
17
22
 
18
23
  # returns true if the String or Locator given starts with "="
19
24
  def self.is_a_slo?(iri)
20
- iri.to_s[0] == "="[0]
25
+ # iri.to_s[0] == "="[0] # old version
26
+ iri =~ /^(=|sl:)\s*(.+)/
21
27
  end
22
28
 
23
29
  def self.iid2iri(slo)
@@ -33,7 +39,12 @@ module RTM
33
39
  # returns true if the String or Locator given starts with "^".
34
40
  # This catches only the prefixing-style, not the local-identifier (non-absolute-iri) style
35
41
  def self.is_a_iid?(iri)
36
- iri.to_s[0] == "^"[0]
37
- end
42
+ iri =~ /^(\^|ii:)\s*(.*)/
43
+ # iri.to_s[0] == "^"[0] # old version
44
+ end
45
+
46
+ def self.is_a_sid?(iri)
47
+ iri =~ /^(si:)\s*(.+)/
48
+ end
38
49
  end
39
50
  end
@@ -1,3 +1,6 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
1
4
  # Executes the given block while suppressing all standard output.
2
5
  def no_output
3
6
  $stdout = File.open( PLATFORM =~ /mswin/ ? "NUL" : "/dev/null", "w" )
@@ -0,0 +1,13 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
4
+ module RTM::RTM
5
+ def is_uri?(test)
6
+ begin
7
+ URI(test)
8
+ rescue Exception => e
9
+ end
10
+
11
+ e ? false : true
12
+ end
13
+ end
data/lib/rtm/io.rb ADDED
@@ -0,0 +1,18 @@
1
+ # Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
2
+ # License: Apache License, Version 2.0
3
+
4
+ require 'rtm/io/to_rdf'
5
+ require 'rtm/io/to_hash'
6
+
7
+
8
+ # Check if JSON is available and load JTM if it is
9
+ if Object.const_defined?(:JSON)
10
+ require 'rtm/io/to_jtm'
11
+ end
12
+ # old code to check for JSON (has Gem-dependency)
13
+ #require 'rtm/io/to_jtm' unless (Gem.source_index.find_name('json/ext').empty? && Gem.source_index.find_name('json/pure').empty?)
14
+
15
+
16
+ require 'rtm/io/to_yaml'
17
+ require 'rtm/io/tmapix'
18
+ require 'rtm/io/to_string'