rtm 0.2.0 → 0.2.1
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.
- data/README +38 -3
- data/lib/rtm.rb +25 -47
- data/lib/rtm/axes.rb +7 -4
- data/lib/rtm/axes/association.rb +1 -1
- data/lib/rtm/axes/associations.rb +1 -1
- data/lib/rtm/axes/characteristic.rb +1 -1
- data/lib/rtm/axes/characteristics.rb +1 -1
- data/lib/rtm/axes/topic.rb +3 -3
- data/lib/rtm/axes/topics.rb +3 -3
- data/lib/rtm/engine.rb +48 -5
- data/lib/rtm/extensions.rb +58 -8
- data/lib/rtm/io.rb +2 -1
- data/lib/rtm/io/tmapix_from.rb +155 -0
- data/lib/rtm/io/tmapix_to.rb +223 -0
- data/lib/rtm/io/to_hash.rb +79 -41
- data/lib/rtm/io/to_jtm.rb +1 -1
- data/lib/rtm/io/to_rdf.rb +20 -5
- data/lib/rtm/io/to_string.rb +13 -2
- data/lib/rtm/io/to_yaml.rb +39 -11
- data/lib/rtm/navigation.rb +1 -15
- data/lib/rtm/navigation/association/players.rb +1 -1
- data/lib/rtm/navigation/name/characteristics.rb +1 -1
- data/lib/rtm/navigation/occurrence/characteristics.rb +1 -1
- data/lib/rtm/navigation/topic/characteristics.rb +1 -1
- data/lib/rtm/navigation/topic/players.rb +1 -1
- data/lib/rtm/navigation/topic/supertypes.rb +21 -17
- data/lib/rtm/navigation/topic/traverse.rb +1 -1
- data/lib/rtm/navigation/topic/types.rb +6 -4
- data/lib/rtm/psi.rb +6 -0
- data/lib/rtm/sugar.rb +42 -29
- data/lib/rtm/sugar/association/hash_access.rb +3 -3
- data/lib/rtm/sugar/occurrence/dynamic_value.rb +39 -56
- data/lib/rtm/sugar/occurrence/external.rb +53 -0
- data/lib/rtm/sugar/reifiable/reifier.rb +21 -0
- data/lib/rtm/sugar/role/counterparts.rb +12 -6
- data/lib/rtm/sugar/topic/best_name.rb +74 -0
- data/lib/rtm/sugar/topic/characteristics.rb +10 -10
- data/lib/rtm/sugar/topic/counterparts.rb +131 -119
- data/lib/rtm/sugar/topic/scoped.rb +102 -53
- data/lib/rtm/sugar/topic/topic_ref.rb +63 -12
- data/lib/rtm/sugar/topic/typed.rb +50 -2
- data/lib/rtm/sugar/topic_map/query_cache.rb +66 -0
- data/lib/rtm/sugar/topic_map/themes.rb +53 -0
- data/lib/rtm/sugar/typed/types.rb +1 -1
- data/lib/rtm/validation.rb +2 -2
- data/lib/rtm/version.rb +18 -6
- data/spec/rtm/axes/string_spec.rb +7 -7
- data/spec/rtm/axes/strings_spec.rb +10 -10
- data/spec/rtm/io/tmapix_from_spec.rb +76 -0
- data/spec/rtm/io/tmapix_to_spec.rb +159 -0
- data/spec/rtm/io/to_hash_spec.rb +90 -0
- data/spec/rtm/io/to_rdf_spec.rb +37 -0
- data/spec/rtm/io/to_string_spec.rb +122 -0
- data/spec/rtm/io/to_yaml_spec.rb +89 -0
- data/spec/rtm/sugar/occurrence/dynamic_value_spec.rb +156 -1
- data/spec/rtm/sugar/occurrence/external_spec.rb +129 -0
- data/spec/rtm/sugar/reifiable/reifier_spec.rb +41 -0
- data/spec/rtm/sugar/role/counterparts_spec.rb +174 -172
- data/spec/rtm/sugar/topic/best_name_spec.rb +25 -0
- data/spec/rtm/sugar/topic/characteristics_spec.rb +20 -5
- data/spec/rtm/sugar/topic/counterparts_spec.rb +41 -1
- data/spec/rtm/sugar/topic/hash_access_spec.rb +1 -1
- data/spec/rtm/sugar/topic/scoped_spec.rb +178 -114
- data/spec/rtm/sugar/topic/topic_ref_spec.rb +10 -10
- data/spec/rtm/sugar/topic/typed_spec.rb +196 -134
- data/spec/rtm/sugar/topic_map/themes_spec.rb +67 -0
- data/spec/rtm/sugar/typed/types_spec.rb +1 -1
- data/spec/rtm/tmapi/core/association_spec.rb +2 -2
- data/spec/rtm/tmapi/core/datatype_aware_spec.rb +236 -0
- data/spec/rtm/tmapi/core/name_spec.rb +186 -1
- data/spec/rtm/tmapi/core/occurrence_spec.rb +24 -67
- data/spec/rtm/tmapi/core/reifiable_spec.rb +2 -2
- data/spec/rtm/tmapi/core/scoped_spec.rb +40 -2
- data/spec/rtm/tmapi/core/topic_map_spec.rb +98 -30
- data/spec/rtm/tmapi/core/topic_spec.rb +558 -82
- data/spec/rtm/tmapi/core/variant_spec.rb +3 -3
- data/spec/rtm_spec.rb +0 -1
- data/spec/spec_helper.rb +7 -2
- data/test/javalibs/junit-4.5.jar +0 -0
- data/test/javalibs/tmapi-2.0-tests.jar +0 -0
- data/test/tmapi_tests.rb +25 -0
- metadata +66 -11
- data/lib/rtm/io/ontopia_io.rb +0 -25
- data/lib/rtm/io/tmapix.rb +0 -234
- data/lib/rtm/sugar/occurrence/externalize.rb +0 -31
- data/spec/rtm/io/tmapix_spec.rb +0 -85
- data/test/base_unit_test.rb +0 -161
- data/test/base_unit_test_tmapi.rb +0 -165
data/lib/rtm/io.rb
CHANGED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
module RTM::IO
|
|
5
|
+
# Import for TMAPI Topic Maps
|
|
6
|
+
# Utilizing the TMAPIX libary http://code.google.com/p/tmapix/
|
|
7
|
+
# Consequently the deserializers provided here are only wrappers
|
|
8
|
+
|
|
9
|
+
module TmapiXFrom
|
|
10
|
+
module TopicMap
|
|
11
|
+
|
|
12
|
+
def from_anything(reader_class, *args)
|
|
13
|
+
raise "Only supported for TMAPI backends!!" unless self.kind_of?(Java::OrgTmapiCore::TopicMap) || self.kind_of?(Java::OrgTmapiCore::TopicMapSystem)
|
|
14
|
+
|
|
15
|
+
params = {}
|
|
16
|
+
# See if we got a params hash. It must be at the end, if it is given.
|
|
17
|
+
# Take it off, so it won't be unshifted later.
|
|
18
|
+
params = args.pop if args.last.is_a?(Hash)
|
|
19
|
+
|
|
20
|
+
# Take the source as next (i.e. second after the writer) positional parameter or from hash.
|
|
21
|
+
# Leave nil if neither found.
|
|
22
|
+
source = args.shift || params[:source]
|
|
23
|
+
|
|
24
|
+
# Take the base_iri as next (i.e. third after the file) positional parameter or from the hash.
|
|
25
|
+
# Use the topic maps's base_iri if neither found.
|
|
26
|
+
base_iri = args.shift || params[:base_iri]
|
|
27
|
+
unless base_iri
|
|
28
|
+
if self.kind_of?(RTM::TopicMap)
|
|
29
|
+
base_iri = self.base_iri
|
|
30
|
+
else
|
|
31
|
+
base_iri = "imported:FIXME"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
if self.kind_of?(RTM::TopicMap)
|
|
36
|
+
topic_map = self
|
|
37
|
+
else
|
|
38
|
+
topic_map = create(base_iri)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
reader_class.new(topic_map, java.io.File.new(source)).read
|
|
42
|
+
topic_map
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Reads a Topic Map from an LTM File
|
|
46
|
+
# whose location is given as String parameter.
|
|
47
|
+
#
|
|
48
|
+
# :call-seq:
|
|
49
|
+
# from_ltm(filename)
|
|
50
|
+
#
|
|
51
|
+
def from_ltm(*args)
|
|
52
|
+
from_anything(org.tmapix.io.LTMTopicMapReader, *args)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Reads a Topic Map from an CTM File
|
|
56
|
+
# whose location is given as String parameter.
|
|
57
|
+
#
|
|
58
|
+
# :call-seq:
|
|
59
|
+
# from_ctm(filename)
|
|
60
|
+
#
|
|
61
|
+
def from_ctm(*args)
|
|
62
|
+
from_anything(org.tmapix.io.CTMTopicMapReader, *args)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Reads a JSON Topic Maps (JTM) File
|
|
66
|
+
# whose location is given as String parameter.
|
|
67
|
+
#
|
|
68
|
+
# :call-seq:
|
|
69
|
+
# from_jtm(filename)
|
|
70
|
+
#
|
|
71
|
+
def from_jtm(*args)
|
|
72
|
+
# seems not to acceped all files that are found to be valid by the JTM validator
|
|
73
|
+
from_anything(org.tmapix.io.JTMTopicMapReader, *args)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Reads a Friendly Topic Maps XML (TM/XML) File
|
|
77
|
+
# independent of the version
|
|
78
|
+
# whose location is given as String parameter.
|
|
79
|
+
#
|
|
80
|
+
# :call-seq:
|
|
81
|
+
# from_tmxml(filename)
|
|
82
|
+
#
|
|
83
|
+
def from_tmxml(*args)
|
|
84
|
+
from_anything(org.tmapix.io.TMXMLTopicMapReader, *args)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Reads a XML Topic Maps (XTM) 1.0 File
|
|
88
|
+
# whose location is given as String parameter.
|
|
89
|
+
#
|
|
90
|
+
# :call-seq:
|
|
91
|
+
# from_xtm10(filename)
|
|
92
|
+
#
|
|
93
|
+
def from_xtm10(*args)
|
|
94
|
+
from_anything(org.tmapix.io.XTM10TopicMapReader, *args)
|
|
95
|
+
end
|
|
96
|
+
alias :from_xtm1 :from_xtm10
|
|
97
|
+
|
|
98
|
+
# Reads a XML Topic Maps (XTM) 2.0 File
|
|
99
|
+
# whose location is given as String parameter.
|
|
100
|
+
#
|
|
101
|
+
# :call-seq:
|
|
102
|
+
# from_xtm20(filename)
|
|
103
|
+
#
|
|
104
|
+
def from_xtm20(*args)
|
|
105
|
+
from_xtm(*args)
|
|
106
|
+
end
|
|
107
|
+
alias :from_xtm2 :from_xtm20
|
|
108
|
+
|
|
109
|
+
# Reads a XML Topic Maps (XTM) File
|
|
110
|
+
# independent of the version
|
|
111
|
+
# whose location is given as String parameter.
|
|
112
|
+
#
|
|
113
|
+
# :call-seq:
|
|
114
|
+
# from_xtm(filename)
|
|
115
|
+
#
|
|
116
|
+
def from_xtm(*args)
|
|
117
|
+
from_anything(org.tmapix.io.XTMTopicMapReader, *args)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Reads a Notation3 (N3) File
|
|
121
|
+
# whose location is given as String .
|
|
122
|
+
# The source vocabulary must
|
|
123
|
+
# provide the mapping vocabulary.
|
|
124
|
+
# The syntax of the vocabulary is guessed.
|
|
125
|
+
#
|
|
126
|
+
# :call-seq:
|
|
127
|
+
# from_n3(filename, source vocabulary)
|
|
128
|
+
#
|
|
129
|
+
def from_n3(filename, vocab)
|
|
130
|
+
raise "Only supported for TMAPI backends!!" unless self.kind_of? Java::OrgTmapiCore::TopicMap
|
|
131
|
+
reader = org.tmapix.io.N3TopicMapReader.new self, java.io.File.new(filename)
|
|
132
|
+
reader.setMappingSource(java.io.File.new(vocab))
|
|
133
|
+
reader.read
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Reads a RDF/XML File
|
|
137
|
+
# whose location is given as String
|
|
138
|
+
# The source vocabulary must
|
|
139
|
+
# provide the mapping vocabulary.
|
|
140
|
+
# The syntax of the vocabulary is guessed.
|
|
141
|
+
#
|
|
142
|
+
# :call-seq:
|
|
143
|
+
# from_rdfxml(filename, source vocabulary)
|
|
144
|
+
#
|
|
145
|
+
def from_rdfxml(filename, vocab)
|
|
146
|
+
raise "Only supported for TMAPI backends!!" unless self.kind_of? Java::OrgTmapiCore::TopicMap
|
|
147
|
+
reader = org.tmapix.io.RDFXMLTopicMapReader.new self, java.io.File.new(filename)
|
|
148
|
+
reader.setMappingSource(java.io.File.new(vocab))
|
|
149
|
+
reader.read
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
TopicMapSystem = TopicMap # We want importers for both, TopicMap and TopicMapSystem
|
|
153
|
+
RTM.register_extension(self)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
module RTM::IO
|
|
5
|
+
# Export of TMAPI Topic Maps
|
|
6
|
+
# Utilizing the TMAPIX libary http://code.google.com/p/tmapix/
|
|
7
|
+
# Consequently the serializers provided here are only wrappers
|
|
8
|
+
|
|
9
|
+
module TmapiXTo
|
|
10
|
+
module TopicMap
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
# Serializes a Topic Map using the given writer.
|
|
14
|
+
#
|
|
15
|
+
# If the optional file is given (using the positional parameter or the :file keys in the params hash),
|
|
16
|
+
# it is written to that file, otherwise a String will be returned.
|
|
17
|
+
# The file can be provided as a String (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
18
|
+
# E.g. to_anything(my_writer, "/some/file") # writes to the file
|
|
19
|
+
# to_anything(my_writer, some_output_stream) # writes to the outputstream
|
|
20
|
+
# E.g. to_anything(my_writer, :file => "/some/file") # writes to the file
|
|
21
|
+
# to_anything(my_writer) # returns a string
|
|
22
|
+
#
|
|
23
|
+
# If the optional base_iri is given (using the positional parameter or the :base_iri key in the params hash),
|
|
24
|
+
# the given base_iri will be used during export. Otherwise the topic maps's base_iri will be used.
|
|
25
|
+
# E.g. to_anything(my_writer, "/some/file", "http://example.org/something") # uses the base_iri given
|
|
26
|
+
# to_anything(my_writer) # uses the base_iri of the topic map
|
|
27
|
+
#
|
|
28
|
+
# Please be aware that you cannot leave out the filename positional parameter and just provide the base_iri.
|
|
29
|
+
# If you want to provide a base_iri but no filename provide +nil+ as filename or use the params hash.
|
|
30
|
+
# E.g. to_anything(my_writer, nil, my_base_iri)
|
|
31
|
+
# to_anything(my_writer, :base_iri => my_base_iri)
|
|
32
|
+
#
|
|
33
|
+
# :call-seq:
|
|
34
|
+
# to_anything(writer_class, params = {})
|
|
35
|
+
# to_anything(writer_class, file, params = {})
|
|
36
|
+
# to_anything(writer_class, file, base_iri, params={})
|
|
37
|
+
#
|
|
38
|
+
def to_anything(writer_class, *args)
|
|
39
|
+
raise("Only supported for TMAPI backends.") unless self.kind_of?(Java::OrgTmapiCore::TopicMap)
|
|
40
|
+
params = {}
|
|
41
|
+
# See if we got a params hash. It must be at the end, if it is given.
|
|
42
|
+
# Take it off, so it won't be unshifted later.
|
|
43
|
+
params = args.pop if args.last.is_a?(Hash)
|
|
44
|
+
|
|
45
|
+
# Take the file as next (i.e. second after the writer) positional parameter or from hash.
|
|
46
|
+
# Leave nil if neither found.
|
|
47
|
+
file = args.shift || params[:file]
|
|
48
|
+
|
|
49
|
+
# Take the base_iri as next (i.e. third after the file) positional parameter or from the hash.
|
|
50
|
+
# Use the topic maps's base_iri if neither found.
|
|
51
|
+
base_iri = args.shift || params[:base_iri] || self.base_iri
|
|
52
|
+
|
|
53
|
+
# If a file was provided somehow, we wrap it with output streams
|
|
54
|
+
if file
|
|
55
|
+
if file.is_a?(java.io.OutputStream)
|
|
56
|
+
out_stream = file
|
|
57
|
+
else
|
|
58
|
+
out_stream = java.io.BufferedOutputStream.new(java.io.FileOutputStream.new(file))
|
|
59
|
+
end
|
|
60
|
+
else
|
|
61
|
+
# if no file was given we want to return a string which will be written into a stream by the writer
|
|
62
|
+
out_stream = java.io.ByteArrayOutputStream.new
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# create the java writer
|
|
66
|
+
writer = writer_class.new(out_stream, base_iri)
|
|
67
|
+
# set params
|
|
68
|
+
params.each do |k,v|
|
|
69
|
+
# skip our params, as they're not of interest for the writer
|
|
70
|
+
next if k == :file || k == :base_iri
|
|
71
|
+
writer.setProperty(k.to_s,v.to_s)
|
|
72
|
+
end if writer.respond_to?(:setProperty)
|
|
73
|
+
# do the actual work
|
|
74
|
+
writer.write(self)
|
|
75
|
+
out_stream.flush
|
|
76
|
+
|
|
77
|
+
# close the file unless we were provided with a stream
|
|
78
|
+
out_stream.close unless file && file.is_a?(java.io.OutputStream)
|
|
79
|
+
|
|
80
|
+
# if there was no file, we have a ByteArrayOutputStream. Get the String out of it (and return it)
|
|
81
|
+
# otherwise, we return true
|
|
82
|
+
return file ? true : out_stream.to_s
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
public
|
|
86
|
+
# Serializes an RTM::TopicMap to XTM v. 2.0.
|
|
87
|
+
#
|
|
88
|
+
# If no argument is given, a String is returned.
|
|
89
|
+
#
|
|
90
|
+
# The argument file can be provided as a String
|
|
91
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
92
|
+
#
|
|
93
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
94
|
+
# one is used. Base_iri may be a String.
|
|
95
|
+
#
|
|
96
|
+
# :call-seq:
|
|
97
|
+
# to_xtm20
|
|
98
|
+
# to_xtm20(file)
|
|
99
|
+
# to_xtm20(file, base_iri)
|
|
100
|
+
#
|
|
101
|
+
def to_xtm20(*args)
|
|
102
|
+
to_anything(org.tmapix.io.XTM20TopicMapWriter, *args)
|
|
103
|
+
end
|
|
104
|
+
alias :to_xtm :to_xtm20
|
|
105
|
+
alias :to_xtm2 :to_xtm20
|
|
106
|
+
|
|
107
|
+
# Serializes an RTM::TopicMap to XTM v. 1.0.
|
|
108
|
+
#
|
|
109
|
+
# If no argument is given, a String is returned.
|
|
110
|
+
#
|
|
111
|
+
# The argument file can be provided as a String
|
|
112
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
113
|
+
#
|
|
114
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
115
|
+
# one is used. Base_iri may be a String.
|
|
116
|
+
#
|
|
117
|
+
# :call-seq:
|
|
118
|
+
# to_xtm10
|
|
119
|
+
# to_xtm10(file)
|
|
120
|
+
# to_xtm10(file, base_iri)
|
|
121
|
+
#
|
|
122
|
+
def to_xtm10(*args)
|
|
123
|
+
to_anything(org.tmapix.io.XTM10TopicMapWriter, *args)
|
|
124
|
+
end
|
|
125
|
+
alias :to_xtm1 :to_xtm10
|
|
126
|
+
|
|
127
|
+
# Serializes an RTM::TopicMap to JTM.
|
|
128
|
+
#
|
|
129
|
+
# If no argument is given, a String is returned.
|
|
130
|
+
#
|
|
131
|
+
# The argument file can be provided as a String
|
|
132
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
133
|
+
#
|
|
134
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
135
|
+
# one is used. Base_iri may be a String.
|
|
136
|
+
#
|
|
137
|
+
# :call-seq:
|
|
138
|
+
# to_jtm
|
|
139
|
+
# to_jtm(file)
|
|
140
|
+
# to_jtm(file, base_iri)
|
|
141
|
+
#
|
|
142
|
+
def to_jtm(*args)
|
|
143
|
+
to_anything(org.tmapix.io.JTMTopicMapWriter, *args)
|
|
144
|
+
end
|
|
145
|
+
alias :to_json :to_jtm
|
|
146
|
+
|
|
147
|
+
# Serializes an RTM::TopicMap to LTM.
|
|
148
|
+
#
|
|
149
|
+
# If no argument is given, a String is returned.
|
|
150
|
+
#
|
|
151
|
+
# The argument file can be provided as a String
|
|
152
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
153
|
+
#
|
|
154
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
155
|
+
# one is used. Base_iri may be a String.
|
|
156
|
+
#
|
|
157
|
+
# :call-seq:
|
|
158
|
+
# to_ltm
|
|
159
|
+
# to_ltm(file)
|
|
160
|
+
# to_ltm(file, base_iri)
|
|
161
|
+
#
|
|
162
|
+
def to_ltm(*args)
|
|
163
|
+
to_anything(org.tmapix.io.LTMTopicMapWriter, *args)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Serializes an RTM::TopicMap to TM/XML.
|
|
167
|
+
#
|
|
168
|
+
# If no argument is given, a String is returned.
|
|
169
|
+
#
|
|
170
|
+
# The argument file can be provided as a String
|
|
171
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
172
|
+
#
|
|
173
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
174
|
+
# one is used. Base_iri may be a String.
|
|
175
|
+
#
|
|
176
|
+
# :call-seq:
|
|
177
|
+
# to_tmxml
|
|
178
|
+
# to_tmxml(file)
|
|
179
|
+
# to_tmxml(file, base_iri)
|
|
180
|
+
#
|
|
181
|
+
def to_tmxml(*args)
|
|
182
|
+
to_anything(org.tmapix.io.TMXMLTopicMapWriter, *args)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Serializes an RTM::TopicMap to CTM.
|
|
186
|
+
#
|
|
187
|
+
# If no argument is given, a String is returned.
|
|
188
|
+
#
|
|
189
|
+
# The argument file can be provided as a String
|
|
190
|
+
# (which is then interpreted as a filename) or as a java.io.OutputStream.
|
|
191
|
+
#
|
|
192
|
+
# The argument base_iri may be used to define a new base_iri, if not, the current
|
|
193
|
+
# one is used. Base_iri may be a String.
|
|
194
|
+
#
|
|
195
|
+
# A property-Hash may be given to set properties of the writer.
|
|
196
|
+
#
|
|
197
|
+
# :call-seq:
|
|
198
|
+
# to_ctm(properties={})
|
|
199
|
+
# to_ctm(file, properties={})
|
|
200
|
+
# to_ctm(file, base_iri, properties={})
|
|
201
|
+
#
|
|
202
|
+
def to_ctm(*args)
|
|
203
|
+
# set default params
|
|
204
|
+
default_params = {
|
|
205
|
+
"writer.features.export.itemidentifier" => false,
|
|
206
|
+
"writer.features.prefixDetection.enabled" => false,
|
|
207
|
+
"writer.features.templateDetection.enabled" => false,
|
|
208
|
+
"writer.features.templateDetection.topicTemplates" => false,
|
|
209
|
+
"writer.features.templateDetection.associationTemplates" => false,
|
|
210
|
+
"writer.features.templateMerger.enabled" => false
|
|
211
|
+
}
|
|
212
|
+
# enhance the args with the default params
|
|
213
|
+
if args.last.is_a?(Hash)
|
|
214
|
+
args.push(default_params.merge(args.pop))
|
|
215
|
+
else
|
|
216
|
+
args.push(default_params)
|
|
217
|
+
end
|
|
218
|
+
to_anything(de.topicmapslab.ctm.writer.core.CTMTopicMapWriter, *args)
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
RTM.register_extension(self)
|
|
222
|
+
end
|
|
223
|
+
end
|
data/lib/rtm/io/to_hash.rb
CHANGED
|
@@ -2,25 +2,39 @@
|
|
|
2
2
|
# License: Apache License, Version 2.0
|
|
3
3
|
|
|
4
4
|
module RTM::IO
|
|
5
|
-
#
|
|
5
|
+
# Hash Export.
|
|
6
6
|
# Each Topic Maps Construct gets a to_hash method.
|
|
7
|
-
module
|
|
7
|
+
module ToHash
|
|
8
8
|
|
|
9
9
|
module TopicMap
|
|
10
|
-
# Returns the Hash representation of this
|
|
10
|
+
# Returns the Hash representation of this topic map.
|
|
11
|
+
#
|
|
12
|
+
# The returned Hash holds information about the :reifier,
|
|
13
|
+
# the :item_identifiers, the :topics and :associations.
|
|
14
|
+
#
|
|
15
|
+
# :call-seq:
|
|
16
|
+
# to_hash -> Hash
|
|
17
|
+
#
|
|
11
18
|
def to_hash
|
|
12
19
|
h={}
|
|
13
|
-
h[:reifier] = reifier.
|
|
20
|
+
h[:reifier] = reifier.reference if reifier
|
|
14
21
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
15
22
|
h[:topics] = topics.map{|i| i.to_hash} unless topics.empty?
|
|
16
23
|
h[:associations] = associations.map{|i| i.to_hash} unless associations.empty?
|
|
17
24
|
h
|
|
18
25
|
end
|
|
19
26
|
end
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
|
|
22
28
|
module Topic
|
|
23
|
-
# Returns the Hash representation of this
|
|
29
|
+
# Returns the Hash representation of this topic.
|
|
30
|
+
#
|
|
31
|
+
# The returned Hash holds information about the :subject_identifiers,
|
|
32
|
+
# the :item_identifiers, the :subject_locators, the :names and the
|
|
33
|
+
# :occurrences.
|
|
34
|
+
#
|
|
35
|
+
# :call-seq:
|
|
36
|
+
# to_hash -> Hash
|
|
37
|
+
#
|
|
24
38
|
def to_hash
|
|
25
39
|
h = {}
|
|
26
40
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
@@ -30,87 +44,111 @@ module RTM::IO
|
|
|
30
44
|
h[:occurrences] = occurrences.map{|i| i.to_hash} unless occurrences.empty?
|
|
31
45
|
h
|
|
32
46
|
end
|
|
33
|
-
# Returns the reference to the Topic
|
|
34
|
-
def to_ref
|
|
35
|
-
if subject_identifiers.first
|
|
36
|
-
return "si:#{subject_identifiers.first.reference.to_s}"
|
|
37
|
-
end
|
|
38
|
-
if item_identifiers.first
|
|
39
|
-
return "ii:#{item_identifiers.first.reference.to_s}"
|
|
40
|
-
end
|
|
41
|
-
# "t#{id}"
|
|
42
|
-
end
|
|
43
47
|
end
|
|
44
48
|
|
|
45
49
|
module Name
|
|
46
|
-
# Returns the Hash representation of this
|
|
50
|
+
# Returns the Hash representation of this name.
|
|
51
|
+
#
|
|
52
|
+
# The returned Hash holds information about the :reifier,
|
|
53
|
+
# the :item_identifiers, the :value, the :type, the :scope and the
|
|
54
|
+
# :variants.
|
|
55
|
+
#
|
|
56
|
+
# :call-seq:
|
|
57
|
+
# to_hash -> Hash
|
|
58
|
+
#
|
|
47
59
|
def to_hash
|
|
48
60
|
h={}
|
|
49
|
-
h[:reifier] = reifier.
|
|
61
|
+
h[:reifier] = reifier.reference if reifier
|
|
50
62
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
51
63
|
h[:value] = value if value
|
|
52
|
-
h[:type] = type.
|
|
53
|
-
h[:scope] = scope.map{|i| i.
|
|
64
|
+
h[:type] = type.reference if type
|
|
65
|
+
h[:scope] = scope.map{|i| i.reference} unless scope.empty?
|
|
54
66
|
h[:variants] = variants.map{|i| i.to_hash} unless variants.empty?
|
|
55
67
|
h
|
|
56
68
|
end
|
|
57
69
|
end
|
|
58
70
|
|
|
59
|
-
|
|
60
71
|
module Association
|
|
61
|
-
# Returns the Hash representation of this
|
|
72
|
+
# Returns the Hash representation of this association.
|
|
73
|
+
#
|
|
74
|
+
# The returned Hash holds information about the :reifier,
|
|
75
|
+
# the :item_identifiers, the :type, the :scope and the :roles.
|
|
76
|
+
#
|
|
77
|
+
# :call-seq:
|
|
78
|
+
# to_hash -> Hash
|
|
79
|
+
#
|
|
62
80
|
def to_hash
|
|
63
81
|
h={}
|
|
64
|
-
h[:reifier] = reifier.
|
|
82
|
+
h[:reifier] = reifier.reference if reifier
|
|
65
83
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
66
|
-
h[:type] = type.
|
|
67
|
-
h[:scope] = scope.map{|i| i.
|
|
84
|
+
h[:type] = type.reference if type
|
|
85
|
+
h[:scope] = scope.map{|i| i.reference} unless scope.empty?
|
|
68
86
|
h[:roles] = roles.map{|i| i.to_hash} unless roles.empty?
|
|
69
87
|
h
|
|
70
88
|
end
|
|
71
89
|
end
|
|
72
90
|
|
|
73
|
-
|
|
74
|
-
|
|
75
91
|
module Occurrence
|
|
76
|
-
# Returns the Hash representation of this
|
|
92
|
+
# Returns the Hash representation of this occurrence.
|
|
93
|
+
#
|
|
94
|
+
# The returned Hash holds information about the :reifier,
|
|
95
|
+
# the :item_identifiers, the :value, the :datatype, the :type
|
|
96
|
+
# and the :scope.
|
|
97
|
+
#
|
|
98
|
+
# :call-seq:
|
|
99
|
+
# to_hash -> Hash
|
|
100
|
+
#
|
|
77
101
|
def to_hash
|
|
78
102
|
h={}
|
|
79
|
-
h[:reifier] = reifier.
|
|
103
|
+
h[:reifier] = reifier.reference if reifier
|
|
80
104
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
81
105
|
h[:value] = value if value
|
|
82
106
|
h[:datatype] = datatype.reference if datatype
|
|
83
|
-
h[:type] = type.
|
|
84
|
-
h[:scope] = scope.map{|i| i.
|
|
107
|
+
h[:type] = type.reference if type
|
|
108
|
+
h[:scope] = scope.map{|i| i.reference} unless scope.empty?
|
|
85
109
|
h
|
|
86
110
|
end
|
|
87
111
|
end
|
|
88
112
|
|
|
89
113
|
module Role
|
|
90
|
-
# Returns the Hash representation of this
|
|
114
|
+
# Returns the Hash representation of this role.
|
|
115
|
+
#
|
|
116
|
+
# The returned Hash holds information about the :reifier,
|
|
117
|
+
# the :item_identifiers, the :player, and the :type.
|
|
118
|
+
#
|
|
119
|
+
# :call-seq:
|
|
120
|
+
# to_hash -> Hash
|
|
121
|
+
#
|
|
91
122
|
def to_hash
|
|
92
123
|
h={}
|
|
93
|
-
h[:reifier] = reifier.
|
|
124
|
+
h[:reifier] = reifier.reference if reifier
|
|
94
125
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
95
|
-
h[:player] = player.
|
|
96
|
-
h[:type] = type.
|
|
126
|
+
h[:player] = player.reference if player
|
|
127
|
+
h[:type] = type.reference if type
|
|
97
128
|
h
|
|
98
129
|
end
|
|
99
130
|
end
|
|
100
131
|
|
|
101
132
|
module Variant
|
|
102
|
-
# Returns the Hash representation of this
|
|
103
|
-
|
|
133
|
+
# Returns the Hash representation of this variant.
|
|
134
|
+
#
|
|
135
|
+
# The returned Hash holds information about the :reifier,
|
|
136
|
+
# the :item_identifiers, the :value and the :scope.
|
|
137
|
+
#
|
|
138
|
+
# :call-seq:
|
|
139
|
+
# to_hash -> Hash
|
|
140
|
+
#
|
|
141
|
+
def to_hash
|
|
104
142
|
h={}
|
|
105
|
-
h[:reifier] = reifier.
|
|
143
|
+
h[:reifier] = reifier.reference if reifier
|
|
106
144
|
h[:item_identifiers] = item_identifiers.map{|i| i.reference} unless item_identifiers.empty?
|
|
107
145
|
h[:value] = value if value
|
|
108
|
-
h[:scope] = scope.map{|i| i.
|
|
146
|
+
h[:scope] = scope.map{|i| i.reference} unless scope.empty?
|
|
109
147
|
h
|
|
110
148
|
end
|
|
111
149
|
end
|
|
112
150
|
|
|
113
|
-
RTM.register_extension self
|
|
151
|
+
RTM.register_extension self
|
|
114
152
|
|
|
115
153
|
end
|
|
116
154
|
end
|