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,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
@@ -0,0 +1,16 @@
1
+ module BELParser
2
+ module Language
3
+ module Semantics
4
+ # SemanticsFunction provides a {#map} function that maps a
5
+ # {BELParser::Parsers::AST::Node} to one or more
6
+ # {SemanticsResult semantics results}.
7
+ module SemanticsFunction
8
+ # @abstract Include {SemanticsFunction} and override {#map} to check
9
+ # term semantics (e.g. signatures).
10
+ def self.map(_term_ast, _spec, _namespaces)
11
+ raise NotImplementedError, "#{__method__} is not implemented."
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ module BELParser
2
+ module Language
3
+ module Semantics
4
+ # SemanticMatch holds the results of an input AST to semantic AST match.
5
+ class SemanticMatch
6
+ attr_reader :input_node, :semantic_node
7
+
8
+ def initialize(success, input_node, semantic_node)
9
+ @success = success
10
+ @input_node = input_node
11
+ @semantic_node = semantic_node
12
+ end
13
+
14
+ def success?
15
+ @success
16
+ end
17
+
18
+ def failure?
19
+ !@success
20
+ end
21
+
22
+ def to_s
23
+ msg
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ module BELParser
2
+ module Language
3
+ module Semantics
4
+ # SemanticsResult represents the successful outcome of applying a
5
+ # {SemanticsFunction}.
6
+ class SemanticsResult
7
+ attr_reader :expression_node, :specification
8
+
9
+ def initialize(expression_node, specification)
10
+ @expression_node = expression_node
11
+ @specification = specification
12
+ end
13
+
14
+ def success?
15
+ true
16
+ end
17
+
18
+ def failure?
19
+ false
20
+ end
21
+
22
+ # @abstract Subclass and override {#msg} to provide the message.
23
+ def msg
24
+ "Successful semantic validation of #{@expression_node.type}."
25
+ end
26
+
27
+ def to_s
28
+ "Info: #{msg}"
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -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
@@ -0,0 +1,27 @@
1
+ require_relative 'semantics_result'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Semantics
6
+ # SemanticsWarning defines a {SemanticsResult} that should be regarded as
7
+ # a warning with the expression.
8
+ class SemanticsWarning < SemanticsResult
9
+ def initialize(expression_node, specification)
10
+ super(expression_node, specification)
11
+ end
12
+
13
+ def success?
14
+ false
15
+ end
16
+
17
+ def failure?
18
+ true
19
+ end
20
+
21
+ def to_s
22
+ "Warning: #{msg}"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,39 @@
1
+ module BELParser
2
+ module Language
3
+ # Signature defines the interface for language-specific signatures used
4
+ # to check expression semantics.
5
+ module Signature
6
+ include Comparable
7
+
8
+ def semantic_ast
9
+ raise NotImplementedError, "#{__method__} is not implemented."
10
+ end
11
+
12
+ def string_form
13
+ raise NotImplementedError, "#{__method__} is not implemented."
14
+ end
15
+
16
+ def size
17
+ count = 0
18
+ nodes = [semantic_ast]
19
+ until nodes.empty?
20
+ n = nodes.shift
21
+ if n
22
+ count += 1
23
+ nodes.concat(n.children) if n.respond_to?(:children)
24
+ end
25
+ end
26
+ count
27
+ end
28
+
29
+ def <=>(other)
30
+ return 1 if other.nil?
31
+ size <=> other.size
32
+ end
33
+
34
+ def to_s
35
+ string_form
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,118 @@
1
+ module BELParser
2
+ module Language
3
+ # Specification defines the common behavior of any language specification.
4
+ # It includes the syntactic and semantic rules of the language.
5
+ module Specification
6
+ EMPTY_ARRAY = [].freeze
7
+
8
+ def version
9
+ @version
10
+ end
11
+
12
+ def function(short_or_long_form)
13
+ @indexed_functions[short_or_long_form]
14
+ end
15
+
16
+ def relationship(short_or_long_form)
17
+ @indexed_relationships[short_or_long_form]
18
+ end
19
+
20
+ def return_type(return_type)
21
+ @indexed_return_types[return_type]
22
+ end
23
+
24
+ def value_encoding(value_encoding)
25
+ @indexed_value_encodings[value_encoding]
26
+ end
27
+
28
+ def functions(*short_or_long_form)
29
+ if short_or_long_form.empty?
30
+ @functions.freeze
31
+ else
32
+ @indexed_functions.values_at(*short_or_long_form)
33
+ end
34
+ end
35
+
36
+ def relationships(*short_or_long_form)
37
+ if short_or_long_form.empty?
38
+ @relationships.freeze
39
+ else
40
+ @indexed_relationships.values_at(*short_or_long_form)
41
+ end
42
+ end
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
+
56
+ def return_types(*return_types)
57
+ if return_types.empty?
58
+ @return_types.freeze
59
+ else
60
+ @indexed_return_types.values_at(*return_types)
61
+ end
62
+ end
63
+
64
+ # @param [Array<#long,#short>] language_objects to be indexed by
65
+ # +long+ and +short+ method return
66
+ def index_long_short(language_objects)
67
+ Hash[
68
+ language_objects.flat_map do |obj|
69
+ [[obj.short, obj], [obj.long, obj]]
70
+ end
71
+ ]
72
+ end
73
+ protected :index_long_short
74
+
75
+ # @param [Array<#to_sym>] language_objects to be indexed by
76
+ # +to_sym+ method return
77
+ def index_sym(language_objects)
78
+ Hash[
79
+ language_objects.map do |obj|
80
+ [obj.to_sym, obj]
81
+ end
82
+ ]
83
+ end
84
+ protected :index_sym
85
+
86
+ def assign_relationship_categories(relationships)
87
+ relationships.each do |rel|
88
+ rel.methods(false).grep(/(.*?)\?/) do |method_name|
89
+ if rel.method(method_name).call
90
+ category = method_name.to_s.delete('?')
91
+ add_relationship_to_category(rel, category)
92
+ end
93
+ end
94
+ end
95
+
96
+ freeze_categories
97
+ nil
98
+ end
99
+ protected :assign_relationship_categories
100
+
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
115
+ end
116
+ end
117
+ end
118
+ end