bel_parser 1.0.0.alpha.22 → 1.0.0.alpha.23
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/.gemspec +1 -1
- data/VERSION +1 -1
- data/lib/bel/translator/plugins/bel_script/bel_citation_serialization.rb +27 -27
- data/lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb +25 -25
- data/lib/bel/translator/plugins/bel_script/bel_top_down_serialization.rb +22 -22
- data/lib/bel/translator/plugins/bel_script/{evidence_serialization.rb → nanopub_serialization.rb} +12 -12
- data/lib/bel/translator/plugins/bel_script/reader.rb +2 -2
- data/lib/bel/translator/plugins/bel_script/writer.rb +11 -11
- data/lib/bel/translator/plugins/bel_script.rb +1 -1
- data/lib/bel_parser/script/keywords.rb +12 -6
- data/lib/bel_parser/script/syntax/undefined_annotation.rb +3 -2
- data/lib/bel_parser/script/syntax/undefined_annotation_value.rb +3 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa3d8ae03619ff00bac48169269500514342d56d
|
4
|
+
data.tar.gz: 515fa48e8004ac0e1fea45811b08438ef90f7e16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5f3318420faa49120fcb6e7b0d3ee890a4f6adffe82bd5ea8bf75f2179c614660e20fbb3dd9bfea5b067344d2aeab458816a342d2a56f0cc38411b572b1a161
|
7
|
+
data.tar.gz: c5007a2e4d8f74a606102133ad17aecda204ea8cc8a959213d6fdf83a993f82e9a11539e3a5b69fed79c3aec33f8241671c6d64026caeaebe9f56c69fac77d65
|
data/.gemspec
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0.alpha.
|
1
|
+
1.0.0.alpha.23
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'nanopub_serialization.rb'
|
2
2
|
|
3
|
-
# BEL Script
|
3
|
+
# BEL Script nanopub serialization that groups nanopub by citation scoped to
|
4
4
|
# individual statement groups (i.e. BEL Script's +SET STATEMENT_GROUP+ and
|
5
5
|
# +UNSET STATEMENT_GROUP+).
|
6
6
|
#
|
7
|
-
# @example Citation serialization for a group of
|
7
|
+
# @example Citation serialization for a group of nanopub
|
8
8
|
# SET STATEMENT_GROUP = 12857727
|
9
9
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
10
|
-
# SET
|
10
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
11
11
|
# SET CellLine = "MCF 10A"
|
12
12
|
# SET TextLocation = Abstract
|
13
13
|
# complex(p(HGNC:USF1),g(HGNC:IGF2R))
|
@@ -18,41 +18,41 @@ require_relative 'evidence_serialization.rb'
|
|
18
18
|
#
|
19
19
|
# tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
|
20
20
|
#
|
21
|
-
# SET
|
21
|
+
# SET Support = "c-Myc was present on the CDK4 promoter to the ..."
|
22
22
|
# complex(p(HGNC:MYC),g(HGNC:CDK4))
|
23
23
|
# UNSET STATEMENT_GROUP
|
24
24
|
module BEL::Translator::Plugins::BelScript::BelCitationSerialization
|
25
|
-
include BEL::Translator::Plugins::BelScript::
|
25
|
+
include BEL::Translator::Plugins::BelScript::NanopubSerialization
|
26
26
|
|
27
|
-
# Serialize the {BEL::
|
27
|
+
# Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
|
28
28
|
#
|
29
29
|
# Includes +SET AnnotationName+ and +UNSET AnnotationName+ where needed in
|
30
30
|
# order to remove duplicating annotations.
|
31
31
|
#
|
32
|
-
# @param [BEL::
|
32
|
+
# @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
|
33
33
|
# @return [String] the BEL Script string
|
34
|
-
def to_bel(
|
34
|
+
def to_bel(nanopub)
|
35
35
|
bel = ''
|
36
36
|
|
37
|
-
citation = citation_value(
|
38
|
-
summary_text = summary_text_value(
|
39
|
-
annotations = annotation_values(
|
37
|
+
citation = citation_value(nanopub)
|
38
|
+
summary_text = summary_text_value(nanopub)
|
39
|
+
annotations = annotation_values(nanopub)
|
40
40
|
|
41
41
|
current_annotations = {}.merge(annotations)
|
42
42
|
current_annotations[:Citation] = citation if citation
|
43
|
-
current_annotations[:
|
43
|
+
current_annotations[:Support] = summary_text if summary_text
|
44
44
|
|
45
|
-
if !
|
45
|
+
if !nanopub.citation.id || nanopub.citation.id.empty?
|
46
46
|
citation_id = quote('')
|
47
47
|
else
|
48
|
-
citation_id = quote_if_needed(
|
48
|
+
citation_id = quote_if_needed(nanopub.citation.id)
|
49
49
|
end
|
50
50
|
|
51
51
|
# Reset cumulative annotations if new citation.
|
52
52
|
if cumulative_citation == nil
|
53
53
|
bel << %Q{SET STATEMENT_GROUP = #{citation_id}\n}
|
54
54
|
cumulative_annotations.clear
|
55
|
-
elsif
|
55
|
+
elsif nanopub.citation != cumulative_citation
|
56
56
|
bel << %Q{UNSET STATEMENT_GROUP\n}
|
57
57
|
bel << "\n\n"
|
58
58
|
bel << %Q{SET STATEMENT_GROUP = #{citation_id}\n}
|
@@ -60,22 +60,22 @@ module BEL::Translator::Plugins::BelScript::BelCitationSerialization
|
|
60
60
|
end
|
61
61
|
|
62
62
|
# Hang on to the last citation.
|
63
|
-
self.cumulative_citation =
|
63
|
+
self.cumulative_citation = nanopub.citation
|
64
64
|
|
65
|
-
# UNSET unused annotations from previous
|
65
|
+
# UNSET unused annotations from previous nanopub.
|
66
66
|
(cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
|
67
67
|
bel << "UNSET #{unset_key}\n"
|
68
68
|
cumulative_annotations.delete(unset_key)
|
69
69
|
end
|
70
70
|
|
71
|
-
# Remove annotation if key/value was SET by a previous
|
71
|
+
# Remove annotation if key/value was SET by a previous nanopub.
|
72
72
|
Hash[
|
73
73
|
cumulative_annotations.to_a & current_annotations.to_a
|
74
74
|
].each do |same_k, _|
|
75
75
|
current_annotations.delete(same_k)
|
76
76
|
end
|
77
77
|
|
78
|
-
# Retain the current
|
78
|
+
# Retain the current nanopub's annotation in cumulative set.
|
79
79
|
cumulative_annotations.merge!(current_annotations)
|
80
80
|
|
81
81
|
# SET Citation
|
@@ -84,10 +84,10 @@ module BEL::Translator::Plugins::BelScript::BelCitationSerialization
|
|
84
84
|
bel << "SET Citation = {#{citation}}\n"
|
85
85
|
end
|
86
86
|
|
87
|
-
# SET
|
88
|
-
summary_text = current_annotations.delete(:
|
87
|
+
# SET Support
|
88
|
+
summary_text = current_annotations.delete(:Support)
|
89
89
|
if summary_text
|
90
|
-
bel << %Q{SET
|
90
|
+
bel << %Q{SET Support = "#{summary_text}"\n}
|
91
91
|
end
|
92
92
|
|
93
93
|
# SET new or modified annotations
|
@@ -96,9 +96,9 @@ module BEL::Translator::Plugins::BelScript::BelCitationSerialization
|
|
96
96
|
end
|
97
97
|
|
98
98
|
# Assert BEL statement
|
99
|
-
bel << "#{
|
99
|
+
bel << "#{nanopub.bel_statement}\n"
|
100
100
|
|
101
|
-
# Separate
|
101
|
+
# Separate nanopub by new line.
|
102
102
|
bel << "\n"
|
103
103
|
|
104
104
|
bel
|
@@ -106,12 +106,12 @@ module BEL::Translator::Plugins::BelScript::BelCitationSerialization
|
|
106
106
|
|
107
107
|
private
|
108
108
|
|
109
|
-
# The cumulative citation that is active for the current
|
109
|
+
# The cumulative citation that is active for the current nanopub. This is
|
110
110
|
# tracked in order to decide when to begin a new statement group.
|
111
111
|
attr_accessor :cumulative_citation
|
112
112
|
|
113
113
|
# Returns the cumulative +Hash+ of annotations. This *state* is used to keep
|
114
|
-
# track of the active, scoped annotations as
|
114
|
+
# track of the active, scoped annotations as nanopub is serialized.
|
115
115
|
def cumulative_annotations
|
116
116
|
@cumulative_annotations ||= {}
|
117
117
|
end
|
@@ -1,69 +1,69 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'nanopub_serialization'
|
2
2
|
|
3
|
-
# BEL Script
|
3
|
+
# BEL Script nanopub serialization that writes each nanopub with their full
|
4
4
|
# set of annotations (i.e. includes all `SET` and necessary `UNSET` records).
|
5
5
|
# This style is more readable because it groups all set annotations near the
|
6
6
|
# BEL statement.
|
7
7
|
#
|
8
|
-
# @example Discrete serialization for a group of
|
8
|
+
# @example Discrete serialization for a group of nanopub
|
9
9
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
10
|
-
# SET
|
10
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
11
11
|
# SET CellLine = "MCF 10A"
|
12
12
|
# SET TextLocation = Abstract
|
13
13
|
# complex(p(HGNC:USF1),g(HGNC:IGF2R))
|
14
14
|
#
|
15
15
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
16
|
-
# SET
|
16
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
17
17
|
# SET CellLine = "MCF 10A"
|
18
18
|
# SET TextLocation = Abstract
|
19
19
|
# complex(p(HGNC:USF2),g(HGNC:IGF2R))
|
20
20
|
#
|
21
21
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
22
|
-
# SET
|
22
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
23
23
|
# SET CellLine = "MCF 10A"
|
24
24
|
# SET TextLocation = Abstract
|
25
25
|
# tscript(p(HGNC:USF2)) directlyIncreases r(HGNC:IGF2R)
|
26
26
|
#
|
27
27
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
28
|
-
# SET
|
28
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
29
29
|
# SET CellLine = "MCF 10A"
|
30
30
|
# SET TextLocation = Abstract
|
31
31
|
# tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
|
32
32
|
#
|
33
33
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
34
|
-
# SET
|
34
|
+
# SET Support = "c-Myc was present on the CDK4 promoter to the ..."
|
35
35
|
# SET CellLine = "MCF 10A"
|
36
36
|
# SET TextLocation = Abstract
|
37
37
|
# complex(p(HGNC:MYC),g(HGNC:CDK4))
|
38
38
|
#
|
39
39
|
# UNSET CellLine
|
40
40
|
module BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
|
41
|
-
include BEL::Translator::Plugins::BelScript::
|
41
|
+
include BEL::Translator::Plugins::BelScript::NanopubSerialization
|
42
42
|
|
43
|
-
# Serialize the {BEL::
|
43
|
+
# Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
|
44
44
|
# Includes all necessary +SET AnnotationName+ and +UNSET AnnotationName+
|
45
45
|
# records around the BEL statement.
|
46
46
|
#
|
47
|
-
# @param [BEL::
|
47
|
+
# @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
|
48
48
|
# @return [String] the BEL Script string
|
49
|
-
def to_bel(
|
49
|
+
def to_bel(nanopub)
|
50
50
|
bel = ''
|
51
51
|
|
52
|
-
citation = citation_value(
|
53
|
-
summary_text = summary_text_value(
|
54
|
-
annotations = annotation_values(
|
52
|
+
citation = citation_value(nanopub)
|
53
|
+
summary_text = summary_text_value(nanopub)
|
54
|
+
annotations = annotation_values(nanopub)
|
55
55
|
|
56
56
|
current_annotations = {}.merge(annotations)
|
57
57
|
current_annotations[:Citation] = citation if citation
|
58
|
-
current_annotations[:
|
58
|
+
current_annotations[:Support] = summary_text if summary_text
|
59
59
|
|
60
|
-
# UNSET unused annotations from previous
|
60
|
+
# UNSET unused annotations from previous nanopub.
|
61
61
|
(cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
|
62
62
|
bel << "UNSET #{unset_key}\n"
|
63
63
|
cumulative_annotations.delete(unset_key)
|
64
64
|
end
|
65
65
|
|
66
|
-
# Retain the current
|
66
|
+
# Retain the current nanopub's annotation in cumulative set.
|
67
67
|
cumulative_annotations.merge!(current_annotations)
|
68
68
|
|
69
69
|
# SET Citation
|
@@ -72,10 +72,10 @@ module BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
|
|
72
72
|
bel << "SET Citation = {#{citation}}\n"
|
73
73
|
end
|
74
74
|
|
75
|
-
# SET
|
76
|
-
summary_text = current_annotations.delete(:
|
75
|
+
# SET Support
|
76
|
+
summary_text = current_annotations.delete(:Support)
|
77
77
|
if summary_text
|
78
|
-
bel << %Q{SET
|
78
|
+
bel << %Q{SET Support = "#{summary_text}"\n}
|
79
79
|
end
|
80
80
|
|
81
81
|
# SET new or modified annotations
|
@@ -84,9 +84,9 @@ module BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
|
|
84
84
|
end
|
85
85
|
|
86
86
|
# Assert BEL statement
|
87
|
-
bel << "#{
|
87
|
+
bel << "#{nanopub.bel_statement}\n"
|
88
88
|
|
89
|
-
# Separate
|
89
|
+
# Separate nanopub by new line.
|
90
90
|
bel << "\n"
|
91
91
|
|
92
92
|
bel
|
@@ -95,14 +95,14 @@ module BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
|
|
95
95
|
private
|
96
96
|
|
97
97
|
# Returns the cumulative +Hash+ of annotations. This *state* is used to keep
|
98
|
-
# track of the active, scoped annotations as
|
98
|
+
# track of the active, scoped annotations as nanopub is serialized.
|
99
99
|
def cumulative_annotations
|
100
100
|
@cumulative_annotations ||= {}
|
101
101
|
end
|
102
102
|
|
103
103
|
# Return BEL Script syntax that completes the BEL Script document.
|
104
104
|
# The empty string is returned since no ending syntax is necessary when
|
105
|
-
# serializing each
|
105
|
+
# serializing each nanopub discretely.
|
106
106
|
def epilogue
|
107
107
|
""
|
108
108
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'nanopub_serialization.rb'
|
2
2
|
|
3
|
-
# BEL Script
|
3
|
+
# BEL Script nanopub serialization that writes nanopubs sequentially while
|
4
4
|
# including only the necessary unsetting of annotations (i.e. BEL Script's
|
5
5
|
# +UNSET AnnotationName+ syntax).
|
6
6
|
#
|
7
|
-
# @example Top-down serialization for a group of
|
7
|
+
# @example Top-down serialization for a group of nanopubs
|
8
8
|
# SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
|
9
|
-
# SET
|
9
|
+
# SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
|
10
10
|
# SET CellLine = "MCF 10A"
|
11
11
|
# SET TextLocation = Abstract
|
12
12
|
# complex(p(HGNC:USF1),g(HGNC:IGF2R))
|
@@ -17,44 +17,44 @@ require_relative 'evidence_serialization.rb'
|
|
17
17
|
#
|
18
18
|
# tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
|
19
19
|
#
|
20
|
-
# SET
|
20
|
+
# SET Support = "c-Myc was present on the CDK4 promoter to the ..."
|
21
21
|
# complex(p(HGNC:MYC),g(HGNC:CDK4))
|
22
22
|
#
|
23
23
|
# UNSET CellLine
|
24
24
|
module BEL::Translator::Plugins::BelScript::BelTopDownSerialization
|
25
|
-
include BEL::Translator::Plugins::BelScript::
|
25
|
+
include BEL::Translator::Plugins::BelScript::NanopubSerialization
|
26
26
|
|
27
|
-
# Serialize the {BEL::
|
27
|
+
# Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
|
28
28
|
# Includes all necessary +SET AnnotationName+ and +UNSET AnnotationName+
|
29
29
|
# records within the scope of a citation's statement group.
|
30
30
|
#
|
31
|
-
# @param [BEL::
|
31
|
+
# @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
|
32
32
|
# @return [String] the BEL Script string
|
33
|
-
def to_bel(
|
33
|
+
def to_bel(nanopub)
|
34
34
|
bel = ''
|
35
35
|
|
36
|
-
citation = citation_value(
|
37
|
-
summary_text = summary_text_value(
|
38
|
-
annotations = annotation_values(
|
36
|
+
citation = citation_value(nanopub)
|
37
|
+
summary_text = summary_text_value(nanopub)
|
38
|
+
annotations = annotation_values(nanopub)
|
39
39
|
|
40
40
|
current_annotations = {}.merge(annotations)
|
41
41
|
current_annotations[:Citation] = citation if citation
|
42
|
-
current_annotations[:
|
42
|
+
current_annotations[:Support] = summary_text if summary_text
|
43
43
|
|
44
|
-
# UNSET unused annotations from previous
|
44
|
+
# UNSET unused annotations from previous nanopub.
|
45
45
|
(cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
|
46
46
|
bel << "UNSET #{unset_key}\n"
|
47
47
|
cumulative_annotations.delete(unset_key)
|
48
48
|
end
|
49
49
|
|
50
|
-
# Remove annotation if key/value was SET by a previous
|
50
|
+
# Remove annotation if key/value was SET by a previous nanopub.
|
51
51
|
Hash[
|
52
52
|
cumulative_annotations.to_a & current_annotations.to_a
|
53
53
|
].each do |same_k, _|
|
54
54
|
current_annotations.delete(same_k)
|
55
55
|
end
|
56
56
|
|
57
|
-
# Retain the current
|
57
|
+
# Retain the current nanopub's annotation in cumulative set.
|
58
58
|
cumulative_annotations.merge!(current_annotations)
|
59
59
|
|
60
60
|
# SET Citation
|
@@ -63,10 +63,10 @@ module BEL::Translator::Plugins::BelScript::BelTopDownSerialization
|
|
63
63
|
bel << "SET Citation = {#{citation}}\n"
|
64
64
|
end
|
65
65
|
|
66
|
-
# SET
|
67
|
-
summary_text = current_annotations.delete(:
|
66
|
+
# SET Support
|
67
|
+
summary_text = current_annotations.delete(:Support)
|
68
68
|
if summary_text
|
69
|
-
bel << %Q{SET
|
69
|
+
bel << %Q{SET Support = "#{summary_text}"\n}
|
70
70
|
end
|
71
71
|
|
72
72
|
# SET new or modified annotations
|
@@ -75,9 +75,9 @@ module BEL::Translator::Plugins::BelScript::BelTopDownSerialization
|
|
75
75
|
end
|
76
76
|
|
77
77
|
# Assert BEL statement
|
78
|
-
bel << "#{
|
78
|
+
bel << "#{nanopub.bel_statement}\n"
|
79
79
|
|
80
|
-
# Separate
|
80
|
+
# Separate nanopub by new line.
|
81
81
|
bel << "\n"
|
82
82
|
|
83
83
|
bel
|
@@ -86,7 +86,7 @@ module BEL::Translator::Plugins::BelScript::BelTopDownSerialization
|
|
86
86
|
private
|
87
87
|
|
88
88
|
# Returns the cumulative +Hash+ of annotations. This *state* is used to keep
|
89
|
-
# track of the active, scoped annotations as
|
89
|
+
# track of the active, scoped annotations as nanopub is serialized.
|
90
90
|
def cumulative_annotations
|
91
91
|
@cumulative_annotations ||= {}
|
92
92
|
end
|
data/lib/bel/translator/plugins/bel_script/{evidence_serialization.rb → nanopub_serialization.rb}
RENAMED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'bel/quoting'
|
2
2
|
|
3
|
-
# Serializing of common {BEL::
|
3
|
+
# Serializing of common {BEL::Nanopub::Nanopub nanopub} components to BEL
|
4
4
|
# Script syntax.
|
5
5
|
#
|
6
6
|
# @abstract
|
7
|
-
module BEL::Translator::Plugins::BelScript::
|
7
|
+
module BEL::Translator::Plugins::BelScript::NanopubSerialization
|
8
8
|
include BEL::Quoting
|
9
9
|
|
10
|
-
# Serialize the {BEL::
|
10
|
+
# Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
|
11
11
|
#
|
12
|
-
# @param [BEL::
|
12
|
+
# @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
|
13
13
|
# @return [String] the BEL Script string
|
14
14
|
# @abstract Include and override {#to_bel} to implement serialization
|
15
|
-
# {BEL::
|
16
|
-
def to_bel(
|
15
|
+
# {BEL::Nanopub::Nanopub nanopub} to BEL Script
|
16
|
+
def to_bel(nanopub)
|
17
17
|
end
|
18
18
|
|
19
19
|
# Return BEL Script syntax that completes the BEL Script document.
|
@@ -25,8 +25,8 @@ module BEL::Translator::Plugins::BelScript::EvidenceSerialization
|
|
25
25
|
|
26
26
|
protected
|
27
27
|
|
28
|
-
def citation_value(
|
29
|
-
citation =
|
28
|
+
def citation_value(nanopub)
|
29
|
+
citation = nanopub.citation
|
30
30
|
|
31
31
|
return nil unless citation && citation.valid?
|
32
32
|
|
@@ -42,8 +42,8 @@ module BEL::Translator::Plugins::BelScript::EvidenceSerialization
|
|
42
42
|
values.join(', ')
|
43
43
|
end
|
44
44
|
|
45
|
-
def summary_text_value(
|
46
|
-
summary_text =
|
45
|
+
def summary_text_value(nanopub)
|
46
|
+
summary_text = nanopub.summary_text
|
47
47
|
|
48
48
|
return nil unless summary_text && summary_text.value
|
49
49
|
|
@@ -53,8 +53,8 @@ module BEL::Translator::Plugins::BelScript::EvidenceSerialization
|
|
53
53
|
value
|
54
54
|
end
|
55
55
|
|
56
|
-
def annotation_values(
|
57
|
-
experiment_context =
|
56
|
+
def annotation_values(nanopub)
|
57
|
+
experiment_context = nanopub.experiment_context
|
58
58
|
|
59
59
|
return {} unless experiment_context
|
60
60
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'bel_parser'
|
2
2
|
require 'bel_parser/resource/resource_url_reader'
|
3
|
-
require 'bel/
|
3
|
+
require 'bel/nanopub'
|
4
4
|
|
5
5
|
module BEL::Translator::Plugins
|
6
6
|
module BelScript
|
@@ -28,7 +28,7 @@ module BEL::Translator::Plugins
|
|
28
28
|
true,
|
29
29
|
false
|
30
30
|
).each do |(num, line, ast_node, nanopub_hash)|
|
31
|
-
yield ::BEL::
|
31
|
+
yield ::BEL::Nanopub::Nanopub.create(nanopub_hash)
|
32
32
|
end
|
33
33
|
else
|
34
34
|
enum_for(:each)
|
@@ -9,16 +9,16 @@ module BEL::Translator::Plugins
|
|
9
9
|
|
10
10
|
class Writer
|
11
11
|
|
12
|
-
# Create a {Writer} object that serializes {BEL::
|
12
|
+
# Create a {Writer} object that serializes {BEL::Nanopub::Nanopub} to
|
13
13
|
# BEL Script.
|
14
14
|
#
|
15
|
-
# @param [Enumerator<BEL::
|
15
|
+
# @param [Enumerator<BEL::Nanopub::Nanopub>] data nanopubs iterated
|
16
16
|
# using +each+
|
17
17
|
# @option options [Boolean] :write_header +true+ to write the BEL Script
|
18
18
|
# document header; +false+ to not write the BEL Script document
|
19
19
|
# header
|
20
20
|
# @option options [Symbol,Module] :serialization the serialization
|
21
|
-
# technique to use for
|
21
|
+
# technique to use for nanopub; a +Module+ type will be used as
|
22
22
|
# is; a +Symbol+ type will be mapped as
|
23
23
|
# +:discrete+ => {BelDiscreteSerialization},
|
24
24
|
# +:topdown+ => {BelTopDownSerialization},
|
@@ -61,27 +61,27 @@ module BEL::Translator::Plugins
|
|
61
61
|
if block_given?
|
62
62
|
combiner =
|
63
63
|
if @streaming
|
64
|
-
BEL::
|
64
|
+
BEL::Nanopub::StreamingNanopubCombiner.new(@data)
|
65
65
|
elsif @annotation_reference_map && @namespace_reference_map
|
66
|
-
BEL::
|
66
|
+
BEL::Nanopub::MapReferencesCombiner.new(
|
67
67
|
@data,
|
68
|
-
BEL::
|
68
|
+
BEL::Nanopub::HashMapReferences.new(
|
69
69
|
@annotation_reference_map,
|
70
70
|
@namespace_reference_map
|
71
71
|
)
|
72
72
|
)
|
73
73
|
else
|
74
|
-
BEL::
|
74
|
+
BEL::Nanopub::BufferingNanopubCombiner.new(@data)
|
75
75
|
end
|
76
76
|
|
77
77
|
header_flag = true
|
78
|
-
combiner.each { |
|
78
|
+
combiner.each { |nanopub|
|
79
79
|
|
80
|
-
# serialize
|
81
|
-
bel = to_bel(
|
80
|
+
# serialize nanopub
|
81
|
+
bel = to_bel(nanopub)
|
82
82
|
|
83
83
|
if @write_header && header_flag
|
84
|
-
yield document_header(
|
84
|
+
yield document_header(nanopub.metadata.document_header)
|
85
85
|
yield namespaces(combiner.namespace_references)
|
86
86
|
yield annotations(combiner.annotation_references)
|
87
87
|
|
@@ -5,7 +5,7 @@ module BEL::Translator::Plugins
|
|
5
5
|
module BelScript
|
6
6
|
ID = :bel_script
|
7
7
|
NAME = 'BEL Script Translator'
|
8
|
-
DESCRIPTION = 'A translator that
|
8
|
+
DESCRIPTION = 'A translator that reads/writes BEL nanopubs to BEL Script.'
|
9
9
|
MEDIA_TYPES = %i(application/bel)
|
10
10
|
EXTENSIONS = %i(bel)
|
11
11
|
|
@@ -1,14 +1,16 @@
|
|
1
1
|
module BELParser
|
2
2
|
module Script
|
3
3
|
module Keyword
|
4
|
-
BEL_VERSION_STRING
|
5
|
-
BEL_VERSION_REGEX
|
4
|
+
BEL_VERSION_STRING = 'BELVersion'.freeze
|
5
|
+
BEL_VERSION_REGEX = /\A#{BEL_VERSION_STRING}\Z/i
|
6
6
|
|
7
|
-
CITATION
|
8
|
-
CITATION_REGEX
|
7
|
+
CITATION = 'Citation'.freeze
|
8
|
+
CITATION_REGEX = /\A#{CITATION}\Z/i
|
9
9
|
|
10
|
-
SUPPORT
|
11
|
-
SUPPORT_REGEX
|
10
|
+
SUPPORT = 'Support'.freeze
|
11
|
+
SUPPORT_REGEX = /\A#{SUPPORT}\Z/i
|
12
|
+
|
13
|
+
IMPLICIT_ANNOTATIONS = ['Citation', 'Support', 'STATEMENT_GROUP']
|
12
14
|
|
13
15
|
def is_bel_version?(string)
|
14
16
|
string =~ BEL_VERSION_REGEX
|
@@ -21,6 +23,10 @@ module BELParser
|
|
21
23
|
def is_support?(string)
|
22
24
|
string =~ SUPPORT_REGEX
|
23
25
|
end
|
26
|
+
|
27
|
+
def is_implicit_annotation?(string)
|
28
|
+
IMPLICIT_ANNOTATIONS.any? { |annotation| string == annotation }
|
29
|
+
end
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
@@ -4,15 +4,16 @@ require 'bel_parser/language/syntax_error'
|
|
4
4
|
require 'bel_parser/quoting'
|
5
5
|
require 'bel_parser/parsers/ast/node'
|
6
6
|
require 'concurrent/hash'
|
7
|
+
require_relative '../keywords'
|
7
8
|
|
8
9
|
module BELParser
|
9
10
|
module Script
|
10
11
|
module Syntax
|
11
12
|
class UndefinedAnnotation
|
12
13
|
extend BELParser::Language::Syntax::SyntaxFunction
|
14
|
+
extend BELParser::Script::Keyword
|
13
15
|
|
14
16
|
TARGET_NODE = BELParser::Parsers::AST::Set
|
15
|
-
IMPLICIT_KEYWORDS = ['Citation', 'Evidence', 'STATEMENT_GROUP']
|
16
17
|
|
17
18
|
def self.map(ast_node, script_context)
|
18
19
|
return nil unless ast_node.is_a?(TARGET_NODE)
|
@@ -20,7 +21,7 @@ module BELParser
|
|
20
21
|
annotation_definitions =
|
21
22
|
script_context[:annotation_definitions] ||= Concurrent::Hash.new
|
22
23
|
|
23
|
-
return nil if
|
24
|
+
return nil if is_implicit_annotation?(name_string)
|
24
25
|
return nil if annotation_definitions.key?(name_string)
|
25
26
|
UndefinedAnnotationError.new(
|
26
27
|
ast_node,
|
@@ -4,6 +4,7 @@ require 'bel_parser/language/syntax_warning'
|
|
4
4
|
require 'bel_parser/quoting'
|
5
5
|
require 'bel_parser/parsers/ast/node'
|
6
6
|
require 'concurrent/hash'
|
7
|
+
require_relative '../keywords'
|
7
8
|
|
8
9
|
module BELParser
|
9
10
|
module Script
|
@@ -11,17 +12,17 @@ module BELParser
|
|
11
12
|
class UndefinedAnnotationValue
|
12
13
|
extend BELParser::Language::Syntax::SyntaxFunction
|
13
14
|
extend BELParser::Quoting
|
15
|
+
extend BELParser::Script::Keyword
|
14
16
|
|
15
17
|
TARGET_NODE = BELParser::Parsers::AST::Set
|
16
18
|
LIST_NODE = BELParser::Parsers::AST::List
|
17
|
-
IMPLICIT_KEYWORDS = ['Citation', 'Evidence', 'STATEMENT_GROUP']
|
18
19
|
|
19
20
|
def self.map(ast_node, script_context)
|
20
21
|
return nil unless ast_node.is_a?(TARGET_NODE)
|
21
22
|
name, value = ast_node.children
|
22
23
|
name_string = ast_node.name.identifier.string_literal
|
23
24
|
|
24
|
-
return nil if
|
25
|
+
return nil if is_implicit_annotation?(name_string)
|
25
26
|
dataset = annotation(name_string, script_context)
|
26
27
|
return nil unless dataset
|
27
28
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bel_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.alpha.
|
4
|
+
version: 1.0.0.alpha.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Bargnesi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-05-
|
12
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Implements language versions 1.0 and 2.0.
|
15
15
|
email: abargnesi@selventa.com
|
@@ -30,7 +30,7 @@ files:
|
|
30
30
|
- lib/bel/translator/plugins/bel_script/bel_citation_serialization.rb
|
31
31
|
- lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb
|
32
32
|
- lib/bel/translator/plugins/bel_script/bel_top_down_serialization.rb
|
33
|
-
- lib/bel/translator/plugins/bel_script/
|
33
|
+
- lib/bel/translator/plugins/bel_script/nanopub_serialization.rb
|
34
34
|
- lib/bel/translator/plugins/bel_script/reader.rb
|
35
35
|
- lib/bel/translator/plugins/bel_script/translator.rb
|
36
36
|
- lib/bel/translator/plugins/bel_script/writer.rb
|