bel_parser 1.0.0.alpha.12 → 1.0.0.alpha.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.gemspec +1 -1
  3. data/VERSION +1 -1
  4. data/bin/bel2_validator +35 -8
  5. data/lib/bel_parser/expression/validator.rb +3 -2
  6. data/lib/bel_parser/language/apply_namespace_encoding.rb +96 -0
  7. data/lib/bel_parser/language/base_specification.rb +82 -0
  8. data/lib/bel_parser/language/expression_validator.rb +6 -2
  9. data/lib/bel_parser/language/relationship.rb +1 -1
  10. data/lib/bel_parser/language/semantics/signature_mapping.rb +26 -32
  11. data/lib/bel_parser/language/semantics_ast.rb +285 -149
  12. data/lib/bel_parser/language/semantics_ast_warnings.rb +180 -0
  13. data/lib/bel_parser/language/semantics_result.rb +11 -2
  14. data/lib/bel_parser/language/semantics_type_warning.rb +22 -0
  15. data/lib/bel_parser/language/semantics_warning.rb +8 -0
  16. data/lib/bel_parser/language/specification.rb +38 -55
  17. data/lib/bel_parser/language/syntax/undefined_namespace_value.rb +43 -0
  18. data/lib/bel_parser/language/syntax_error.rb +8 -0
  19. data/lib/bel_parser/language/syntax_result.rb +8 -0
  20. data/lib/bel_parser/language/syntax_warning.rb +9 -4
  21. data/lib/bel_parser/language/version1_0/functions/abundance.rb +5 -6
  22. data/lib/bel_parser/language/version1_0/functions/biological_process.rb +5 -6
  23. data/lib/bel_parser/language/version1_0/functions/complex_abundance.rb +6 -7
  24. data/lib/bel_parser/language/version1_0/functions/fusion.rb +39 -60
  25. data/lib/bel_parser/language/version1_0/functions/gene_abundance.rb +9 -12
  26. data/lib/bel_parser/language/version1_0/functions/list.rb +5 -6
  27. data/lib/bel_parser/language/version1_0/functions/micro_rna_abundance.rb +5 -6
  28. data/lib/bel_parser/language/version1_0/functions/pathology.rb +5 -6
  29. data/lib/bel_parser/language/version1_0/functions/protein_abundance.rb +16 -30
  30. data/lib/bel_parser/language/version1_0/functions/protein_modification.rb +15 -27
  31. data/lib/bel_parser/language/version1_0/functions/rna_abundance.rb +8 -11
  32. data/lib/bel_parser/language/version1_0/functions/substitution.rb +6 -12
  33. data/lib/bel_parser/language/version1_0/functions/translocation.rb +9 -12
  34. data/lib/bel_parser/language/version1_0/functions/truncation.rb +2 -4
  35. data/lib/bel_parser/language/version1_0/value_encodings/abundance.rb +21 -0
  36. data/lib/bel_parser/language/version1_0/value_encodings/any.rb +74 -0
  37. data/lib/bel_parser/language/version1_0/value_encodings/biological_process.rb +21 -0
  38. data/lib/bel_parser/language/version1_0/value_encodings/complex_abundance.rb +21 -0
  39. data/lib/bel_parser/language/version1_0/value_encodings/gene_abundance.rb +21 -0
  40. data/lib/bel_parser/language/version1_0/value_encodings/micro_rna_abundance.rb +21 -0
  41. data/lib/bel_parser/language/version1_0/value_encodings/pathology.rb +21 -0
  42. data/lib/bel_parser/language/version1_0/value_encodings/protein_abundance.rb +21 -0
  43. data/lib/bel_parser/language/version1_0/value_encodings/rna_abundance.rb +21 -0
  44. data/lib/bel_parser/language/version1_0.rb +6 -87
  45. data/lib/bel_parser/language/version2_0/functions/abundance.rb +13 -18
  46. data/lib/bel_parser/language/version2_0/functions/biological_process.rb +5 -6
  47. data/lib/bel_parser/language/version2_0/functions/complex_abundance.rb +9 -12
  48. data/lib/bel_parser/language/version2_0/functions/fragment.rb +4 -9
  49. data/lib/bel_parser/language/version2_0/functions/from_location.rb +5 -6
  50. data/lib/bel_parser/language/version2_0/functions/fusion.rb +39 -66
  51. data/lib/bel_parser/language/version2_0/functions/gene_abundance.rb +13 -18
  52. data/lib/bel_parser/language/version2_0/functions/list.rb +5 -6
  53. data/lib/bel_parser/language/version2_0/functions/location.rb +5 -6
  54. data/lib/bel_parser/language/version2_0/functions/micro_rna_abundance.rb +13 -18
  55. data/lib/bel_parser/language/version2_0/functions/molecular_activity.rb +6 -5
  56. data/lib/bel_parser/language/version2_0/functions/pathology.rb +5 -6
  57. data/lib/bel_parser/language/version2_0/functions/protein_abundance.rb +21 -30
  58. data/lib/bel_parser/language/version2_0/functions/protein_modification.rb +11 -17
  59. data/lib/bel_parser/language/version2_0/functions/rna_abundance.rb +13 -18
  60. data/lib/bel_parser/language/version2_0/functions/to_location.rb +5 -6
  61. data/lib/bel_parser/language/version2_0/functions/variant.rb +1 -4
  62. data/lib/bel_parser/language/version2_0/value_encodings/abundance.rb +21 -0
  63. data/lib/bel_parser/language/version2_0/value_encodings/activity.rb +21 -0
  64. data/lib/bel_parser/language/version2_0/value_encodings/any.rb +74 -0
  65. data/lib/bel_parser/language/version2_0/value_encodings/biological_process.rb +21 -0
  66. data/lib/bel_parser/language/version2_0/value_encodings/complex_abundance.rb +21 -0
  67. data/lib/bel_parser/language/version2_0/value_encodings/gene_abundance.rb +21 -0
  68. data/lib/bel_parser/language/version2_0/value_encodings/location.rb +21 -0
  69. data/lib/bel_parser/language/version2_0/value_encodings/micro_rna_abundance.rb +21 -0
  70. data/lib/bel_parser/language/version2_0/value_encodings/pathology.rb +21 -0
  71. data/lib/bel_parser/language/version2_0/value_encodings/protein_abundance.rb +21 -0
  72. data/lib/bel_parser/language/version2_0/value_encodings/protein_modification.rb +21 -0
  73. data/lib/bel_parser/language/version2_0/value_encodings/rna_abundance.rb +21 -0
  74. data/lib/bel_parser/language/version2_0.rb +6 -60
  75. data/lib/bel_parser/language.rb +3 -4
  76. data/lib/bel_parser/parsers/ast/node.rb +14 -2
  77. data/lib/bel_parser/{language/quoting.rb → quoting.rb} +0 -56
  78. data/lib/bel_parser/resource/concept.rb +56 -0
  79. data/lib/bel_parser/resource/concept_scheme.rb +35 -0
  80. data/lib/bel_parser/resource/dataset.rb +34 -0
  81. data/lib/bel_parser/resource/eager_reader.rb +75 -0
  82. data/lib/bel_parser/resource/eager_sparql_reader.rb +51 -0
  83. data/lib/bel_parser/resource/http_cache.rb +71 -0
  84. data/lib/bel_parser/resource/jena_tdb_reader.rb +246 -0
  85. data/lib/bel_parser/resource/lru_cache.rb +111 -0
  86. data/lib/bel_parser/resource/lru_reader.rb +38 -0
  87. data/lib/bel_parser/resource/reader.rb +18 -0
  88. data/lib/bel_parser/resource/resource_file_reader.rb +134 -0
  89. data/lib/bel_parser/resource/sparql_reader.rb +178 -0
  90. data/lib/bel_parser/resource/value.rb +31 -0
  91. metadata +42 -4
  92. data/lib/bel_parser/language/version1_0/syntax/function.rb +0 -28
@@ -0,0 +1,180 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+ require_relative 'semantics_warning'
3
+
4
+ module BELParser
5
+ module Language
6
+ module Semantics
7
+ class SemanticsNilNodeWarning < SemanticsWarning
8
+ attr_reader :expected_type
9
+
10
+ def initialize(expression_node, spec, expected)
11
+ super(expression_node, spec)
12
+ @expected_type = expected.ast_type
13
+ end
14
+
15
+ def to_s
16
+ %(Missing the #{@expected_type} type.)
17
+ end
18
+ end
19
+
20
+ class SemanticsNotNilNodeWarning < SemanticsWarning
21
+ attr_reader :actual_type
22
+
23
+ def initialize(expression_node, spec)
24
+ super(expression_node, spec)
25
+ @actual_type = expression_node.type
26
+ end
27
+
28
+ def to_s
29
+ %(Expected nothing, but saw #{actual_type} type.)
30
+ end
31
+ end
32
+
33
+ class SemanticsTypeWarning < SemanticsWarning
34
+ attr_reader :expected_type, :actual_type
35
+
36
+ def initialize(expression_node, spec, expected, actual)
37
+ super(expression_node, spec)
38
+ @expected_type = expected.ast_type
39
+ @actual_type = actual.type
40
+ end
41
+
42
+ def to_s
43
+ %(Expected #{expected_type} type, but saw #{actual_type} type.)
44
+ end
45
+ end
46
+
47
+ class SemanticsArgumentLengthWarning < SemanticsWarning
48
+ attr_reader :expected_type, :actual_type
49
+
50
+ def initialize(expression_node, spec, expected, actual)
51
+ super(expression_node, spec)
52
+ @expected_length = expected.arguments.length
53
+ @actual_length = actual.arguments.length
54
+ end
55
+
56
+ def to_s
57
+ %(Expected #@expected_length arguments, but saw #@actual_length arguments.)
58
+ end
59
+ end
60
+
61
+ class SemanticsMissingNamespaceWarning < SemanticsWarning
62
+ def initialize(expression_node, spec)
63
+ super(expression_node, spec)
64
+ end
65
+
66
+ def to_s
67
+ prefix = @expression_node.identifier.string_literal
68
+ %(Missing namespace for prefix "#{prefix}".)
69
+ end
70
+ end
71
+
72
+ class SemanticsInvalidNamespaceWarning < SemanticsWarning
73
+ def initialize(expression_node, spec, expected_namespaces)
74
+ super(expression_node, spec)
75
+ @expected_namespaces = expected_namespaces
76
+ end
77
+
78
+ def to_s
79
+ namespace =
80
+ @expression_node.namespace &&
81
+ @expression_node.namespace.identifier
82
+ %(Invalid namespace "#{namespace}". Was expecting one of: #{@expected_namespaces.join(', ')})
83
+ end
84
+ end
85
+
86
+ class SemanticsMissingEncodingWarning < SemanticsWarning
87
+ def initialize(expression_node, spec)
88
+ super(expression_node, spec)
89
+ end
90
+
91
+ def to_s
92
+ value = @expression_node.children[0].string_literal
93
+ %(Missing encoding for value "#{value}".)
94
+ end
95
+ end
96
+
97
+ class SemanticsInvalidEncodingWarning < SemanticsWarning
98
+ def initialize(expression_node, spec, expected_encodings)
99
+ super(expression_node, spec)
100
+ @expected_encodings = expected_encodings
101
+ end
102
+
103
+ def to_s
104
+ encoding = @expression_node.encoding
105
+ %(Encoding of "#{encoding}" does not match expected: #{@expected_encodings.join(', ')})
106
+ end
107
+ end
108
+
109
+ class SemanticsInvalidFunctionWarning < SemanticsWarning
110
+ def initialize(expression_node, spec, expected_functions)
111
+ super(expression_node, spec)
112
+ @expected_functions = expected_functions
113
+ end
114
+
115
+ def to_s
116
+ function = @expression_node.string_literal
117
+ %(Function of "#{function}" does not match expected: #{@expected_functions.join(', ')})
118
+ end
119
+ end
120
+
121
+ class SemanticsInvalidReturnTypeWarning < SemanticsWarning
122
+ def initialize(expression_node, spec, expected_return_types)
123
+ super(expression_node, spec)
124
+ @expected_return_types = expected_return_types
125
+ end
126
+
127
+ def to_s
128
+ function = @expression_node.string_literal
129
+ %(Function of "#{function}" does not match return types: #{@expected_return_types.join(', ')})
130
+ end
131
+ end
132
+
133
+ class SemanticsInvalidProteinModificationWarning < SemanticsWarning
134
+ def initialize(expression_node, spec, expected_protein_modifications)
135
+ super(expression_node, spec)
136
+ @expected_protein_modifications = expected_protein_modifications
137
+ end
138
+
139
+ def to_s
140
+ pmod = @expression_node.children[0].string_literal
141
+ %(Protein modification of "#{pmod}" does not match allowed protein modifications: #{@expected_protein_modifications.join(', ')})
142
+ end
143
+ end
144
+
145
+ class SemanticsInvalidAminoAcidWarning < SemanticsWarning
146
+ def initialize(expression_node, spec, expected_amino_acids)
147
+ super(expression_node, spec)
148
+ @expected_amino_acids = expected_amino_acids
149
+ end
150
+
151
+ def to_s
152
+ amino_acid = @expression_node.children[0].string_literal
153
+ %(Amino acid of "#{amino_acid}" does not match allowed amino acids: #{@expected_amino_acids.join(', ')})
154
+ end
155
+ end
156
+
157
+ class SemanticsInvalidAminoAcidRangeWarning < SemanticsWarning
158
+ def initialize(expression_node, spec)
159
+ super(expression_node, spec)
160
+ end
161
+
162
+ def to_s
163
+ amino_acid_range = @expression_node.children[0].string_literal
164
+ %(Invalid amino acid range "#{amino_acid_range}".)
165
+ end
166
+ end
167
+
168
+ class SemanticsInvalidSequencePositionWarning < SemanticsWarning
169
+ def initialize(expression_node, spec)
170
+ super(expression_node, spec)
171
+ end
172
+
173
+ def to_s
174
+ pos = @expression_node.children[0].string_literal
175
+ %(Sequence position of "#{pos}" is not a positive number.)
176
+ end
177
+ end
178
+ end
179
+ end
180
+ end
@@ -1,7 +1,8 @@
1
1
  module BELParser
2
2
  module Language
3
3
  module Semantics
4
- # SemanticsResult represents the result of running a {SemanticsFunction}.
4
+ # SemanticsResult represents the successful outcome of applying a
5
+ # {SemanticsFunction}.
5
6
  class SemanticsResult
6
7
  attr_reader :expression_node, :specification
7
8
 
@@ -10,9 +11,17 @@ module BELParser
10
11
  @specification = specification
11
12
  end
12
13
 
14
+ def success?
15
+ true
16
+ end
17
+
18
+ def failure?
19
+ false
20
+ end
21
+
13
22
  # @abstract Subclass and override {#msg} to provide the message.
14
23
  def msg
15
- raise NotImplementedError, "#{__method__} is not implemented."
24
+ "Successful semantic validation of #{@expression_node.type}."
16
25
  end
17
26
 
18
27
  def to_s
@@ -0,0 +1,22 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+ require_relative 'semantics_warning'
3
+
4
+ module BELParser
5
+ module Language
6
+ module Semantics
7
+ class SemanticsTypeWarning < SemanticsWarning
8
+ attr_reader :expected_type, :actual_type
9
+
10
+ def initialize(expression_node, expected_type, actual_type, spec)
11
+ super(expression_node, spec)
12
+ @expected_type = expected_type
13
+ @actual_type = actual_type
14
+ end
15
+
16
+ def to_s
17
+ %(Expected #{expected_type} type, but saw #{actual_type} type.)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -10,6 +10,14 @@ module BELParser
10
10
  super(expression_node, specification)
11
11
  end
12
12
 
13
+ def success?
14
+ false
15
+ end
16
+
17
+ def failure?
18
+ true
19
+ end
20
+
13
21
  def to_s
14
22
  "Warning: #{msg}"
15
23
  end
@@ -5,6 +5,10 @@ module BELParser
5
5
  module Specification
6
6
  EMPTY_ARRAY = [].freeze
7
7
 
8
+ def version
9
+ @version
10
+ end
11
+
8
12
  def function(short_or_long_form)
9
13
  @indexed_functions[short_or_long_form]
10
14
  end
@@ -17,6 +21,10 @@ module BELParser
17
21
  @indexed_return_types[return_type]
18
22
  end
19
23
 
24
+ def value_encoding(value_encoding)
25
+ @indexed_value_encodings[value_encoding]
26
+ end
27
+
20
28
  def functions(*short_or_long_form)
21
29
  if short_or_long_form.empty?
22
30
  @functions.freeze
@@ -33,6 +41,18 @@ module BELParser
33
41
  end
34
42
  end
35
43
 
44
+ attr_reader :causal_relationships
45
+ attr_reader :correlative_relationships
46
+ attr_reader :decreasing_relationships
47
+ attr_reader :deprecated_relationships
48
+ attr_reader :direct_relationships
49
+ attr_reader :directed_relationships
50
+ attr_reader :genomic_relationships
51
+ attr_reader :increasing_relationships
52
+ attr_reader :indirect_relationships
53
+ attr_reader :listable_relationships
54
+ attr_reader :self_relationships
55
+
36
56
  def return_types(*return_types)
37
57
  if return_types.empty?
38
58
  @return_types.freeze
@@ -41,54 +61,6 @@ module BELParser
41
61
  end
42
62
  end
43
63
 
44
- def syntax
45
- @syntax
46
- end
47
-
48
- def causal_relationships
49
- @causal_relationships || EMPTY_ARRAY
50
- end
51
-
52
- def correlative_relationships
53
- @correlative_relationships || EMPTY_ARRAY
54
- end
55
-
56
- def decreasing_relationships
57
- @decreasing_relationships || EMPTY_ARRAY
58
- end
59
-
60
- def deprecated_relationships
61
- @deprecated_relationships || EMPTY_ARRAY
62
- end
63
-
64
- def direct_relationships
65
- @direct_relationships || EMPTY_ARRAY
66
- end
67
-
68
- def directed_relationships
69
- @directed_relationships || EMPTY_ARRAY
70
- end
71
-
72
- def genomic_relationships
73
- @genomic_relationships || EMPTY_ARRAY
74
- end
75
-
76
- def increasing_relationships
77
- @increasing_relationships || EMPTY_ARRAY
78
- end
79
-
80
- def indirect_relationships
81
- @indirect_relationships || EMPTY_ARRAY
82
- end
83
-
84
- def listable_relationships
85
- @listable_relationships || EMPTY_ARRAY
86
- end
87
-
88
- def self_relationships
89
- @self_relationships || EMPTY_ARRAY
90
- end
91
-
92
64
  # @param [Array<#long,#short>] language_objects to be indexed by
93
65
  # +long+ and +short+ method return
94
66
  def index_long_short(language_objects)
@@ -116,19 +88,30 @@ module BELParser
116
88
  rel.methods(false).grep(/(.*?)\?/) do |method_name|
117
89
  if rel.method(method_name).call
118
90
  category = method_name.to_s.delete('?')
119
- category_ivar = "@#{category}_relationships".to_sym
120
- unless instance_variable_defined? category_ivar
121
- instance_variable_set(category_ivar, [])
122
- end
123
- instance_variable_get(category_ivar) << rel
91
+ add_relationship_to_category(rel, category)
124
92
  end
125
93
  end
126
94
  end
95
+
96
+ freeze_categories
97
+ nil
127
98
  end
128
99
  protected :assign_relationship_categories
129
100
 
130
- def version
131
- @version
101
+ def add_relationship_to_category(relationship, category)
102
+ category_ivar = "@#{category}_relationships".to_sym
103
+ unless instance_variable_defined? category_ivar
104
+ instance_variable_set(category_ivar, [])
105
+ end
106
+ instance_variable_get(category_ivar) << relationship
107
+ end
108
+ private :add_relationship_to_category
109
+
110
+ def freeze_categories
111
+ instance_variables.each do |ivar|
112
+ next unless ivar.to_s =~ /@[a-zA-Z0-9]+_relationships/
113
+ instance_variable_set(ivar, instance_variable_get(ivar).freeze)
114
+ end
132
115
  end
133
116
  end
134
117
  end
@@ -0,0 +1,43 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Syntax
6
+ # Undefined namespace value finds values that are missing from their
7
+ # purported namespaces.
8
+ class UndefinedNamespaceValue
9
+ include SyntaxFunction
10
+
11
+ private_class_method :new
12
+
13
+ def self.map(value_node, spec, namespaces)
14
+ return nil unless value_node.is_a?(BELParser::Parsers::AST::Value)
15
+ return nil unless value_node.namespace
16
+
17
+ unless value_node.namespace_value
18
+ value = value_node.children[0].string_literal
19
+ UndefinedNamespaceValueWarning.new(value_node, spec, value)
20
+ end
21
+ end
22
+ end
23
+
24
+ # UndefinedNamespaceValueWarning indicates a value is missing from a
25
+ # namespace.
26
+ class UndefinedNamespaceValueWarning < SyntaxWarning
27
+ # Gets the undefined value.
28
+ attr_reader :undefined_value
29
+
30
+ def initialize(prefix_node, spec, undefined_value)
31
+ super(prefix_node, spec)
32
+ @undefined_value = undefined_value
33
+ end
34
+
35
+ def msg
36
+ <<-MSG.gsub(/ {10}/, '')
37
+ Undefined namespace value "#{undefined_value}".
38
+ MSG
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -15,6 +15,14 @@ module BELParser
15
15
  raise NotImplementedError, "#{__method__} is not implemented."
16
16
  end
17
17
 
18
+ def success?
19
+ false
20
+ end
21
+
22
+ def failure?
23
+ true
24
+ end
25
+
18
26
  def to_s
19
27
  "Error: #{msg}"
20
28
  end
@@ -10,6 +10,14 @@ module BELParser
10
10
  @specification = specification
11
11
  end
12
12
 
13
+ def success?
14
+ true
15
+ end
16
+
17
+ def failure?
18
+ false
19
+ end
20
+
13
21
  # @abstract Subclass and override {#msg} to provide the message.
14
22
  def msg
15
23
  raise NotImplementedError, "#{__method__} is not implemented."
@@ -6,11 +6,16 @@ module BELParser
6
6
  # SyntaxWarning defines a {SyntaxResult} that should be regarded as an
7
7
  # warning with the expression.
8
8
  class SyntaxWarning < SyntaxResult
9
- attr_reader :target_node
10
-
11
- def initialize(expression_node, specification, target_node)
9
+ def initialize(expression_node, specification)
12
10
  super(expression_node, specification)
13
- @target_node = target_node
11
+ end
12
+
13
+ def success?
14
+ false
15
+ end
16
+
17
+ def failure?
18
+ true
14
19
  end
15
20
 
16
21
  def to_s
@@ -14,6 +14,7 @@ module BELParser
14
14
  SHORT = :a
15
15
  LONG = :abundance
16
16
  RETURN_TYPE = BELParser::Language::Version1_0::ReturnTypes::Abundance
17
+ A_ENC = Version1_0::ValueEncodings::Abundance
17
18
  DESCRIPTION = 'Denotes the abundance of an entity'.freeze
18
19
 
19
20
  def self.short
@@ -51,13 +52,11 @@ module BELParser
51
52
  argument(
52
53
  parameter(
53
54
  prefix(
54
- identifier(
55
- has_namespace,
56
- namespace_of(:*))),
55
+ has_namespace,
56
+ namespace_of(:*)),
57
57
  value(
58
- value_type(
59
- has_encoding,
60
- encoding_of(:Abundance))))))
58
+ has_encoding,
59
+ encoding_of(A_ENC)))))
61
60
  end
62
61
  private_constant :AST
63
62
 
@@ -14,6 +14,7 @@ module BELParser
14
14
  SHORT = :bp
15
15
  LONG = :biologicalProcess
16
16
  RETURN_TYPE = BELParser::Language::Version1_0::ReturnTypes::BiologicalProcess
17
+ B_ENC = Version1_0::ValueEncodings::BiologicalProcess
17
18
  DESCRIPTION = 'Denotes a process or population of events'.freeze
18
19
 
19
20
  def self.short
@@ -51,13 +52,11 @@ module BELParser
51
52
  argument(
52
53
  parameter(
53
54
  prefix(
54
- identifier(
55
- has_namespace,
56
- namespace_of(:*))),
55
+ has_namespace,
56
+ namespace_of(:*)),
57
57
  value(
58
- value_type(
59
- has_encoding,
60
- encoding_of(:BiologicalProcess))))))
58
+ has_encoding,
59
+ encoding_of(B_ENC)))))
61
60
  end
62
61
  private_constant :AST
63
62
 
@@ -14,6 +14,7 @@ module BELParser
14
14
  SHORT = :complex
15
15
  LONG = :complexAbundance
16
16
  RETURN_TYPE = BELParser::Language::Version1_0::ReturnTypes::ComplexAbundance
17
+ C_ENC = Version1_0::ValueEncodings::ComplexAbundance
17
18
  DESCRIPTION = 'Denotes the abundance of a molecular
18
19
  omplex'.freeze
19
20
 
@@ -52,17 +53,15 @@ module BELParser
52
53
  argument(
53
54
  parameter(
54
55
  prefix(
55
- identifier(
56
- has_namespace,
57
- namespace_of(:*))),
56
+ has_namespace,
57
+ namespace_of(:*)),
58
58
  value(
59
- value_type(
60
- has_encoding,
61
- encoding_of(:Abundance))))))
59
+ has_encoding,
60
+ encoding_of(C_ENC)))))
62
61
  end
63
62
  private_constant :AST
64
63
 
65
- STRING_FORM = 'complexAbundance(E:abundance)complexAbundance'.freeze
64
+ STRING_FORM = 'complexAbundance(E:complexAbundance)complexAbundance'.freeze
66
65
  private_constant :STRING_FORM
67
66
 
68
67
  def self.semantic_ast