bel_parser 1.0.0.alpha.27-java

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.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/.gemspec-java +32 -0
  3. data/CHANGELOG.md +10 -0
  4. data/LICENSE +191 -0
  5. data/README.md +20 -0
  6. data/VERSION +1 -0
  7. data/bin/bel2_validator +62 -0
  8. data/bin/bel_script_reader +132 -0
  9. data/lib/bel/translator/plugins/bel_script.rb +38 -0
  10. data/lib/bel/translator/plugins/bel_script/bel_citation_serialization.rb +125 -0
  11. data/lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb +109 -0
  12. data/lib/bel/translator/plugins/bel_script/bel_top_down_serialization.rb +100 -0
  13. data/lib/bel/translator/plugins/bel_script/nanopub_serialization.rb +79 -0
  14. data/lib/bel/translator/plugins/bel_script/reader.rb +39 -0
  15. data/lib/bel/translator/plugins/bel_script/translator.rb +37 -0
  16. data/lib/bel/translator/plugins/bel_script/writer.rb +180 -0
  17. data/lib/bel_parser.rb +23 -0
  18. data/lib/bel_parser/ast_filter.rb +44 -0
  19. data/lib/bel_parser/ast_generator.rb +83 -0
  20. data/lib/bel_parser/expression.rb +3 -0
  21. data/lib/bel_parser/expression/filter.rb +31 -0
  22. data/lib/bel_parser/expression/parser.rb +72 -0
  23. data/lib/bel_parser/expression/validator.rb +79 -0
  24. data/lib/bel_parser/language.rb +114 -0
  25. data/lib/bel_parser/language/amino_acid.rb +68 -0
  26. data/lib/bel_parser/language/apply_namespace_encoding.rb +98 -0
  27. data/lib/bel_parser/language/base_specification.rb +82 -0
  28. data/lib/bel_parser/language/covalent_protein_modification.rb +56 -0
  29. data/lib/bel_parser/language/expression_validator.rb +68 -0
  30. data/lib/bel_parser/language/function.rb +67 -0
  31. data/lib/bel_parser/language/relationship.rb +102 -0
  32. data/lib/bel_parser/language/semantics.rb +40 -0
  33. data/lib/bel_parser/language/semantics/deeply_nested_statement.rb +65 -0
  34. data/lib/bel_parser/language/semantics/function_deprecation.rb +43 -0
  35. data/lib/bel_parser/language/semantics/list_function_subject.rb +45 -0
  36. data/lib/bel_parser/language/semantics/multiple_subject_object.rb +55 -0
  37. data/lib/bel_parser/language/semantics/non_causal_nested_statement.rb +50 -0
  38. data/lib/bel_parser/language/semantics/non_object_list.rb +56 -0
  39. data/lib/bel_parser/language/semantics/relationship_deprecation.rb +44 -0
  40. data/lib/bel_parser/language/semantics/relationship_not_listable.rb +60 -0
  41. data/lib/bel_parser/language/semantics/signature_mapping.rb +83 -0
  42. data/lib/bel_parser/language/semantics_ast.rb +784 -0
  43. data/lib/bel_parser/language/semantics_ast_warnings.rb +180 -0
  44. data/lib/bel_parser/language/semantics_function.rb +16 -0
  45. data/lib/bel_parser/language/semantics_match.rb +28 -0
  46. data/lib/bel_parser/language/semantics_result.rb +33 -0
  47. data/lib/bel_parser/language/semantics_type_warning.rb +22 -0
  48. data/lib/bel_parser/language/semantics_warning.rb +27 -0
  49. data/lib/bel_parser/language/signature.rb +39 -0
  50. data/lib/bel_parser/language/specification.rb +118 -0
  51. data/lib/bel_parser/language/syntax.rb +38 -0
  52. data/lib/bel_parser/language/syntax/invalid_function.rb +39 -0
  53. data/lib/bel_parser/language/syntax/invalid_relationship.rb +42 -0
  54. data/lib/bel_parser/language/syntax/undefined_namespace.rb +49 -0
  55. data/lib/bel_parser/language/syntax/undefined_namespace_value.rb +44 -0
  56. data/lib/bel_parser/language/syntax_error.rb +32 -0
  57. data/lib/bel_parser/language/syntax_function.rb +16 -0
  58. data/lib/bel_parser/language/syntax_result.rb +32 -0
  59. data/lib/bel_parser/language/syntax_warning.rb +27 -0
  60. data/lib/bel_parser/language/version1_0.rb +20 -0
  61. data/lib/bel_parser/language/version1_0/functions/abundance.rb +83 -0
  62. data/lib/bel_parser/language/version1_0/functions/biological_process.rb +83 -0
  63. data/lib/bel_parser/language/version1_0/functions/catalytic_activity.rb +114 -0
  64. data/lib/bel_parser/language/version1_0/functions/cell_secretion.rb +83 -0
  65. data/lib/bel_parser/language/version1_0/functions/cell_surface_expression.rb +83 -0
  66. data/lib/bel_parser/language/version1_0/functions/chaperone_activity.rb +114 -0
  67. data/lib/bel_parser/language/version1_0/functions/complex_abundance.rb +115 -0
  68. data/lib/bel_parser/language/version1_0/functions/composite_abundance.rb +81 -0
  69. data/lib/bel_parser/language/version1_0/functions/degradation.rb +83 -0
  70. data/lib/bel_parser/language/version1_0/functions/fusion.rb +287 -0
  71. data/lib/bel_parser/language/version1_0/functions/gene_abundance.rb +122 -0
  72. data/lib/bel_parser/language/version1_0/functions/gtp_bound_activity.rb +113 -0
  73. data/lib/bel_parser/language/version1_0/functions/kinase_activity.rb +114 -0
  74. data/lib/bel_parser/language/version1_0/functions/list.rb +114 -0
  75. data/lib/bel_parser/language/version1_0/functions/micro_rna_abundance.rb +85 -0
  76. data/lib/bel_parser/language/version1_0/functions/molecular_activity.rb +82 -0
  77. data/lib/bel_parser/language/version1_0/functions/pathology.rb +83 -0
  78. data/lib/bel_parser/language/version1_0/functions/peptidase_activity.rb +112 -0
  79. data/lib/bel_parser/language/version1_0/functions/phosphatase_activity.rb +112 -0
  80. data/lib/bel_parser/language/version1_0/functions/products.rb +79 -0
  81. data/lib/bel_parser/language/version1_0/functions/protein_abundance.rb +234 -0
  82. data/lib/bel_parser/language/version1_0/functions/protein_modification.rb +179 -0
  83. data/lib/bel_parser/language/version1_0/functions/reactants.rb +79 -0
  84. data/lib/bel_parser/language/version1_0/functions/reaction.rb +86 -0
  85. data/lib/bel_parser/language/version1_0/functions/ribosylation_activity.rb +114 -0
  86. data/lib/bel_parser/language/version1_0/functions/rna_abundance.rb +122 -0
  87. data/lib/bel_parser/language/version1_0/functions/substitution.rb +93 -0
  88. data/lib/bel_parser/language/version1_0/functions/transcriptional_activity.rb +114 -0
  89. data/lib/bel_parser/language/version1_0/functions/translocation.rb +98 -0
  90. data/lib/bel_parser/language/version1_0/functions/transport_activity.rb +115 -0
  91. data/lib/bel_parser/language/version1_0/functions/truncation.rb +81 -0
  92. data/lib/bel_parser/language/version1_0/relationships/acts_in.rb +61 -0
  93. data/lib/bel_parser/language/version1_0/relationships/analogous.rb +41 -0
  94. data/lib/bel_parser/language/version1_0/relationships/association.rb +42 -0
  95. data/lib/bel_parser/language/version1_0/relationships/biomarker_for.rb +42 -0
  96. data/lib/bel_parser/language/version1_0/relationships/causes_no_change.rb +50 -0
  97. data/lib/bel_parser/language/version1_0/relationships/decreases.rb +63 -0
  98. data/lib/bel_parser/language/version1_0/relationships/directly_decreases.rb +56 -0
  99. data/lib/bel_parser/language/version1_0/relationships/directly_increases.rb +56 -0
  100. data/lib/bel_parser/language/version1_0/relationships/has_component.rb +62 -0
  101. data/lib/bel_parser/language/version1_0/relationships/has_components.rb +61 -0
  102. data/lib/bel_parser/language/version1_0/relationships/has_member.rb +48 -0
  103. data/lib/bel_parser/language/version1_0/relationships/has_members.rb +57 -0
  104. data/lib/bel_parser/language/version1_0/relationships/has_modification.rb +54 -0
  105. data/lib/bel_parser/language/version1_0/relationships/has_product.rb +60 -0
  106. data/lib/bel_parser/language/version1_0/relationships/has_variant.rb +54 -0
  107. data/lib/bel_parser/language/version1_0/relationships/includes.rb +59 -0
  108. data/lib/bel_parser/language/version1_0/relationships/increases.rb +63 -0
  109. data/lib/bel_parser/language/version1_0/relationships/is_a.rb +48 -0
  110. data/lib/bel_parser/language/version1_0/relationships/negative_correlation.rb +50 -0
  111. data/lib/bel_parser/language/version1_0/relationships/orthologous.rb +48 -0
  112. data/lib/bel_parser/language/version1_0/relationships/positive_correlation.rb +46 -0
  113. data/lib/bel_parser/language/version1_0/relationships/prognostic_biomarker_for.rb +44 -0
  114. data/lib/bel_parser/language/version1_0/relationships/rate_limiting_step_of.rb +53 -0
  115. data/lib/bel_parser/language/version1_0/relationships/reactant_in.rb +60 -0
  116. data/lib/bel_parser/language/version1_0/relationships/sub_process_of.rb +55 -0
  117. data/lib/bel_parser/language/version1_0/relationships/transcribed_to.rb +53 -0
  118. data/lib/bel_parser/language/version1_0/relationships/translated_to.rb +54 -0
  119. data/lib/bel_parser/language/version1_0/relationships/translocates.rb +57 -0
  120. data/lib/bel_parser/language/version1_0/return_types/abundance.rb +20 -0
  121. data/lib/bel_parser/language/version1_0/return_types/any.rb +74 -0
  122. data/lib/bel_parser/language/version1_0/return_types/biological_process.rb +17 -0
  123. data/lib/bel_parser/language/version1_0/return_types/catalytic_activity.rb +20 -0
  124. data/lib/bel_parser/language/version1_0/return_types/chaperone_activity.rb +20 -0
  125. data/lib/bel_parser/language/version1_0/return_types/complex_abundance.rb +17 -0
  126. data/lib/bel_parser/language/version1_0/return_types/fusion.rb +17 -0
  127. data/lib/bel_parser/language/version1_0/return_types/gene_abundance.rb +17 -0
  128. data/lib/bel_parser/language/version1_0/return_types/gtp_bound_activity.rb +20 -0
  129. data/lib/bel_parser/language/version1_0/return_types/kinase_activity.rb +20 -0
  130. data/lib/bel_parser/language/version1_0/return_types/list.rb +17 -0
  131. data/lib/bel_parser/language/version1_0/return_types/micro_rna_abundance.rb +17 -0
  132. data/lib/bel_parser/language/version1_0/return_types/molecular_activity.rb +20 -0
  133. data/lib/bel_parser/language/version1_0/return_types/pathology.rb +17 -0
  134. data/lib/bel_parser/language/version1_0/return_types/peptidase_activity.rb +20 -0
  135. data/lib/bel_parser/language/version1_0/return_types/phosphatase_activity.rb +20 -0
  136. data/lib/bel_parser/language/version1_0/return_types/products.rb +17 -0
  137. data/lib/bel_parser/language/version1_0/return_types/protein_abundance.rb +17 -0
  138. data/lib/bel_parser/language/version1_0/return_types/protein_modification.rb +17 -0
  139. data/lib/bel_parser/language/version1_0/return_types/reactants.rb +17 -0
  140. data/lib/bel_parser/language/version1_0/return_types/ribosylation_activity.rb +20 -0
  141. data/lib/bel_parser/language/version1_0/return_types/rna_abundance.rb +17 -0
  142. data/lib/bel_parser/language/version1_0/return_types/substitution.rb +17 -0
  143. data/lib/bel_parser/language/version1_0/return_types/transcriptional_activity.rb +20 -0
  144. data/lib/bel_parser/language/version1_0/return_types/transport_activity.rb +20 -0
  145. data/lib/bel_parser/language/version1_0/return_types/truncation.rb +17 -0
  146. data/lib/bel_parser/language/version1_0/value_encodings/abundance.rb +21 -0
  147. data/lib/bel_parser/language/version1_0/value_encodings/any.rb +74 -0
  148. data/lib/bel_parser/language/version1_0/value_encodings/biological_process.rb +21 -0
  149. data/lib/bel_parser/language/version1_0/value_encodings/complex_abundance.rb +21 -0
  150. data/lib/bel_parser/language/version1_0/value_encodings/gene_abundance.rb +21 -0
  151. data/lib/bel_parser/language/version1_0/value_encodings/micro_rna_abundance.rb +21 -0
  152. data/lib/bel_parser/language/version1_0/value_encodings/pathology.rb +21 -0
  153. data/lib/bel_parser/language/version1_0/value_encodings/protein_abundance.rb +21 -0
  154. data/lib/bel_parser/language/version1_0/value_encodings/rna_abundance.rb +21 -0
  155. data/lib/bel_parser/language/version2_0.rb +20 -0
  156. data/lib/bel_parser/language/version2_0/functions/abundance.rb +161 -0
  157. data/lib/bel_parser/language/version2_0/functions/activity.rb +118 -0
  158. data/lib/bel_parser/language/version2_0/functions/biological_process.rb +84 -0
  159. data/lib/bel_parser/language/version2_0/functions/cell_secretion.rb +83 -0
  160. data/lib/bel_parser/language/version2_0/functions/cell_surface_expression.rb +83 -0
  161. data/lib/bel_parser/language/version2_0/functions/complex_abundance.rb +190 -0
  162. data/lib/bel_parser/language/version2_0/functions/composite_abundance.rb +81 -0
  163. data/lib/bel_parser/language/version2_0/functions/degradation.rb +83 -0
  164. data/lib/bel_parser/language/version2_0/functions/fragment.rb +116 -0
  165. data/lib/bel_parser/language/version2_0/functions/from_location.rb +85 -0
  166. data/lib/bel_parser/language/version2_0/functions/fusion.rb +203 -0
  167. data/lib/bel_parser/language/version2_0/functions/gene_abundance.rb +192 -0
  168. data/lib/bel_parser/language/version2_0/functions/list.rb +114 -0
  169. data/lib/bel_parser/language/version2_0/functions/location.rb +83 -0
  170. data/lib/bel_parser/language/version2_0/functions/micro_rna_abundance.rb +163 -0
  171. data/lib/bel_parser/language/version2_0/functions/molecular_activity.rb +86 -0
  172. data/lib/bel_parser/language/version2_0/functions/pathology.rb +83 -0
  173. data/lib/bel_parser/language/version2_0/functions/products.rb +79 -0
  174. data/lib/bel_parser/language/version2_0/functions/protein_abundance.rb +270 -0
  175. data/lib/bel_parser/language/version2_0/functions/protein_modification.rb +172 -0
  176. data/lib/bel_parser/language/version2_0/functions/reactants.rb +79 -0
  177. data/lib/bel_parser/language/version2_0/functions/reaction.rb +86 -0
  178. data/lib/bel_parser/language/version2_0/functions/rna_abundance.rb +192 -0
  179. data/lib/bel_parser/language/version2_0/functions/to_location.rb +84 -0
  180. data/lib/bel_parser/language/version2_0/functions/translocation.rb +91 -0
  181. data/lib/bel_parser/language/version2_0/functions/variant.rb +80 -0
  182. data/lib/bel_parser/language/version2_0/relationships/acts_in.rb +61 -0
  183. data/lib/bel_parser/language/version2_0/relationships/analogous.rb +45 -0
  184. data/lib/bel_parser/language/version2_0/relationships/association.rb +42 -0
  185. data/lib/bel_parser/language/version2_0/relationships/biomarker_for.rb +46 -0
  186. data/lib/bel_parser/language/version2_0/relationships/causes_no_change.rb +50 -0
  187. data/lib/bel_parser/language/version2_0/relationships/decreases.rb +63 -0
  188. data/lib/bel_parser/language/version2_0/relationships/directly_decreases.rb +56 -0
  189. data/lib/bel_parser/language/version2_0/relationships/directly_increases.rb +56 -0
  190. data/lib/bel_parser/language/version2_0/relationships/has_component.rb +62 -0
  191. data/lib/bel_parser/language/version2_0/relationships/has_components.rb +61 -0
  192. data/lib/bel_parser/language/version2_0/relationships/has_member.rb +48 -0
  193. data/lib/bel_parser/language/version2_0/relationships/has_members.rb +57 -0
  194. data/lib/bel_parser/language/version2_0/relationships/has_modification.rb +54 -0
  195. data/lib/bel_parser/language/version2_0/relationships/has_product.rb +60 -0
  196. data/lib/bel_parser/language/version2_0/relationships/has_variant.rb +54 -0
  197. data/lib/bel_parser/language/version2_0/relationships/includes.rb +59 -0
  198. data/lib/bel_parser/language/version2_0/relationships/increases.rb +63 -0
  199. data/lib/bel_parser/language/version2_0/relationships/is_a.rb +48 -0
  200. data/lib/bel_parser/language/version2_0/relationships/negative_correlation.rb +50 -0
  201. data/lib/bel_parser/language/version2_0/relationships/orthologous.rb +48 -0
  202. data/lib/bel_parser/language/version2_0/relationships/positive_correlation.rb +46 -0
  203. data/lib/bel_parser/language/version2_0/relationships/prognostic_biomarker_for.rb +48 -0
  204. data/lib/bel_parser/language/version2_0/relationships/rate_limiting_step_of.rb +53 -0
  205. data/lib/bel_parser/language/version2_0/relationships/reactant_in.rb +60 -0
  206. data/lib/bel_parser/language/version2_0/relationships/regulates.rb +51 -0
  207. data/lib/bel_parser/language/version2_0/relationships/sub_process_of.rb +55 -0
  208. data/lib/bel_parser/language/version2_0/relationships/transcribed_to.rb +53 -0
  209. data/lib/bel_parser/language/version2_0/relationships/translated_to.rb +54 -0
  210. data/lib/bel_parser/language/version2_0/relationships/translocates.rb +57 -0
  211. data/lib/bel_parser/language/version2_0/return_types/abundance.rb +20 -0
  212. data/lib/bel_parser/language/version2_0/return_types/activity.rb +20 -0
  213. data/lib/bel_parser/language/version2_0/return_types/any.rb +74 -0
  214. data/lib/bel_parser/language/version2_0/return_types/biological_process.rb +17 -0
  215. data/lib/bel_parser/language/version2_0/return_types/complex_abundance.rb +17 -0
  216. data/lib/bel_parser/language/version2_0/return_types/fragment.rb +20 -0
  217. data/lib/bel_parser/language/version2_0/return_types/from_location.rb +20 -0
  218. data/lib/bel_parser/language/version2_0/return_types/fusion.rb +17 -0
  219. data/lib/bel_parser/language/version2_0/return_types/gene_abundance.rb +17 -0
  220. data/lib/bel_parser/language/version2_0/return_types/list.rb +17 -0
  221. data/lib/bel_parser/language/version2_0/return_types/location.rb +20 -0
  222. data/lib/bel_parser/language/version2_0/return_types/micro_rna_abundance.rb +17 -0
  223. data/lib/bel_parser/language/version2_0/return_types/molecular_activity.rb +20 -0
  224. data/lib/bel_parser/language/version2_0/return_types/pathology.rb +17 -0
  225. data/lib/bel_parser/language/version2_0/return_types/products.rb +17 -0
  226. data/lib/bel_parser/language/version2_0/return_types/protein_abundance.rb +17 -0
  227. data/lib/bel_parser/language/version2_0/return_types/protein_modification.rb +17 -0
  228. data/lib/bel_parser/language/version2_0/return_types/reactants.rb +17 -0
  229. data/lib/bel_parser/language/version2_0/return_types/rna_abundance.rb +17 -0
  230. data/lib/bel_parser/language/version2_0/return_types/to_location.rb +20 -0
  231. data/lib/bel_parser/language/version2_0/return_types/variant.rb +20 -0
  232. data/lib/bel_parser/language/version2_0/value_encodings/abundance.rb +21 -0
  233. data/lib/bel_parser/language/version2_0/value_encodings/activity.rb +21 -0
  234. data/lib/bel_parser/language/version2_0/value_encodings/any.rb +74 -0
  235. data/lib/bel_parser/language/version2_0/value_encodings/biological_process.rb +21 -0
  236. data/lib/bel_parser/language/version2_0/value_encodings/complex_abundance.rb +21 -0
  237. data/lib/bel_parser/language/version2_0/value_encodings/gene_abundance.rb +21 -0
  238. data/lib/bel_parser/language/version2_0/value_encodings/location.rb +21 -0
  239. data/lib/bel_parser/language/version2_0/value_encodings/micro_rna_abundance.rb +21 -0
  240. data/lib/bel_parser/language/version2_0/value_encodings/pathology.rb +21 -0
  241. data/lib/bel_parser/language/version2_0/value_encodings/protein_abundance.rb +21 -0
  242. data/lib/bel_parser/language/version2_0/value_encodings/protein_modification.rb +21 -0
  243. data/lib/bel_parser/language/version2_0/value_encodings/rna_abundance.rb +21 -0
  244. data/lib/bel_parser/mixin/line_continuator.rb +15 -0
  245. data/lib/bel_parser/mixin/line_mapping.rb +14 -0
  246. data/lib/bel_parser/parsers/ast/node.rb +987 -0
  247. data/lib/bel_parser/parsers/ast/sexp.rb +8 -0
  248. data/lib/bel_parser/parsers/bel_script.rb +5 -0
  249. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +5920 -0
  250. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +141 -0
  251. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +1780 -0
  252. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +121 -0
  253. data/lib/bel_parser/parsers/bel_script/set.rb +5008 -0
  254. data/lib/bel_parser/parsers/bel_script/set.rl +116 -0
  255. data/lib/bel_parser/parsers/bel_script/set_document.rb +7722 -0
  256. data/lib/bel_parser/parsers/bel_script/set_document.rl +97 -0
  257. data/lib/bel_parser/parsers/bel_script/unset.rb +706 -0
  258. data/lib/bel_parser/parsers/bel_script/unset.rl +95 -0
  259. data/lib/bel_parser/parsers/common.rb +5 -0
  260. data/lib/bel_parser/parsers/common/blank_line.rb +211 -0
  261. data/lib/bel_parser/parsers/common/blank_line.rl +81 -0
  262. data/lib/bel_parser/parsers/common/comment_line.rb +245 -0
  263. data/lib/bel_parser/parsers/common/comment_line.rl +97 -0
  264. data/lib/bel_parser/parsers/common/common.rb +7 -0
  265. data/lib/bel_parser/parsers/common/common.rl +13 -0
  266. data/lib/bel_parser/parsers/common/identifier.rb +289 -0
  267. data/lib/bel_parser/parsers/common/identifier.rl +106 -0
  268. data/lib/bel_parser/parsers/common/list.rb +2388 -0
  269. data/lib/bel_parser/parsers/common/list.rl +146 -0
  270. data/lib/bel_parser/parsers/common/string.rb +271 -0
  271. data/lib/bel_parser/parsers/common/string.rl +107 -0
  272. data/lib/bel_parser/parsers/expression.rb +7 -0
  273. data/lib/bel_parser/parsers/expression/comment.rb +239 -0
  274. data/lib/bel_parser/parsers/expression/comment.rl +97 -0
  275. data/lib/bel_parser/parsers/expression/nested_statement.rb +17802 -0
  276. data/lib/bel_parser/parsers/expression/nested_statement.rl +141 -0
  277. data/lib/bel_parser/parsers/expression/observed_term.rb +7291 -0
  278. data/lib/bel_parser/parsers/expression/observed_term.rl +92 -0
  279. data/lib/bel_parser/parsers/expression/parameter.rb +1506 -0
  280. data/lib/bel_parser/parsers/expression/parameter.rl +97 -0
  281. data/lib/bel_parser/parsers/expression/relationship.rb +254 -0
  282. data/lib/bel_parser/parsers/expression/relationship.rl +98 -0
  283. data/lib/bel_parser/parsers/expression/simple_statement.rb +10475 -0
  284. data/lib/bel_parser/parsers/expression/simple_statement.rl +112 -0
  285. data/lib/bel_parser/parsers/expression/term.rb +3989 -0
  286. data/lib/bel_parser/parsers/expression/term.rl +157 -0
  287. data/lib/bel_parser/parsers/line_parser.rb +92 -0
  288. data/lib/bel_parser/parsers/mixin/buffer.rb +10 -0
  289. data/lib/bel_parser/parsers/nonblocking_io_wrapper.rb +50 -0
  290. data/lib/bel_parser/parsers/serializer.rb +205 -0
  291. data/lib/bel_parser/quoting.rb +177 -0
  292. data/lib/bel_parser/resource/concept.rb +56 -0
  293. data/lib/bel_parser/resource/concept_scheme.rb +35 -0
  294. data/lib/bel_parser/resource/dataset.rb +34 -0
  295. data/lib/bel_parser/resource/eager_reader.rb +89 -0
  296. data/lib/bel_parser/resource/eager_sparql_reader.rb +51 -0
  297. data/lib/bel_parser/resource/file_resource.rb +21 -0
  298. data/lib/bel_parser/resource/file_resource_value.rb +24 -0
  299. data/lib/bel_parser/resource/jena_tdb_reader.rb +246 -0
  300. data/lib/bel_parser/resource/lru_cache.rb +111 -0
  301. data/lib/bel_parser/resource/lru_reader.rb +34 -0
  302. data/lib/bel_parser/resource/reader.rb +18 -0
  303. data/lib/bel_parser/resource/resource_url_reader.rb +181 -0
  304. data/lib/bel_parser/resource/sparql_reader.rb +179 -0
  305. data/lib/bel_parser/resource/value.rb +31 -0
  306. data/lib/bel_parser/script.rb +8 -0
  307. data/lib/bel_parser/script/filter.rb +35 -0
  308. data/lib/bel_parser/script/first_node.rb +21 -0
  309. data/lib/bel_parser/script/keywords.rb +32 -0
  310. data/lib/bel_parser/script/nanopub_mapper.rb +182 -0
  311. data/lib/bel_parser/script/parser.rb +51 -0
  312. data/lib/bel_parser/script/state/annotation_definition.rb +62 -0
  313. data/lib/bel_parser/script/state/bel_version.rb +36 -0
  314. data/lib/bel_parser/script/state/document_property.rb +29 -0
  315. data/lib/bel_parser/script/state/namespace_definition.rb +32 -0
  316. data/lib/bel_parser/script/state/set.rb +82 -0
  317. data/lib/bel_parser/script/state/unset.rb +46 -0
  318. data/lib/bel_parser/script/state_aggregator.rb +49 -0
  319. data/lib/bel_parser/script/state_function.rb +10 -0
  320. data/lib/bel_parser/script/syntax/expression_validation.rb +46 -0
  321. data/lib/bel_parser/script/syntax/invalid_regex_pattern.rb +49 -0
  322. data/lib/bel_parser/script/syntax/undefined_annotation.rb +61 -0
  323. data/lib/bel_parser/script/syntax/undefined_annotation_value.rb +84 -0
  324. data/lib/bel_parser/script/syntax/unresolvable_namespace.rb +54 -0
  325. data/lib/bel_parser/script/syntax/unsupported_bel_version.rb +59 -0
  326. data/lib/bel_parser/script/validator.rb +65 -0
  327. data/lib/bel_parser/vendor/ast.rb +17 -0
  328. data/lib/bel_parser/vendor/ast/node.rb +254 -0
  329. data/lib/bel_parser/vendor/ast/processor.rb +12 -0
  330. data/lib/bel_parser/vendor/ast/processor/mixin.rb +282 -0
  331. data/lib/bel_parser/vendor/ast/sexp.rb +30 -0
  332. metadata +390 -0
@@ -0,0 +1,56 @@
1
+ module BELParser
2
+ module Language
3
+ # CovalentProteinModification defines a controlled vocabulary of
4
+ # post-translational protein modifications.
5
+ #
6
+ # see https://en.wikipedia.org/wiki/Post-translational_modification
7
+ module CovalentProteinModification
8
+ Acetylation = [:Acetylation, :A].freeze
9
+ Farnesylation = [:Farnesylation, :F].freeze
10
+ Glycosylation = [:Glycosylation, :G].freeze
11
+ Hydroxylation = [:Hydroxylation, :H].freeze
12
+ Methylation = [:Methylation, :M].freeze
13
+ Phosphorylation = [:Phosphorylation, :P].freeze
14
+ Ribosylation = [:Ribosylation, :R].freeze
15
+ Sumoylation = [:Sumoylation, :S].freeze
16
+ Ubiquitination = [:Ubiquitination, :U].freeze
17
+
18
+ # Determines if +sym+ represents a covalent protein modification.
19
+ #
20
+ # @param [#to_sym] sym covalent protein modification code
21
+ # @return [Boolean] +true+ if +sym+ code is included in supported
22
+ # covalent protein modifications; +false+ if not supported
23
+ def self.includes?(sym)
24
+ @hash.key?(sym.to_sym)
25
+ end
26
+
27
+ # Gets all supported covalent protein modification.
28
+ def self.names
29
+ @names
30
+ end
31
+
32
+ # Gets all supported covalent protein modification (i.e. name, 1-Letter).
33
+ def self.values
34
+ @values
35
+ end
36
+
37
+ unless defined? @hash
38
+ @hash = {}
39
+ constants.map(&method(:const_get)).each do |values|
40
+ @hash.update(
41
+ Hash[values.map { |v| [v, values.first] }]
42
+ )
43
+ end
44
+ @hash.freeze
45
+ end
46
+
47
+ unless defined? @names
48
+ @names = constants.map(&method(:const_get)).map(&:first).sort.freeze
49
+ end
50
+
51
+ unless defined? @values
52
+ @values = constants.map(&method(:const_get)).map(&:to_a).flatten.freeze
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,68 @@
1
+ require_relative 'syntax'
2
+ require_relative 'semantics'
3
+ require_relative 'apply_namespace_encoding'
4
+
5
+ module BELParser
6
+ module Language
7
+ # ExpressionValidator validates the syntax and semantics of BEL expressions
8
+ # when supplied a {BELParser::Language::Specification} and Hash of
9
+ # namespaces.
10
+ class ExpressionValidator
11
+ def initialize(spec, namespaces, resource_reader)
12
+ @spec = spec
13
+ @namespaces = namespaces || {}
14
+ @syntax_functions = Syntax.syntax_functions
15
+ @semantics_functions = Semantics.semantics_functions
16
+ @transform =
17
+ ApplyNamespaceEncoding.new(@spec, @namespaces, resource_reader)
18
+ end
19
+
20
+ # Validate the syntax and semantics of
21
+ # {BELParser::Parsers::AST::Node expression_node}.
22
+ #
23
+ # @param [BELParser::Parsers::AST::Node] expression_node to validate
24
+ # @return [BELParser::Language::Syntax::SyntaxResult] syntax results
25
+ def validate(expression_node)
26
+ @transform.process(expression_node)
27
+ results = syntax(expression_node)
28
+ results << Syntax::Valid.new(expression_node, @spec) if results.empty?
29
+ results.concat(semantics(expression_node))
30
+ results
31
+ end
32
+
33
+ private
34
+
35
+ def syntax(expression_node)
36
+ expression_node.traverse.flat_map do |node|
37
+ @syntax_functions.map { |func| func.map(node, @spec, @namespaces) }
38
+ end.compact
39
+ end
40
+
41
+ def semantics(expression_node)
42
+ semantic_results =
43
+ expression_node.traverse.flat_map do |node|
44
+ @semantics_functions.flat_map { |func| func.map(node, @spec, @namespaces) }
45
+ end.compact
46
+ sigmap_results, other_results =
47
+ semantic_results.partition do |result|
48
+ result.is_a?(Semantics::SignatureMappingSuccess) ||
49
+ result.is_a?(Semantics::SignatureMappingWarning)
50
+ end
51
+ expression_node
52
+ .traverse
53
+ .select do |node|
54
+ node.is_a?(BELParser::Parsers::AST::Term)
55
+ end
56
+ .map do |term_node|
57
+ sigmap_term =
58
+ sigmap_results
59
+ .select { |res| res.expression_node == term_node }
60
+ unless sigmap_term.any?(&:success?)
61
+ other_results.concat(sigmap_term)
62
+ end
63
+ end
64
+ other_results
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,67 @@
1
+ module BELParser
2
+ module Language
3
+ # Function allows you to describe the type of BEL Term.
4
+ #
5
+ # BEL Terms are composed of BEL Functions and entity definitions
6
+ # referenced using BEL Namespace identifiers. Each BEL Term represents
7
+ # either an abundance of a biological entity, the abundance of human AKT1
8
+ # for example, or a biological process such as cardiomyopathy.
9
+ module Function
10
+ def short
11
+ raise NotImplementedError, "#{__method__} is not implemented."
12
+ end
13
+
14
+ def long
15
+ raise NotImplementedError, "#{__method__} is not implemented."
16
+ end
17
+
18
+ def return_type
19
+ raise NotImplementedError, "#{__method__} is not implemented."
20
+ end
21
+
22
+ def description
23
+ raise NotImplementedError, "#{__method__} is not implemented."
24
+ end
25
+
26
+ def signatures
27
+ raise NotImplementedError, "#{__method__} is not implemented."
28
+ end
29
+
30
+ # Indicates whether this function is deprecated. Override in your
31
+ # function to mark as deprecated.
32
+ #
33
+ # @return [Boolean] false
34
+ def deprecated?
35
+ false
36
+ end
37
+
38
+ def ===(other)
39
+ return false if other.nil?
40
+ short == other || long == other
41
+ end
42
+
43
+ def to_sym(form = :short)
44
+ value = _form_value(form)
45
+ return nil unless value
46
+ value.to_s
47
+ end
48
+
49
+ def to_s(form = :short)
50
+ value = _form_value(form)
51
+ return nil unless value
52
+ value.to_s
53
+ end
54
+
55
+ private
56
+
57
+ def _form_value(form = :short)
58
+ case form
59
+ when :short
60
+ short
61
+ when :long
62
+ long
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,102 @@
1
+ module BELParser
2
+ module Language
3
+ # Relationship allows you to describe the type of BEL Relationship.
4
+ #
5
+ # BEL Relationships represent an interaction between a subject and object
6
+ # in the BEL expression.
7
+ module Relationship
8
+ def short
9
+ raise NotImplementedError, "#{__method__} is not implemented."
10
+ end
11
+
12
+ def long
13
+ raise NotImplementedError, "#{__method__} is not implemented."
14
+ end
15
+
16
+ def description
17
+ raise NotImplementedError, "#{__method__} is not implemented."
18
+ end
19
+
20
+ # Indicates whether this relationship is deprecated. Override in your
21
+ # relationship to mark as deprecated.
22
+ #
23
+ # @return [Boolean] false
24
+ def deprecated?
25
+ false
26
+ end
27
+
28
+ def causal?
29
+ false
30
+ end
31
+
32
+ def correlative?
33
+ false
34
+ end
35
+
36
+ def decreasing?
37
+ false
38
+ end
39
+
40
+ def direct?
41
+ false
42
+ end
43
+
44
+ def directed?
45
+ false
46
+ end
47
+
48
+ def genomic?
49
+ false
50
+ end
51
+
52
+ def increasing?
53
+ false
54
+ end
55
+
56
+ def indirect?
57
+ false
58
+ end
59
+
60
+ def injected?
61
+ false
62
+ end
63
+
64
+ def listable?
65
+ false
66
+ end
67
+
68
+ def self?
69
+ false
70
+ end
71
+
72
+ def ==(other)
73
+ return true if equal?(other)
74
+ return false if other.nil?
75
+ short == other || long == other
76
+ end
77
+
78
+ def to_sym(form = :short)
79
+ value = _form_value(form)
80
+ return nil unless value
81
+ value.to_s
82
+ end
83
+
84
+ def to_s(form = :short)
85
+ value = _form_value(form)
86
+ return nil unless value
87
+ value.to_s
88
+ end
89
+
90
+ private
91
+
92
+ def _form_value(form = :short)
93
+ case form
94
+ when :short
95
+ short
96
+ when :long
97
+ long
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,40 @@
1
+ require_relative 'semantics_match'
2
+ require_relative 'semantics_ast'
3
+ require_relative 'semantics_result'
4
+ require_relative 'semantics_warning'
5
+ require_relative 'semantics_function'
6
+
7
+ module BELParser
8
+ module Language
9
+ # Semantics module aggregates the generic {SemanticsFunction}
10
+ # implementations that apply to all
11
+ # {BELParser::Language::Specification BEL specifications}.
12
+ module Semantics
13
+ def self.semantics_functions
14
+ constants.collect do |symbol|
15
+ const = const_get(symbol)
16
+ const if
17
+ const.respond_to?(:include?) &&
18
+ const.include?(SemanticsFunction)
19
+ end.compact
20
+ end
21
+
22
+ # Valid defines a {SemanticsResult} that indicates successful semantic
23
+ # validation.
24
+ class Valid < SemanticsResult
25
+ def msg
26
+ 'Semantics are valid.'
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ # Require all semantics functions.
34
+ Dir[
35
+ File.join(
36
+ File.dirname(File.expand_path(__FILE__)),
37
+ 'semantics', '*.rb')
38
+ ].each do |path|
39
+ require_relative "semantics/#{File.basename(path)}"
40
+ end
@@ -0,0 +1,65 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Semantics
6
+ # DeeplyNestedStatement implements a {SemanticsFunction} that maps a
7
+ # {BELParser::Parsers::AST::NestedStatement} to {SemanticsWarning} if
8
+ # the number of nested statements exceeds
9
+ # {DeeplyNestedStatement::NESTING_THRESHOLD}.
10
+ #
11
+ # @see DeeplyNestedStatement::NESTING_THRESHOLD
12
+ class DeeplyNestedStatement
13
+ include SemanticsFunction
14
+
15
+ # Represents how many nested statments must be exceeded before a
16
+ # {SemanticsWarning} results.
17
+ NESTING_THRESHOLD = 1
18
+
19
+ private_class_method :new
20
+
21
+ def self.map(node, spec, _namespaces)
22
+ return nil unless node.is_a?(BELParser::Parsers::AST::NestedStatement)
23
+
24
+ nested_number = count_nested_statements(node)
25
+ DeeplyNestedStatementWarning.new(
26
+ node,
27
+ spec,
28
+ NESTING_THRESHOLD,
29
+ nested_number) if nested_number > NESTING_THRESHOLD
30
+ end
31
+
32
+ def self.count_nested_statements(node)
33
+ node
34
+ .traverse
35
+ .select { |n| n.is_a?(BELParser::Parsers::AST::Object) }
36
+ .reduce(0) do |sum, object|
37
+ sum += 1 if object.statement?
38
+ sum
39
+ end
40
+ end
41
+ end
42
+
43
+ # DeeplyNestedStatementWarning defines a {SemanticsWarning} that
44
+ # indicates the nested statement threshold was exceeded.
45
+ #
46
+ # @see DeeplyNestedStatement::NESTING_THRESHOLD
47
+ class DeeplyNestedStatementWarning < SemanticsWarning
48
+ attr_reader :nested_threshold, :nested_number
49
+
50
+ def initialize(stmt_node, spec, nested_threshold, nested_number)
51
+ super(stmt_node, spec)
52
+ @nested_number = nested_number
53
+ @nested_threshold = nested_threshold
54
+ end
55
+
56
+ def to_s
57
+ <<-MSG.gsub(/ {12}/, '').delete("\n")
58
+ Statement contains more than #{nested_threshold} nested statements
59
+ (#{nested_number} nested statements).
60
+ MSG
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,43 @@
1
+ require 'bel_parser/parsers/ast/node'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Semantics
6
+ # FunctionDeprecation implements a {SemanticsFunction} that maps a
7
+ # {BELParser::Parsers::AST::Function} to a {SemanticsWarning} if the
8
+ # referenced function is deprecated for the
9
+ # {BELParser::Language::Specification}.
10
+ class FunctionDeprecation
11
+ include SemanticsFunction
12
+
13
+ private_class_method :new
14
+
15
+ def self.map(node, spec, _namespaces)
16
+ return nil unless node.is_a?(BELParser::Parsers::AST::Function)
17
+
18
+ function_name = node.identifier.string_literal
19
+ func = spec.function(function_name.to_sym)
20
+ return nil unless func
21
+
22
+ FunctionDeprecationWarning.new(node, spec, func) if func.deprecated?
23
+ end
24
+ end
25
+
26
+ # Represents a {SemanticsWarning} when a
27
+ # {BELParser::Parsers::AST::Function} references a deprecated function
28
+ # for the {BELParser::Language::Specification}.
29
+ class FunctionDeprecationWarning < SemanticsWarning
30
+ attr_reader :deprecated_function
31
+
32
+ def initialize(function_node, spec, deprecated_function)
33
+ super(function_node, spec)
34
+ @deprecated_function = deprecated_function
35
+ end
36
+
37
+ def to_s
38
+ %(Function "#{deprecated_function}" is deprecated.)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end