bel_parser 1.0.8 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.gemspec +12 -2
  3. data/VERSION +1 -1
  4. data/bin/bel2_compatibility +12 -9
  5. data/bin/bel2_upgrade +18 -6
  6. data/bin/bel2_validator +6 -3
  7. data/bin/bel_script_reader +1 -0
  8. data/lib/bel_parser/completion.rb +984 -0
  9. data/lib/bel_parser/language/apply_namespace_encoding.rb +14 -3
  10. data/lib/bel_parser/language/expression_validator.rb +1 -2
  11. data/lib/bel_parser/language/function.rb +4 -0
  12. data/lib/bel_parser/language/relationship.rb +4 -0
  13. data/lib/bel_parser/language/semantics/function_deprecation.rb +1 -0
  14. data/lib/bel_parser/language/semantics/list_function_subject.rb +2 -0
  15. data/lib/bel_parser/language/semantics/multiple_subject_object.rb +4 -1
  16. data/lib/bel_parser/language/semantics/nested_statement_without_object.rb +43 -0
  17. data/lib/bel_parser/language/semantics/non_object_list.rb +3 -0
  18. data/lib/bel_parser/language/semantics/relationship_not_listable.rb +2 -0
  19. data/lib/bel_parser/language/semantics/signature_mapping.rb +2 -0
  20. data/lib/bel_parser/language/semantics_ast.rb +0 -7
  21. data/lib/bel_parser/language/syntax/invalid_function.rb +6 -1
  22. data/lib/bel_parser/language/syntax/invalid_relationship.rb +1 -0
  23. data/lib/bel_parser/language/version1_0/relationships/acts_in.rb +9 -9
  24. data/lib/bel_parser/language/version1_0/relationships/analogous.rb +6 -4
  25. data/lib/bel_parser/language/version1_0/relationships/association.rb +8 -7
  26. data/lib/bel_parser/language/version1_0/relationships/biomarker_for.rb +6 -5
  27. data/lib/bel_parser/language/version1_0/relationships/causes_no_change.rb +8 -7
  28. data/lib/bel_parser/language/version1_0/relationships/decreases.rb +13 -12
  29. data/lib/bel_parser/language/version1_0/relationships/directly_decreases.rb +8 -6
  30. data/lib/bel_parser/language/version1_0/relationships/directly_increases.rb +8 -6
  31. data/lib/bel_parser/language/version1_0/relationships/has_component.rb +14 -14
  32. data/lib/bel_parser/language/version1_0/relationships/has_components.rb +12 -11
  33. data/lib/bel_parser/language/version1_0/relationships/has_member.rb +10 -8
  34. data/lib/bel_parser/language/version1_0/relationships/has_members.rb +12 -11
  35. data/lib/bel_parser/language/version1_0/relationships/has_modification.rb +9 -7
  36. data/lib/bel_parser/language/version1_0/relationships/has_product.rb +10 -8
  37. data/lib/bel_parser/language/version1_0/relationships/has_variant.rb +9 -7
  38. data/lib/bel_parser/language/version1_0/relationships/includes.rb +11 -10
  39. data/lib/bel_parser/language/version1_0/relationships/increases.rb +12 -13
  40. data/lib/bel_parser/language/version1_0/relationships/is_a.rb +10 -8
  41. data/lib/bel_parser/language/version1_0/relationships/negative_correlation.rb +9 -7
  42. data/lib/bel_parser/language/version1_0/relationships/orthologous.rb +9 -8
  43. data/lib/bel_parser/language/version1_0/relationships/positive_correlation.rb +8 -5
  44. data/lib/bel_parser/language/version1_0/relationships/prognostic_biomarker_for.rb +8 -6
  45. data/lib/bel_parser/language/version1_0/relationships/rate_limiting_step_of.rb +10 -9
  46. data/lib/bel_parser/language/version1_0/relationships/reactant_in.rb +10 -8
  47. data/lib/bel_parser/language/version1_0/relationships/sub_process_of.rb +13 -12
  48. data/lib/bel_parser/language/version1_0/relationships/transcribed_to.rb +8 -7
  49. data/lib/bel_parser/language/version1_0/relationships/translated_to.rb +9 -7
  50. data/lib/bel_parser/language/version1_0/relationships/translocates.rb +10 -9
  51. data/lib/bel_parser/language/version2_0/functions/protein_modification.rb +1 -2
  52. data/lib/bel_parser/language/version2_0/functions/translocation.rb +1 -2
  53. data/lib/bel_parser/language/version2_0/functions/variant.rb +1 -2
  54. data/lib/bel_parser/language/version2_0/relationships/acts_in.rb +10 -9
  55. data/lib/bel_parser/language/version2_0/relationships/biomarker_for.rb +7 -5
  56. data/lib/bel_parser/language/version2_0/relationships/causes_no_change.rb +9 -7
  57. data/lib/bel_parser/language/version2_0/relationships/decreases.rb +13 -12
  58. data/lib/bel_parser/language/version2_0/relationships/directly_decreases.rb +8 -6
  59. data/lib/bel_parser/language/version2_0/relationships/directly_increases.rb +8 -6
  60. data/lib/bel_parser/language/version2_0/relationships/has_component.rb +15 -14
  61. data/lib/bel_parser/language/version2_0/relationships/has_components.rb +12 -11
  62. data/lib/bel_parser/language/version2_0/relationships/has_member.rb +9 -8
  63. data/lib/bel_parser/language/version2_0/relationships/has_members.rb +12 -11
  64. data/lib/bel_parser/language/version2_0/relationships/has_modification.rb +9 -7
  65. data/lib/bel_parser/language/version2_0/relationships/has_product.rb +10 -8
  66. data/lib/bel_parser/language/version2_0/relationships/has_variant.rb +9 -7
  67. data/lib/bel_parser/language/version2_0/relationships/includes.rb +11 -10
  68. data/lib/bel_parser/language/version2_0/relationships/increases.rb +13 -12
  69. data/lib/bel_parser/language/version2_0/relationships/is_a.rb +10 -8
  70. data/lib/bel_parser/language/version2_0/relationships/negative_correlation.rb +9 -7
  71. data/lib/bel_parser/language/version2_0/relationships/orthologous.rb +10 -8
  72. data/lib/bel_parser/language/version2_0/relationships/positive_correlation.rb +7 -5
  73. data/lib/bel_parser/language/version2_0/relationships/prognostic_biomarker_for.rb +8 -6
  74. data/lib/bel_parser/language/version2_0/relationships/rate_limiting_step_of.rb +10 -9
  75. data/lib/bel_parser/language/version2_0/relationships/reactant_in.rb +10 -8
  76. data/lib/bel_parser/language/version2_0/relationships/regulates.rb +9 -8
  77. data/lib/bel_parser/language/version2_0/relationships/sub_process_of.rb +13 -12
  78. data/lib/bel_parser/language/version2_0/relationships/transcribed_to.rb +8 -7
  79. data/lib/bel_parser/language/version2_0/relationships/translated_to.rb +9 -7
  80. data/lib/bel_parser/language/version2_0/relationships/translocates.rb +10 -9
  81. data/lib/bel_parser/mixin/levenshtein.rb +20 -0
  82. data/lib/bel_parser/parsers/ast/node.rb +49 -2
  83. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +156 -156
  84. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +60 -60
  85. data/lib/bel_parser/parsers/bel_script/set.rb +200 -200
  86. data/lib/bel_parser/parsers/bel_script/set_document.rb +188 -188
  87. data/lib/bel_parser/parsers/bel_script/unset.rb +14 -14
  88. data/lib/bel_parser/parsers/common/common.rl +1 -0
  89. data/lib/bel_parser/parsers/common/function.rb +8 -8
  90. data/lib/bel_parser/parsers/common/function.rl +6 -6
  91. data/lib/bel_parser/parsers/common/identifier.rb +3 -3
  92. data/lib/bel_parser/parsers/common/identifier.rl +4 -4
  93. data/lib/bel_parser/parsers/common/list.rb +78 -78
  94. data/lib/bel_parser/parsers/common/multi_identifier.rb +275 -0
  95. data/lib/bel_parser/parsers/common/multi_identifier.rl +141 -0
  96. data/lib/bel_parser/parsers/common/string.rb +6 -6
  97. data/lib/bel_parser/parsers/common/string.rl +4 -4
  98. data/lib/bel_parser/parsers/common.rb +1 -0
  99. data/lib/bel_parser/parsers/expression/nested_statement.rb +30180 -29055
  100. data/lib/bel_parser/parsers/expression/observed_term.rb +1456 -1099
  101. data/lib/bel_parser/parsers/expression/parameter.rb +192 -111
  102. data/lib/bel_parser/parsers/expression/parameter.rl +6 -3
  103. data/lib/bel_parser/parsers/expression/relationship.rb +43 -19
  104. data/lib/bel_parser/parsers/expression/relationship.rl +1 -0
  105. data/lib/bel_parser/parsers/expression/simple_statement.rb +17805 -17093
  106. data/lib/bel_parser/parsers/expression/statement_autocomplete.rb +1035 -0
  107. data/lib/bel_parser/parsers/expression/statement_autocomplete.rl +736 -0
  108. data/lib/bel_parser/parsers/expression/term.rb +960 -705
  109. data/lib/bel_parser/parsers/serializer.rb +8 -4
  110. data/lib/bel_parser/version.rb +33 -0
  111. data/lib/bel_parser.rb +3 -0
  112. metadata +25 -3
@@ -69,11 +69,11 @@ module BELParser
69
69
 
70
70
  def on_value(value_node)
71
71
  return value_node unless @namespace
72
+
72
73
  value_node.prefix = @prefix
73
74
  value_node.namespace = @namespace
74
-
75
- value_literal = value_node.children[0].string_literal
76
- value = @namespace[value_literal]
75
+ string_literal = value_literal(value_node.children[0])
76
+ value = @namespace[string_literal]
77
77
 
78
78
  if value
79
79
  value_node.encoding =
@@ -86,6 +86,17 @@ module BELParser
86
86
  end
87
87
  value_node
88
88
  end
89
+
90
+ private
91
+
92
+ def value_literal(node)
93
+ case node.type
94
+ when :identifier
95
+ node.string_literal
96
+ when :string
97
+ node.string_value
98
+ end
99
+ end
89
100
  end
90
101
  end
91
102
  end
@@ -123,7 +123,7 @@ module BELParser
123
123
  end
124
124
 
125
125
  def semantics_errors_s
126
- return nil if @semantics_results.empty?
126
+ return nil if @semantics_results.nil? || @semantics_results.empty?
127
127
 
128
128
  report = "Semantic errors\n"
129
129
  @semantics_results.each { |res| report += "#{res}\n" }
@@ -406,7 +406,6 @@ module BELParser
406
406
  end
407
407
 
408
408
  def to_s
409
- report = @object_result.to_s
410
409
  <<-HEADER.gsub(/^ {12}/, '')
411
410
  Syntax: #{valid_syntax? ? 'Valid' : 'Invalid'}
412
411
  Semantics: #{valid_semantics? ? 'Valid' : 'Invalid'}
@@ -60,6 +60,10 @@ module BELParser
60
60
  })
61
61
  end
62
62
 
63
+ def =~(regexp)
64
+ short =~ regexp || long =~ regexp
65
+ end
66
+
63
67
  private
64
68
 
65
69
  def _form_value(form = :short)
@@ -93,6 +93,10 @@ module BELParser
93
93
  })
94
94
  end
95
95
 
96
+ def =~(regexp)
97
+ short =~ regexp || long =~ regexp
98
+ end
99
+
96
100
  private
97
101
 
98
102
  def _form_value(form = :short)
@@ -14,6 +14,7 @@ module BELParser
14
14
 
15
15
  def self.map(node, spec, _namespaces)
16
16
  return nil unless node.is_a?(BELParser::Parsers::AST::Function)
17
+ return nil unless node.identifier
17
18
 
18
19
  function_name = node.identifier.string_literal
19
20
  func = spec.function(function_name.to_sym)
@@ -19,6 +19,8 @@ module BELParser
19
19
  list_func = spec.function(:list)
20
20
  return nil unless list_func
21
21
 
22
+ return nil unless node.term.function
23
+ return nil unless node.term.function.identifier
22
24
  func_name = node.term.function.identifier.string_literal
23
25
  sub_func = spec.function(func_name.to_sym)
24
26
  ListFunctionSubjectWarning.new(node, spec) if sub_func == list_func
@@ -13,6 +13,7 @@ module BELParser
13
13
 
14
14
  def self.map(stmt_node, spec, _namespaces)
15
15
  return nil unless stmt_node.is_a?(BELParser::Parsers::AST::Statement)
16
+ return nil unless stmt_node.relationship?
16
17
  return nil if stmt_node.relationship.string_literal.nil?
17
18
  rel = spec.relationship(stmt_node.relationship.string_literal.to_sym)
18
19
  return nil unless rel
@@ -20,6 +21,7 @@ module BELParser
20
21
 
21
22
  list_func = spec.function(:list)
22
23
  return nil unless list_func
24
+ return nil unless stmt_node.object?
23
25
  return nil unless stmt_node.object.term?
24
26
 
25
27
  map_subject_object(stmt_node, rel, spec)
@@ -29,7 +31,8 @@ module BELParser
29
31
  sub_term = stmt_node.subject.term
30
32
  list_term = stmt_node.object.child
31
33
 
32
- if list_term.arguments.any? { |arg| sub_term == arg.child }
34
+ return nil if list_term.arguments.empty?
35
+ if list_term.arguments.any? { |arg| arg.child && sub_term == arg.child }
33
36
  MultipleSubjectObjectWarning.new(stmt_node, spec, rel)
34
37
  end
35
38
  end
@@ -0,0 +1,43 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Semantics
6
+ # NestedStatementWithoutObject implements a {SemanticsFunction} that maps a
7
+ # nested {BELParser::Parsers::AST::Statement} to {SemanticsWarning} if
8
+ # the nested statement does not have an object.
9
+ class NestedStatementWithoutObject
10
+ include SemanticsFunction
11
+
12
+ private_class_method :new
13
+
14
+ def self.map(node, spec, _namespaces)
15
+ return nil unless node.is_a?(BELParser::Parsers::AST::Statement)
16
+ return nil unless node.object? && node.object.statement?
17
+
18
+ nested = node.object.child
19
+
20
+ if nested.object?
21
+ NestedStatementWithoutObjectWarning.new(node, spec)
22
+ end
23
+ end
24
+ end
25
+
26
+ # Represents a {SemanticsWarning} when a nested
27
+ # {BELParser::Parsers::AST::Statement} does not have an object.
28
+ class NestedStatementWithoutObjectWarning < SemanticsWarning
29
+ attr_reader :non_causal_relationship
30
+
31
+ def initialize(stmt_node, spec)
32
+ super(stmt_node, spec)
33
+ end
34
+
35
+ def to_s
36
+ <<-MSG.gsub(/ {12}/, '')
37
+ Nested statement does not have an object.
38
+ MSG
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -13,6 +13,8 @@ module BELParser
13
13
 
14
14
  def self.map(stmt_node, spec, _namespaces)
15
15
  return nil unless stmt_node.is_a?(BELParser::Parsers::AST::Statement)
16
+ return nil unless stmt_node.relationship?
17
+ return nil unless stmt_node.object?
16
18
  return nil if stmt_node.relationship.string_literal.nil?
17
19
 
18
20
  list_func = spec.function(:list)
@@ -31,6 +33,7 @@ module BELParser
31
33
  spec,
32
34
  rel) unless obj_node.term?
33
35
 
36
+ return nil unless obj_node.child.function
34
37
  obj_func = obj_node.child.function.identifier.string_literal
35
38
  NonObjectListWarning.new(
36
39
  obj_node,
@@ -14,6 +14,7 @@ module BELParser
14
14
  def self.map(node, spec, _namespaces)
15
15
  return nil unless node.is_a?(BELParser::Parsers::AST::Statement)
16
16
  return nil unless node.relationship?
17
+ return nil unless node.object?
17
18
  return nil unless node.object.term?
18
19
 
19
20
  map_statement(node, spec)
@@ -22,6 +23,7 @@ module BELParser
22
23
  def self.map_statement(stmt_node, spec)
23
24
  list_func = spec.function(:list)
24
25
  return nil unless list_func
26
+ return nil unless stmt_node.object.child.function
25
27
 
26
28
  obj_func = stmt_node.object.child.function.identifier.string_literal
27
29
  return nil unless spec.function(obj_func.to_sym) == list_func
@@ -19,6 +19,8 @@ module BELParser
19
19
  # includes both successful and failed signature matches.
20
20
  def self.map(term_node, spec, _namespaces)
21
21
  return nil unless term_node.is_a?(BELParser::Parsers::AST::Term)
22
+ return nil unless term_node.function
23
+ return nil unless term_node.function.identifier
22
24
 
23
25
  function_name = term_node.function.identifier.string_literal
24
26
  function = spec.function(function_name.to_sym)
@@ -69,18 +69,11 @@ module BELParser
69
69
 
70
70
  builder = _builder_class.new
71
71
  builder.instance_eval(&block)
72
- builder.result
73
72
  end
74
73
 
75
74
  def self._builder_class
76
75
  Class.new do
77
76
  include Builder
78
-
79
- attr_reader :result
80
-
81
- def term(function, *arguments, **properties)
82
- @result = super
83
- end
84
77
  end
85
78
  end
86
79
  private_class_method :_builder_class
@@ -13,7 +13,12 @@ module BELParser
13
13
  def self.map(func_node, spec, _namespaces)
14
14
  return nil unless func_node.is_a?(BELParser::Parsers::AST::Function)
15
15
 
16
- function_name = func_node.identifier.string_literal
16
+ function_name =
17
+ if func_node.identifier
18
+ func_node.identifier.string_literal
19
+ else
20
+ ''
21
+ end
17
22
  unless spec.function(function_name.to_sym)
18
23
  InvalidFunctionSyntaxError.new(func_node, spec, function_name)
19
24
  end
@@ -12,6 +12,7 @@ module BELParser
12
12
 
13
13
  def self.map(stmt_node, spec, _namespaces)
14
14
  return nil unless stmt_node.is_a?(BELParser::Parsers::AST::Statement)
15
+ return nil unless stmt_node.relationship?
15
16
 
16
17
  rel_name = stmt_node.relationship.string_literal
17
18
  return nil if rel_name.nil?
@@ -17,15 +17,15 @@ module BELParser
17
17
 
18
18
  SHORT = :actsIn
19
19
  LONG = :actsIn
20
- DESCRIPTION = ' +A actsIn f(A)+ - This relationship links an
21
- bundance term to the activity term for the same
22
- bundance. This relationship is direct because
23
- t is a _self_ relationship, the abundance acts
24
- n its own activity. For protein abundance p(A)
25
- nd its molecular activity kin(p(A), +p(A) actsIn
26
- in(p(A))+. This relationship is introduced by the
27
- EL Compiler and may not be used by statements in
28
- EL documents.'.freeze
20
+ DESCRIPTION = <<-DOC
21
+ ActsIn: +A actsIn f(A)+ - This relationship links
22
+ an abundance term to the activity term for the same
23
+ abundance. This relationship is direct because it is a _self_
24
+ relationship, the abundance acts in its own activity. For
25
+ protein abundance p(A) and its molecular activity kin(p(A),
26
+ +p(A) actsIn kin(p(A))+. This relationship is introduced by the
27
+ BEL Compiler and may not be used by statements in BEL documents.
28
+ DOC
29
29
 
30
30
  def self.short
31
31
  SHORT
@@ -14,10 +14,12 @@ module BELParser
14
14
 
15
15
  SHORT = :analogous
16
16
  LONG = :analogous
17
- DESCRIPTION = ' +A analogous B+ - For terms A and B, +A
18
- nalogousTo B+ indicates that A and B represent
19
- bundances or molecular activities in different
20
- pecies which function in a similar manner.'.freeze
17
+ DESCRIPTION = <<-DOC
18
+ Analogous: +A analogous B+ - For terms A and B, +A analogousTo
19
+ B+ indicates that A and B represent abundances or molecular
20
+ activities in different species which function in a similar
21
+ manner.
22
+ DOC
21
23
 
22
24
  def self.short
23
25
  SHORT
@@ -16,13 +16,14 @@ module BELParser
16
16
 
17
17
  SHORT = :'--'
18
18
  LONG = :association
19
- DESCRIPTION = ' +A -- B+ - For terms A and B, +A association B+
20
- r +A -- B+ indicates that A and B are associated
21
- n an unspecified manner. This relationship
22
- s used when not enough information about the
23
- ssociation is available to describe it using
24
- ore specific relationships, like increases or
25
- ositiveCorrelation.'.freeze
19
+ DESCRIPTION = <<-DOC
20
+ Association: +A -- B+ - For terms A and B, +A association
21
+ B+ or +A -- B+ indicates that A and B are associated in an
22
+ unspecified manner. This relationship is used when not enough
23
+ information about the association is available to describe
24
+ it using more specific relationships, like increases or
25
+ positiveCorrelation.
26
+ DOC
26
27
 
27
28
  def self.short
28
29
  SHORT
@@ -14,11 +14,12 @@ module BELParser
14
14
 
15
15
  SHORT = :biomarkerFor
16
16
  LONG = :biomarkerFor
17
- DESCRIPTION = ' +A biomarkerFor P+ - For term A and process
18
- erm P, +A biomarkerFor P+ indicates that changes
19
- n or detection of A is used in some way to be
20
- biomarker for pathology or biological process
21
- .'.freeze
17
+ DESCRIPTION = <<-DOC
18
+ BiomarkerFor: +A biomarkerFor P+ - For term A and process term
19
+ P, +A biomarkerFor P+ indicates that changes in or detection
20
+ of A is used in some way to be a biomarker for pathology or
21
+ biological process P.
22
+ DOC
22
23
 
23
24
  def self.short
24
25
  SHORT
@@ -16,13 +16,14 @@ module BELParser
16
16
 
17
17
  SHORT = :causesNoChange
18
18
  LONG = :causesNoChange
19
- DESCRIPTION = ' +A causesNoChange B+ - For terms A and B, +A
20
- ausesNoChange B+ indicates that B was observed not
21
- o change in response to changes in A. Statements
22
- sing this relationship correspond to cases where
23
- xplicit measurement of B demonstrates lack of
24
- ignificant change, not for cases where the state
25
- f B is unknown.'.freeze
19
+ DESCRIPTION = <<-DOC
20
+ CausesNoChange: +A causesNoChange B+ - For terms A and B,
21
+ +A causesNoChange B+ indicates that B was observed not to
22
+ change in response to changes in A. Statements using this
23
+ relationship correspond to cases where explicit measurement
24
+ of B demonstrates lack of significant change, not for cases
25
+ where the state of B is unknown.
26
+ DOC
26
27
 
27
28
  def self.short
28
29
  SHORT
@@ -20,18 +20,19 @@ module BELParser
20
20
 
21
21
  SHORT = :'-|'
22
22
  LONG = :decreases
23
- DESCRIPTION = ' +A -| B+ - For terms A and B, +A decreases B
24
- r A -| B+ indicates that increases in A have been
25
- bserved to cause decreases in B. +A decreases
26
- + also represents cases where decreases in A
27
- ave been observed to cause increases in B, for
28
- xample, in recording the results of gene deletion
29
- r other inhibition experiments. A is a BEL Term
30
- nd B is either a BEL Term or a BEL Statement. The
31
- elationship does not indicate that the changes
32
- n A are either necessary for changes in B, nor
33
- oes it indicate that changes in A are sufficient
34
- o cause changes in B.'.freeze
23
+
24
+ DESCRIPTION = <<-DOC
25
+ Decreases: +A -| B+ - For terms A and B, +A decreases B or
26
+ A -| B+ indicates that increases in A have been observed to
27
+ cause decreases in B. +A decreases B+ also represents cases
28
+ where decreases in A have been observed to cause increases in B,
29
+ for example, in recording the results of gene deletion or other
30
+ inhibition experiments. A is a BEL Term and B is either a BEL
31
+ Term or a BEL Statement. The relationship does not indicate
32
+ that the changes in A are either necessary for changes in B,
33
+ nor does it indicate that changes in A are sufficient to cause
34
+ changes in B.
35
+ DOC
35
36
 
36
37
  def self.short
37
38
  SHORT
@@ -15,12 +15,14 @@ module BELParser
15
15
 
16
16
  SHORT = :'=|'
17
17
  LONG = :directlyDecreases
18
- DESCRIPTION = ' +A =| B+ - For terms A and B,
19
- A directlyDecreases B or A =| B+ indicates A
20
- ecreases B and that the mechanism of the causal
21
- elationship is based on physical interaction
22
- f entities related to A and B. This is a direct
23
- ersion of the decreases relationship.'.freeze
18
+
19
+ DESCRIPTION = <<-DOC
20
+ DirectlyDecreases: +A =| B+ - For terms A and B, +A
21
+ directlyDecreases B or A =| B+ indicates A decreases B and that
22
+ the mechanism of the causal relationship is based on physical
23
+ interaction of entities related to A and B. This is a direct
24
+ version of the decreases relationship.
25
+ DOC
24
26
 
25
27
  def self.short
26
28
  SHORT
@@ -15,12 +15,14 @@ module BELParser
15
15
 
16
16
  SHORT = :'=>'
17
17
  LONG = :directlyIncreases
18
- DESCRIPTION = ' +A => B+ - For terms A and B,
19
- A directlyIncreases B or A => B+ indicate A
20
- ncreases B and that the mechanism of the causal
21
- elationship is based on physical interaction
22
- f entities related to A and B. This is a direct
23
- ersion of the increases relationship.'.freeze
18
+
19
+ DESCRIPTION = <<-DOC
20
+ DirectlyIncreases: +A => B+ - For terms A and B, +A
21
+ directlyIncreases B or A => B+ indicate A increases B and that
22
+ the mechanism of the causal relationship is based on physical
23
+ interaction of entities related to A and B. This is a direct
24
+ version of the increases relationship.
25
+ DOC
24
26
 
25
27
  def self.short
26
28
  SHORT
@@ -21,20 +21,20 @@ module BELParser
21
21
 
22
22
  SHORT = :hasComponent
23
23
  LONG = :hasComponent
24
- DESCRIPTION = ' +A hasComponent A1+ - For complexAbundance
25
- erm A and abundance term B, +A hasComponent B+
26
- esignates B as a component of A, that complexes
27
- hat are instances of A have instances of B as
28
- ossible components. Note that, the stoichiometry
29
- f A is not described, nor is it stated that B
30
- s a required component. The use of hasComponent
31
- elationships is complementary to the use of
32
- unctionally composed complexes and is intended to
33
- nable the assignment of components to complexes
34
- esignated by names in external vocabularies. The
35
- ssignment of components can potentially enable
36
- he reconciliation of equivalent complexes at
37
- nowledge assembly time.'.freeze
24
+
25
+ DESCRIPTION = <<-DOC
26
+ HasComponent: +A hasComponent A1+ - For complexAbundance
27
+ term A and abundance term B, +A hasComponent B+ designates
28
+ B as a component of A, that complexes that are instances of
29
+ A have instances of B as possible components. Note that, the
30
+ stoichiometry of A is not described, nor is it stated that B is
31
+ a required component. The use of hasComponent relationships is
32
+ complementary to the use of functionally composed complexes and
33
+ is intended to enable the assignment of components to complexes
34
+ designated by names in external vocabularies. The assignment
35
+ of components can potentially enable the reconciliation of
36
+ equivalent complexes at knowledge assembly time.
37
+ DOC
38
38
 
39
39
  def self.short
40
40
  SHORT
@@ -19,17 +19,18 @@ module BELParser
19
19
 
20
20
  SHORT = :hasComponents
21
21
  LONG = :hasComponents
22
- DESCRIPTION = ' +A hasComponents (B, C, D)+ - The hasComponents
23
- elationship is a special form which enables
24
- he assignment of multiple complex components
25
- n a single statement where the object of the
26
- tatement is a set of abundance terms. A statement
27
- sing hasComponents is exactly equivalent to
28
- ultiple hasComponent statements. A term may not
29
- ppear in both the subject and object of the same
30
- asComponents statement. For the abundance terms A,
31
- , C and D, +A hasComponents B, C, D+ indicates
32
- hat A has components B, C and D.'.freeze
22
+
23
+ DESCRIPTION = <<-DOC
24
+ HasComponents: +A hasComponents (B, C, D)+ - The hasComponents
25
+ relationship is a special form which enables the assignment
26
+ of multiple complex components in a single statement where
27
+ the object of the statement is a set of abundance terms. A
28
+ statement using hasComponents is exactly equivalent to multiple
29
+ hasComponent statements. A term may not appear in both the
30
+ subject and object of the same hasComponents statement. For
31
+ the abundance terms A, B, C and D, +A hasComponents B, C, D+
32
+ indicates that A has components B, C and D.
33
+ DOC
33
34
 
34
35
  def self.short
35
36
  SHORT
@@ -17,14 +17,16 @@ module BELParser
17
17
 
18
18
  SHORT = :hasMember
19
19
  LONG = :hasMember
20
- DESCRIPTION = ' +A hasMember A1+ - For term abundances A and B,
21
- A hasMember B+ designates B as a member class of
22
- . A member class is a distinguished sub-class. A is
23
- efined as a group by all of the members assigned to
24
- t. The member classes may or may not be overlapping
25
- nd may or may not entirely cover all instances
26
- f A. A term may not appear in both the subject
27
- nd object of the same hasMember statement.'.freeze
20
+
21
+ DESCRIPTION = <<-DOC
22
+ HasMember: +A hasMember A1+ - For term abundances A and B,
23
+ +A hasMember B+ designates B as a member class of A. A member
24
+ class is a distinguished sub-class. A is defined as a group
25
+ by all of the members assigned to it. The member classes may
26
+ or may not be overlapping and may or may not entirely cover
27
+ all instances of A. A term may not appear in both the subject
28
+ and object of the same hasMember statement.
29
+ DOC
28
30
 
29
31
  def self.short
30
32
  SHORT
@@ -19,18 +19,19 @@ module BELParser
19
19
 
20
20
  SHORT = :hasMembers
21
21
  LONG = :hasMembers
22
- DESCRIPTION = ' +A hasMembers (B, C, D)+ - The hasMembers
23
- elationship is a special form which enables the
24
- ssignment of multiple member classes in a single
25
- tatement where the object of the statement is a set
26
- f abundance terms. A statement using hasMembers
27
- s exactly equivalent to multiple hasMember
28
- tatements. A term may not appear in both the
29
- ubject and object of a of the same hasMembers
30
- tatement. For the abundance terms A, B, C and D,
31
- A hasMembers B, C, D+ indicates that A is defined
32
- y its member abundance classes B, C and D.'.freeze
33
22
 
23
+ DESCRIPTION = <<-DOC
24
+ HasMembers: +A hasMembers (B, C, D)+ - The hasMembers
25
+ relationship is a special form which enables the assignment of
26
+ multiple member classes in a single statement where the object
27
+ of the statement is a set of abundance terms. A statement
28
+ using hasMembers is exactly equivalent to multiple hasMember
29
+ statements. A term may not appear in both the subject and
30
+ object of a of the same hasMembers statement. For the abundance
31
+ terms A, B, C and D, +A hasMembers B, C, D+ indicates that A
32
+ is defined by its member abundance classes B, C and D.
33
+ DOC
34
+
34
35
  def self.short
35
36
  SHORT
36
37
  end
@@ -16,13 +16,15 @@ module BELParser
16
16
 
17
17
  SHORT = :hasModification
18
18
  LONG = :hasModification
19
- DESCRIPTION = ' +p(A) hasModification p(A, pmod(P, S, 473))+ -
20
- his relationship links abundance terms modified by
21
- he +pmod()+ function to the unmodified abundance
22
- erm. This is a direct relationship because it
23
- s a _self_ relationship. This relationship is
24
- ntroduced by the BEL Compiler and may not be used
25
- y statements in BEL documents.'.freeze
19
+
20
+ DESCRIPTION = <<-DOC
21
+ HasModification: +p(A) hasModification p(A, pmod(P, S, 473))+
22
+ - This relationship links abundance terms modified by the
23
+ +pmod()+ function to the unmodified abundance term. This is a
24
+ direct relationship because it is a _self_ relationship. This
25
+ relationship is introduced by the BEL Compiler and may not be
26
+ used by statements in BEL documents.
27
+ DOC
26
28
 
27
29
  def self.short
28
30
  SHORT
@@ -17,14 +17,16 @@ module BELParser
17
17
 
18
18
  SHORT = :hasProduct
19
19
  LONG = :hasProduct
20
- DESCRIPTION = ' +reaction(reactants(A), products(B)) hasProduct
21
- + - This relationship links abundance terms
22
- rom the +products(<list>)+ in a reaction to the
23
- eaction. This is a direct relationship because it
24
- s a _self_ relationship. Products are produced
25
- irectly by a reaction. This relationship is
26
- ntroduced by the BEL Compiler and may not be used
27
- y statements in BEL documents.'.freeze
20
+
21
+ DESCRIPTION = <<-DOC
22
+ HasProduct: +reaction(reactants(A), products(B))
23
+ hasProduct B+ - This relationship links abundance
24
+ terms from the +products(<list>)+ in a reaction to the
25
+ reaction. This is a direct relationship because it is a _self_
26
+ relationship. Products are produced directly by a reaction. This
27
+ relationship is introduced by the BEL Compiler and may not be
28
+ used by statements in BEL documents.
29
+ DOC
28
30
 
29
31
  def self.short
30
32
  SHORT