tao_rdfizer 0.10.2 → 0.11.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.
- checksums.yaml +4 -4
- data/bin/tao_rdfizer +10 -1
- data/lib/tao_rdfizer/tao_rdfizer.rb +29 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce27142842502109c882dc01222a5aa8e402f21c9305bcd5797a712dde5a0f8b
|
4
|
+
data.tar.gz: 8b542b1d3d4992e1129fa95cde633967bb55e805d7ed69fc36cb95940215004f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65aecd55bf6fbd609565800231c8f87cad533bc25422912927ef9293e4e7e03bcab6bb5fd639320bf184cd7f0b0aa5de9c5a880734e768f6830761b5eaa6afec
|
7
|
+
data.tar.gz: ef195ea7ddae0dfa1409659066e5700369659d08fd40390c85f3384c3476ca44defd9c8eee602d6ebb5ef0dc75d63894a76fc5f597d79e57f1bf28598ecd20f5
|
data/bin/tao_rdfizer
CHANGED
@@ -3,6 +3,7 @@ require 'tao_rdfizer'
|
|
3
3
|
require 'json'
|
4
4
|
|
5
5
|
mode = nil
|
6
|
+
options = {}
|
6
7
|
|
7
8
|
## command line option processing
|
8
9
|
require 'optparse'
|
@@ -17,6 +18,14 @@ optparse = OptionParser.new do |opts|
|
|
17
18
|
mode = :spans
|
18
19
|
end
|
19
20
|
|
21
|
+
opts.on('-x', '--x-prefixes', 'without prefixes.') do
|
22
|
+
options[:with_prefixes] = false
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on('-o', '--only-prefixes', 'only prefixes.') do
|
26
|
+
options[:only_prefixes] = true
|
27
|
+
end
|
28
|
+
|
20
29
|
opts.on('-h', '--help', 'displays this screen.') do
|
21
30
|
puts opts
|
22
31
|
exit
|
@@ -34,7 +43,7 @@ begin
|
|
34
43
|
annotations = JSON.parse File.read(ARGV[0]), :symbolize_names => true
|
35
44
|
annotations = [annotations] unless annotations.class == Array
|
36
45
|
rdfizer = TAO::RDFizer.new(mode)
|
37
|
-
puts rdfizer.rdfize(annotations)
|
46
|
+
puts rdfizer.rdfize(annotations, options)
|
38
47
|
rescue ArgumentError, IOError => e
|
39
48
|
puts e.message
|
40
49
|
end
|
@@ -14,12 +14,15 @@ class TAO::RDFizer
|
|
14
14
|
else
|
15
15
|
ERB_ANNOTATIONS_TTL
|
16
16
|
end
|
17
|
-
|
18
17
|
@tao_ttl_erb = ERB.new(template, nil, '-')
|
19
18
|
@prefix_ttl_erb = ERB.new(ERB_PREFIXES_TTL, nil, '-')
|
20
19
|
end
|
21
20
|
|
22
|
-
def rdfize(annotations_col,
|
21
|
+
def rdfize(annotations_col, options = nil)
|
22
|
+
options ||= {}
|
23
|
+
only_prefixes = options.has_key?(:only_prefixes) ? options[:only_prefixes] == true : false
|
24
|
+
with_prefixes = options.has_key?(:with_prefixes) ? options[:with_prefixes] == true : true
|
25
|
+
|
23
26
|
# check the format
|
24
27
|
annotations_col.each do |annotations|
|
25
28
|
raise "'target' is missing" unless annotations.has_key? :target
|
@@ -31,6 +34,25 @@ class TAO::RDFizer
|
|
31
34
|
anns = annotations_col.first
|
32
35
|
anns[:namespaces].each {|n| namespaces[n[:prefix]] = n[:uri]} unless anns[:namespaces].nil?
|
33
36
|
|
37
|
+
prefixes_ttl = @prefix_ttl_erb.result_with_hash(namespaces:namespaces) if only_prefixes || with_prefixes
|
38
|
+
|
39
|
+
if only_prefixes
|
40
|
+
prefixes_ttl
|
41
|
+
else
|
42
|
+
annotations_ttl = get_annotations_ttl(annotations_col, namespaces)
|
43
|
+
if with_prefixes
|
44
|
+
prefixes_ttl + annotations_ttl
|
45
|
+
else
|
46
|
+
annotations_ttl
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def get_annotations_ttl(annotations_col, namespaces)
|
54
|
+
anns = annotations_col.first
|
55
|
+
|
34
56
|
unless @mode ==:spans
|
35
57
|
raise ArgumentError, "A project name has to be specified." unless anns.has_key?(:project)
|
36
58
|
prefix_for_this = anns[:project].downcase.gsub(/ /, '_')
|
@@ -65,7 +87,7 @@ class TAO::RDFizer
|
|
65
87
|
end
|
66
88
|
|
67
89
|
begin
|
68
|
-
|
90
|
+
unless @mode == :span
|
69
91
|
# index attributes
|
70
92
|
attributesh = _attributes.inject({}) do |h, a|
|
71
93
|
if a[:pred].end_with?('_id')
|
@@ -172,13 +194,9 @@ class TAO::RDFizer
|
|
172
194
|
spans += _spans unless @mode == :annotations
|
173
195
|
end
|
174
196
|
|
175
|
-
|
176
|
-
ttl += @prefix_ttl_erb.result(binding) if with_prefix
|
177
|
-
ttl += @tao_ttl_erb.result(binding)
|
197
|
+
@tao_ttl_erb.result(binding)
|
178
198
|
end
|
179
199
|
|
180
|
-
private
|
181
|
-
|
182
200
|
def include_parent?(spans, span)
|
183
201
|
# spans.each{|s| return true if (s[:begin] <= span[:begin] && s[:end] > span[:end]) || (s[:begin] < span[:begin] && s[:end] >= span[:end])}
|
184
202
|
spans.each{|s| return true if s[:begin] <= span[:begin] && s[:end] >= span[:end]}
|
@@ -210,6 +228,7 @@ class TAO::RDFizer
|
|
210
228
|
end
|
211
229
|
end
|
212
230
|
|
231
|
+
# variable: denotations, relations
|
213
232
|
ERB_ANNOTATIONS_TTL = <<~HEREDOC
|
214
233
|
<% denotations.each do |d| -%>
|
215
234
|
<%= d[:obj_uri] %> tao:denoted_by <%= d[:span_uri] %> ;
|
@@ -221,6 +240,7 @@ class TAO::RDFizer
|
|
221
240
|
<% end -%>
|
222
241
|
HEREDOC
|
223
242
|
|
243
|
+
# variable: spans
|
224
244
|
ERB_SPANS_TTL = <<~HEREDOC
|
225
245
|
<% spans.each do |s| -%>
|
226
246
|
<%= s[:span_uri] %> rdf:type tao:Text_span ;
|
@@ -237,6 +257,7 @@ class TAO::RDFizer
|
|
237
257
|
<% end -%>
|
238
258
|
HEREDOC
|
239
259
|
|
260
|
+
# variable: namespaces
|
240
261
|
ERB_PREFIXES_TTL = <<~HEREDOC
|
241
262
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
242
263
|
@prefix tao: <http://pubannotation.org/ontology/tao.owl#> .
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tao_rdfizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jin-Dong Kim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: It uses TAO (text annotation ontology) for representation of annotations
|
14
14
|
to text.
|