bel 0.4.0.beta.8 → 0.4.0.beta.9
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/lib/bel/translate.rb +1 -1
- data/lib/bel/translator/plugins/rdf/monkey_patch.rb +167 -63
- data/lib/bel/translator/plugins/rdf/translator.rb +1 -1
- data/lib/bel/translator/plugins/rdf/writer.rb +27 -7
- data/lib/bel/translator/plugins/xbel/translator.rb +1 -1
- data/lib/bel/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2439b3403f830ef0c8117b3bd1ed9ef6cd589c4
|
4
|
+
data.tar.gz: 9a5279406ef99030abb59b2b4f19960d03b43b18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8acf51e5234ecdb58206b761451dda5437097eec73c0200ae165985cffbc5bdf27bf3eef7931dad3bfbb48affdacf75a72fbb4e4e1d24d45ce9a39ee99ea4592
|
7
|
+
data.tar.gz: f003e2105ad90a3eae32872b6c58b97a310ea3ec035cd3a82f1af1f2af56c4930c5a0117a1df6d12b0321116222b06c8ceb8572e17c42fb0f48da39aac892d2b
|
data/lib/bel/translate.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'bel/evidence_model'
|
1
2
|
require_relative 'uuid'
|
2
3
|
|
3
4
|
module BEL::Translator::Plugins
|
@@ -5,6 +6,7 @@ module BEL::Translator::Plugins
|
|
5
6
|
module Rdf
|
6
7
|
|
7
8
|
# OpenClass to contribute RDF functionality to BEL Model.
|
9
|
+
|
8
10
|
class ::BEL::Namespace::NamespaceDefinition
|
9
11
|
|
10
12
|
def to_uri
|
@@ -18,43 +20,38 @@ module BEL::Translator::Plugins
|
|
18
20
|
|
19
21
|
class ::BEL::Model::Parameter
|
20
22
|
|
23
|
+
CONCEPT_ENCODING = {
|
24
|
+
:G => BEL::RDF::BELV.GeneConcept,
|
25
|
+
:R => BEL::RDF::BELV.RNAConcept,
|
26
|
+
:P => BEL::RDF::BELV.ProteinConcept,
|
27
|
+
:M => BEL::RDF::BELV.MicroRNAConcept,
|
28
|
+
:C => BEL::RDF::BELV.ComplexConcept,
|
29
|
+
:B => BEL::RDF::BELV.BiologicalProcessConcept,
|
30
|
+
:A => BEL::RDF::BELV.AbundanceConcept,
|
31
|
+
:O => BEL::RDF::BELV.PathologyConcept,
|
32
|
+
}
|
33
|
+
|
21
34
|
def to_uri
|
22
35
|
@ns.to_rdf_vocabulary[URI::encode(@value)]
|
23
36
|
end
|
24
37
|
|
25
|
-
def to_rdf
|
38
|
+
def to_rdf(graph_name = nil)
|
26
39
|
uri = to_uri
|
27
40
|
encodings = ['A'].concat(@enc.to_s.each_char.to_a).uniq
|
28
41
|
if block_given?
|
29
|
-
encodings.map { |enc| concept_statement(enc, uri) }.each do |stmt|
|
42
|
+
encodings.map { |enc| concept_statement(enc, uri, graph_name) }.each do |stmt|
|
30
43
|
yield stmt
|
31
44
|
end
|
32
45
|
else
|
33
|
-
encodings.map { |enc| concept_statement(enc, uri)}
|
46
|
+
encodings.map { |enc| concept_statement(enc, uri, graph_name)}
|
34
47
|
end
|
35
48
|
end
|
36
49
|
|
37
50
|
private
|
38
51
|
|
39
|
-
def concept_statement(encoding_character, uri)
|
40
|
-
|
41
|
-
|
42
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.GeneConcept)
|
43
|
-
when 'R'
|
44
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.RNAConcept)
|
45
|
-
when 'P'
|
46
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.ProteinConcept)
|
47
|
-
when 'M'
|
48
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.MicroRNAConcept)
|
49
|
-
when 'C'
|
50
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.ComplexConcept)
|
51
|
-
when 'B'
|
52
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.BiologicalProcessConcept)
|
53
|
-
when 'A'
|
54
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.AbundanceConcept)
|
55
|
-
when 'O'
|
56
|
-
::RDF::Statement(uri, ::RDF.type, BEL::RDF::BELV.PathologyConcept)
|
57
|
-
end
|
52
|
+
def concept_statement(encoding_character, uri, graph_name = nil)
|
53
|
+
encoding = CONCEPT_ENCODING.fetch(encoding_character.to_sym, BEL::RDF::BELV.AbundanceConcept)
|
54
|
+
::RDF::Statement(uri, ::RDF.type, encoding, :graph_name => graph_name)
|
58
55
|
end
|
59
56
|
end
|
60
57
|
|
@@ -100,21 +97,21 @@ module BEL::Translator::Plugins
|
|
100
97
|
end
|
101
98
|
end
|
102
99
|
|
103
|
-
def to_rdf
|
100
|
+
def to_rdf(graph_name = nil)
|
104
101
|
uri = to_uri
|
105
102
|
statements = []
|
106
103
|
|
107
104
|
# rdf:type
|
108
105
|
type = rdf_type
|
109
|
-
statements <<
|
110
|
-
statements <<
|
106
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Term, :graph_name => graph_name)
|
107
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, type, :graph_name => graph_name)
|
111
108
|
fx = @fx.respond_to?(:short_form) ? @fx.short_form : @fx.to_s.to_sym
|
112
109
|
if BEL::RDF::ACTIVITY_TYPE.include? fx
|
113
|
-
statements <<
|
110
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasActivityType, BEL::RDF::ACTIVITY_TYPE[fx], :graph_name => graph_name)
|
114
111
|
end
|
115
112
|
|
116
113
|
# rdfs:label
|
117
|
-
statements <<
|
114
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDFS.label, to_s.force_encoding('UTF-8'), :graph_name => graph_name)
|
118
115
|
|
119
116
|
# special proteins (does not recurse into pmod)
|
120
117
|
if [:p, :proteinAbundance].include?(fx)
|
@@ -132,22 +129,22 @@ module BEL::Translator::Plugins
|
|
132
129
|
mod_string = pmod.arguments.map(&:to_s).join(',')
|
133
130
|
mod_type = BEL::RDF::MODIFICATION_TYPE.find {|k,v| mod_string.start_with? k}
|
134
131
|
mod_type = (mod_type ? mod_type[1] : BEL::RDF::BELV.Modification)
|
135
|
-
statements <<
|
132
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasModificationType, mod_type, :graph_name => graph_name)
|
136
133
|
last = pmod.arguments.last.to_s
|
137
134
|
if last.match(/^\d+$/)
|
138
|
-
statements <<
|
135
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasModificationPosition, last.to_i, :graph_name => graph_name)
|
139
136
|
end
|
140
137
|
# link root protein abundance as hasChild
|
141
138
|
root_param = @arguments.find{|x| x.is_a? ::BEL::Model::Parameter}
|
142
139
|
(root_id, root_statements) = ::BEL::Model::Term.new(:p, [root_param]).to_rdf
|
143
|
-
statements <<
|
140
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, root_id, :graph_name => graph_name)
|
144
141
|
statements += root_statements
|
145
142
|
return [uri, statements]
|
146
143
|
elsif @arguments.find{|x| x.is_a? ::BEL::Model::Term and BEL::RDF::PROTEIN_VARIANT.include? x.fx}
|
147
144
|
# link root protein abundance as hasChild
|
148
145
|
root_param = @arguments.find{|x| x.is_a? ::BEL::Model::Parameter}
|
149
146
|
(root_id, root_statements) = ::BEL::Model::Term.new(:p, [root_param]).to_rdf
|
150
|
-
statements <<
|
147
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, root_id, :graph_name => graph_name)
|
151
148
|
statements += root_statements
|
152
149
|
return [uri, statements]
|
153
150
|
end
|
@@ -158,17 +155,17 @@ module BEL::Translator::Plugins
|
|
158
155
|
x.is_a? ::BEL::Model::Parameter and x.ns != nil
|
159
156
|
}.each do |param|
|
160
157
|
concept_uri = param.ns.to_uri + param.value.to_s
|
161
|
-
statements <<
|
158
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasConcept, BEL::RDF::RDF::URI(URI.encode(concept_uri)), :graph_name => graph_name)
|
162
159
|
end
|
163
160
|
|
164
161
|
# BEL::RDF::BELV.hasChild]
|
165
162
|
@arguments.find_all{|x| x.is_a? ::BEL::Model::Term}.each do |child|
|
166
163
|
(child_id, child_statements) = child.to_rdf
|
167
|
-
statements <<
|
164
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasChild, child_id, :graph_name => graph_name)
|
168
165
|
statements += child_statements
|
169
166
|
end
|
170
167
|
|
171
|
-
|
168
|
+
[uri, statements]
|
172
169
|
end
|
173
170
|
end
|
174
171
|
|
@@ -176,9 +173,6 @@ module BEL::Translator::Plugins
|
|
176
173
|
|
177
174
|
def to_uri
|
178
175
|
case
|
179
|
-
when subject_only?
|
180
|
-
tid = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
181
|
-
BEL::RDF::BELR[URI::encode(tid)]
|
182
176
|
when simple?
|
183
177
|
sub_id = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
184
178
|
obj_id = @object.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
@@ -206,17 +200,21 @@ module BEL::Translator::Plugins
|
|
206
200
|
nrel = @object.relationship.to_s
|
207
201
|
end
|
208
202
|
BEL::RDF::BELR[URI::encode("#{sub_id}_#{rel}_#{nsub_id}_#{nrel}_#{nobj_id}")]
|
203
|
+
else
|
204
|
+
# Interpret as subject only BEL statement.
|
205
|
+
tid = @subject.to_s.squeeze(')').gsub(/[")\[\]]/, '').gsub(/[(:, ]/, '_')
|
206
|
+
BEL::RDF::BELR[URI::encode(tid)]
|
209
207
|
end
|
210
208
|
end
|
211
209
|
|
212
|
-
def to_rdf
|
213
|
-
uri
|
210
|
+
def to_rdf(graph_name = nil)
|
211
|
+
uri = to_uri
|
214
212
|
statements = []
|
215
213
|
|
216
214
|
case
|
217
215
|
when subject_only?
|
218
216
|
(sub_uri, sub_statements) = @subject.to_rdf
|
219
|
-
statements <<
|
217
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
220
218
|
statements += sub_statements
|
221
219
|
when simple?
|
222
220
|
(sub_uri, sub_statements) = @subject.to_rdf
|
@@ -226,9 +224,9 @@ module BEL::Translator::Plugins
|
|
226
224
|
statements += obj_statements
|
227
225
|
|
228
226
|
rel = BEL::RDF::RELATIONSHIP_TYPE[@relationship.to_s]
|
229
|
-
statements <<
|
230
|
-
statements <<
|
231
|
-
statements <<
|
227
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
228
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasObject, obj_uri, :graph_name => graph_name)
|
229
|
+
statements << ::RDF::Statement(uri, BEL::RDF::BELV.hasRelationship, rel, :graph_name => graph_name)
|
232
230
|
when nested?
|
233
231
|
(sub_uri, sub_statements) = @subject.to_rdf
|
234
232
|
(nsub_uri, nsub_statements) = @object.subject.to_rdf
|
@@ -241,25 +239,25 @@ module BEL::Translator::Plugins
|
|
241
239
|
nuri = BEL::RDF::BELR["#{strip_prefix(nsub_uri)}_#{nrel}_#{strip_prefix(nobj_uri)}"]
|
242
240
|
|
243
241
|
# inner
|
244
|
-
statements <<
|
245
|
-
statements <<
|
246
|
-
statements <<
|
242
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasSubject, nsub_uri, :graph_name => graph_name)
|
243
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasObject, nobj_uri, :graph_name => graph_name)
|
244
|
+
statements << ::RDF::Statement.new(nuri, BEL::RDF::BELV.hasRelationship, nrel, :graph_name => graph_name)
|
247
245
|
|
248
246
|
# outer
|
249
|
-
statements <<
|
250
|
-
statements <<
|
251
|
-
statements <<
|
247
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasSubject, sub_uri, :graph_name => graph_name)
|
248
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasObject, nuri, :graph_name => graph_name)
|
249
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasRelationship, rel, :graph_name => graph_name)
|
252
250
|
end
|
253
251
|
|
254
252
|
# common statement triples
|
255
|
-
statements <<
|
256
|
-
statements <<
|
253
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Statement, :graph_name => graph_name)
|
254
|
+
statements << ::RDF::Statement.new(uri, ::RDF::RDFS.label, to_s.force_encoding('UTF-8'), :graph_name => graph_name)
|
257
255
|
|
258
256
|
# evidence
|
259
257
|
evidence = BEL::RDF::BELE[Rdf.generate_uuid]
|
260
|
-
statements <<
|
261
|
-
statements <<
|
262
|
-
statements <<
|
258
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::RDF.type, BEL::RDF::BELV.Evidence, :graph_name => graph_name)
|
259
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasEvidence, evidence, :graph_name => graph_name)
|
260
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasStatement, uri, :graph_name => graph_name)
|
263
261
|
|
264
262
|
# citation
|
265
263
|
citation = @annotations.delete('Citation')
|
@@ -267,11 +265,7 @@ module BEL::Translator::Plugins
|
|
267
265
|
value = citation.value.map{|x| x.gsub('"', '')}
|
268
266
|
if citation and value[0] == 'PubMed'
|
269
267
|
pid = value[2]
|
270
|
-
statements << [
|
271
|
-
evidence,
|
272
|
-
BEL::RDF::BELV.hasCitation,
|
273
|
-
BEL::RDF::PUBMED[pid]
|
274
|
-
]
|
268
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasCitation, BEL::RDF::PUBMED[pid], :graph_name => graph_name)
|
275
269
|
end
|
276
270
|
end
|
277
271
|
|
@@ -279,23 +273,23 @@ module BEL::Translator::Plugins
|
|
279
273
|
evidence_text = @annotations.delete('Evidence')
|
280
274
|
if evidence_text
|
281
275
|
value = evidence_text.value.gsub('"', '').force_encoding('UTF-8')
|
282
|
-
statements <<
|
276
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasEvidenceText, value, :graph_name => graph_name)
|
283
277
|
end
|
284
278
|
|
285
279
|
# annotations
|
286
|
-
@annotations.each do |
|
280
|
+
@annotations.each do |_, anno|
|
287
281
|
name = anno.name.gsub('"', '')
|
288
282
|
|
289
283
|
if BEL::RDF::const_defined? name
|
290
284
|
annotation_scheme = BEL::RDF::const_get name
|
291
285
|
[anno.value].flatten.map{|x| x.gsub('"', '')}.each do |val|
|
292
286
|
value_uri = BEL::RDF::RDF::URI(URI.encode(annotation_scheme + val.to_s))
|
293
|
-
statements <<
|
287
|
+
statements << ::RDF::Statement.new(evidence, BEL::RDF::BELV.hasAnnotation, value_uri, :graph_name => graph_name)
|
294
288
|
end
|
295
289
|
end
|
296
290
|
end
|
297
291
|
|
298
|
-
|
292
|
+
[uri, statements]
|
299
293
|
end
|
300
294
|
|
301
295
|
private
|
@@ -308,5 +302,115 @@ module BEL::Translator::Plugins
|
|
308
302
|
end
|
309
303
|
end
|
310
304
|
end
|
305
|
+
|
306
|
+
class ::BEL::Model::Evidence
|
307
|
+
|
308
|
+
def to_uri
|
309
|
+
BEL::RDF::BELE[Rdf.generate_uuid]
|
310
|
+
end
|
311
|
+
|
312
|
+
def to_rdf
|
313
|
+
uri = to_uri
|
314
|
+
statement_uri, statements = bel_statement.to_rdf(uri)
|
315
|
+
|
316
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::RDF.type, BEL::RDF::BELV.Evidence, :graph_name => uri)
|
317
|
+
statements << ::RDF::Statement.new(statement_uri, BEL::RDF::BELV.hasEvidence, uri, :graph_name => uri)
|
318
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasStatement, statement_uri, :graph_name => uri)
|
319
|
+
|
320
|
+
annotations = bel_statement.annotations
|
321
|
+
|
322
|
+
# citation
|
323
|
+
citation = annotations.delete('Citation')
|
324
|
+
if citation
|
325
|
+
value = citation.value.map{|x| x.gsub('"', '')}
|
326
|
+
if citation and value[0] == 'PubMed'
|
327
|
+
pid = value[2]
|
328
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasCitation, BEL::RDF::PUBMED[pid], :graph_name => uri)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
# evidence
|
333
|
+
evidence_text = annotations.delete('Evidence')
|
334
|
+
if evidence_text
|
335
|
+
value = evidence_text.value.gsub('"', '').force_encoding('UTF-8')
|
336
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasEvidenceText, value, :graph_name => uri)
|
337
|
+
end
|
338
|
+
|
339
|
+
# annotations
|
340
|
+
annotations.each do |_, anno|
|
341
|
+
name = anno.name.gsub('"', '')
|
342
|
+
|
343
|
+
if BEL::RDF::const_defined? name
|
344
|
+
annotation_scheme = BEL::RDF::const_get name
|
345
|
+
[anno.value].flatten.map{|x| x.gsub('"', '')}.each do |val|
|
346
|
+
value_uri = BEL::RDF::RDF::URI(URI.encode(annotation_scheme + val.to_s))
|
347
|
+
statements << ::RDF::Statement.new(uri, BEL::RDF::BELV.hasAnnotation, value_uri, :graph_name => uri)
|
348
|
+
end
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
[uri, statements]
|
353
|
+
end
|
354
|
+
|
355
|
+
def to_void_dataset(void_dataset_uri)
|
356
|
+
document_header = self.metadata[:document_header]
|
357
|
+
return nil if !document_header || !document_header.is_a?(Hash)
|
358
|
+
|
359
|
+
triples = ::RDF::Repository.new
|
360
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF.type, ::RDF::VOID.Dataset)
|
361
|
+
|
362
|
+
name = version = nil
|
363
|
+
document_header.each do |property, value|
|
364
|
+
case property
|
365
|
+
when /name/i
|
366
|
+
name = value.to_s
|
367
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.title, name)
|
368
|
+
when /description/i
|
369
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.description, value.to_s)
|
370
|
+
when /version/i
|
371
|
+
version = value.to_s
|
372
|
+
when /copyright/i
|
373
|
+
waiver = RDF::Vocabulary.new('http://vocab.org/waiver/terms/').waiver
|
374
|
+
|
375
|
+
value = value.to_s
|
376
|
+
uri = RDF::URI(value)
|
377
|
+
value = if uri.valid?
|
378
|
+
uri
|
379
|
+
else
|
380
|
+
value
|
381
|
+
end
|
382
|
+
triples << ::RDF::Statement.new(void_dataset_uri, waiver, value)
|
383
|
+
when /authors/i
|
384
|
+
if value.respond_to?(:each)
|
385
|
+
value.each do |v|
|
386
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.creator, v.to_s)
|
387
|
+
end
|
388
|
+
else
|
389
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.creator, value.to_s)
|
390
|
+
end
|
391
|
+
when /licenses/i
|
392
|
+
value = value.to_s
|
393
|
+
uri = RDF::URI(value)
|
394
|
+
value = if uri.valid?
|
395
|
+
uri
|
396
|
+
else
|
397
|
+
value
|
398
|
+
end
|
399
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.license, value)
|
400
|
+
when /contactinfo/i
|
401
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.publisher, :publisher)
|
402
|
+
triples << ::RDF::Statement.new(:publisher, ::RDF.type, ::RDF::FOAF.Person)
|
403
|
+
triples << ::RDF::Statement.new(:publisher, ::RDF::FOAF.mbox, value.to_s)
|
404
|
+
end
|
405
|
+
end
|
406
|
+
|
407
|
+
if name && version
|
408
|
+
identifier = "#{name}/#{version}"
|
409
|
+
triples << ::RDF::Statement.new(void_dataset_uri, ::RDF::DC.identifier, identifier)
|
410
|
+
end
|
411
|
+
|
412
|
+
triples
|
413
|
+
end
|
414
|
+
end
|
311
415
|
end
|
312
416
|
end
|
@@ -20,7 +20,7 @@ module BEL::Translator::Plugins
|
|
20
20
|
|
21
21
|
def write(objects, writer = StringIO.new, options = {})
|
22
22
|
# format = options[:format] || :ntriples
|
23
|
-
rdf_writer = Writer::RDFYielder.new(writer, :nquads)
|
23
|
+
rdf_writer = Writer::RDFYielder.new(writer, :nquads, options)
|
24
24
|
|
25
25
|
objects.each do |evidence|
|
26
26
|
rdf_writer << evidence
|
@@ -9,17 +9,37 @@ module BEL::Translator::Plugins
|
|
9
9
|
|
10
10
|
Rdf = ::BEL::Translator::Plugins::Rdf
|
11
11
|
|
12
|
-
def initialize(io, format)
|
13
|
-
rdf_writer
|
14
|
-
@writer
|
12
|
+
def initialize(io, format, options = {})
|
13
|
+
rdf_writer = find_writer(format)
|
14
|
+
@writer = rdf_writer.new(io, { :stream => true })
|
15
|
+
|
16
|
+
if options[:void_dataset_uri]
|
17
|
+
void_dataset_uri = options.delete(:void_dataset_uri)
|
18
|
+
void_dataset_uri = RDF::URI(void_dataset_uri)
|
19
|
+
unless void_dataset_uri.valid?
|
20
|
+
raise ArgumentError.new 'void_dataset_uri is not a valid URI'
|
21
|
+
end
|
22
|
+
@void_dataset_uri = void_dataset_uri
|
23
|
+
else
|
24
|
+
@void_dataset_uri = nil
|
25
|
+
end
|
26
|
+
@wrote_dataset = false
|
15
27
|
end
|
16
28
|
|
17
29
|
def <<(evidence)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
30
|
+
if !@wrote_dataset && @void_dataset_uri
|
31
|
+
void_dataset_triples = evidence.to_void_dataset(@void_dataset_uri)
|
32
|
+
if void_dataset_triples && void_dataset_triples.respond_to?(:each)
|
33
|
+
void_dataset_triples.each do |void_triple|
|
34
|
+
@writer.write_statement(void_triple)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
evidence_uri, statements = evidence.to_rdf
|
39
|
+
statements.each do |statement|
|
40
|
+
@writer.write_statement(statement)
|
22
41
|
end
|
42
|
+
@writer.write_statement(RDF::Statement.new(@void_dataset_uri, RDF::DC.hasPart, evidence_uri))
|
23
43
|
end
|
24
44
|
|
25
45
|
def done
|
data/lib/bel/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.beta.
|
4
|
+
version: 0.4.0.beta.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Bargnesi
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-12-
|
14
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,4 +207,3 @@ signing_key:
|
|
207
207
|
specification_version: 4
|
208
208
|
summary: Process BEL with ruby.
|
209
209
|
test_files: []
|
210
|
-
has_rdoc:
|