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,39 @@
1
+ require 'bel_parser'
2
+ require 'bel_parser/resource/resource_url_reader'
3
+ require 'bel/nanopub'
4
+
5
+ module BEL::Translator::Plugins
6
+ module BelScript
7
+ class Reader
8
+ include ::BELParser::Script
9
+
10
+ SyntaxError = ::BELParser::Language::Syntax::SyntaxError
11
+
12
+ def initialize(io, options = {})
13
+ @io = io
14
+ @state = {
15
+ resource_reader: BELParser::Resource::ResourceURLReader.new(true),
16
+ specification: BELParser::Language.specification('2.0'),
17
+ namespace_definitions: {}
18
+ }
19
+ end
20
+
21
+ def each
22
+ if block_given?
23
+ NanopubMapper.new(
24
+ Validator.new(
25
+ StateAggregator.new(
26
+ FirstNode.new(Filter.new(BELParser::ASTGenerator.new(@io))),
27
+ @state)),
28
+ true,
29
+ false
30
+ ).each do |(num, line, ast_node, nanopub_hash)|
31
+ yield ::BEL::Nanopub::Nanopub.create(nanopub_hash)
32
+ end
33
+ else
34
+ enum_for(:each)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ # Requires the "bel" gem.
2
+ # This is for the BelScript translator intended to be plugged into bel.rb.
3
+ require 'bel/translator'
4
+ require_relative 'reader'
5
+ require_relative 'writer'
6
+
7
+ module BEL::Translator::Plugins
8
+ module BelScript
9
+ # BelScriptTranslator defines a {BEL::Translator} that can read/write
10
+ # BEL Script using the Nanopub model.
11
+ class BelScriptTranslator
12
+ include ::BEL::Translator
13
+
14
+ def read(data, options = {})
15
+ Reader.new(data)
16
+ end
17
+
18
+ def write(objects, writer = StringIO.new, options = {})
19
+ if block_given?
20
+ Writer.new(objects, options).each { |bel_part|
21
+ yield bel_part
22
+ }
23
+ else
24
+ if writer
25
+ Writer.new(objects, options).each { |bel_part|
26
+ writer << "#{bel_part}"
27
+ writer.flush
28
+ }
29
+ writer
30
+ else
31
+ Writer.new(objects, options)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,180 @@
1
+ require_relative 'bel_citation_serialization'
2
+ require_relative 'bel_discrete_serialization'
3
+ require_relative 'bel_top_down_serialization'
4
+ require 'bel'
5
+
6
+ module BEL::Translator::Plugins
7
+
8
+ module BelScript
9
+
10
+ class Writer
11
+
12
+ # Create a {Writer} object that serializes {BEL::Nanopub::Nanopub} to
13
+ # BEL Script.
14
+ #
15
+ # @param [Enumerator<BEL::Nanopub::Nanopub>] data nanopubs iterated
16
+ # using +each+
17
+ # @option options [Boolean] :write_header +true+ to write the BEL Script
18
+ # document header; +false+ to not write the BEL Script document
19
+ # header
20
+ # @option options [Symbol,Module] :serialization the serialization
21
+ # technique to use for nanopub; a +Module+ type will be used as
22
+ # is; a +Symbol+ type will be mapped as
23
+ # +:discrete+ => {BelDiscreteSerialization},
24
+ # +:topdown+ => {BelTopDownSerialization},
25
+ # +:citation+ => {BelCitationSerialization}; otherwise the default
26
+ # of {BelCitationSerialization} is used
27
+ def initialize(data, options = {})
28
+ @data = data
29
+ @streaming = options.fetch(:streaming, false)
30
+ @write_header = options.fetch(:write_header, true)
31
+ @annotation_reference_map = options.fetch(:annotation_reference_map, nil)
32
+ @namespace_reference_map = options.fetch(:namespace_reference_map, nil)
33
+
34
+ # augment self with BEL serialization stategy.
35
+ serialization = options[:serialization]
36
+ serialization_module =
37
+ case serialization
38
+ when Module
39
+ serialization
40
+ when String, Symbol
41
+ serialization_refs = {
42
+ :discrete => BelDiscreteSerialization,
43
+ :topdown => BelTopDownSerialization,
44
+ :citation => BelCitationSerialization,
45
+ }
46
+ serialization_module = serialization_refs[serialization.to_sym]
47
+ unless serialization_module
48
+ raise %Q{No BEL serialization strategy for "#{serialization}"}
49
+ end
50
+ serialization_module
51
+ else
52
+ # Default to citation serialization.
53
+ BelCitationSerialization
54
+ end
55
+
56
+ self_eigenclass = (class << self; self; end)
57
+ self_eigenclass.send(:include, serialization_module)
58
+ end
59
+
60
+ def each
61
+ if block_given?
62
+ combiner =
63
+ if @streaming
64
+ BEL::Nanopub::StreamingNanopubCombiner.new(@data)
65
+ elsif @annotation_reference_map && @namespace_reference_map
66
+ BEL::Nanopub::MapReferencesCombiner.new(
67
+ @data,
68
+ BEL::Nanopub::HashMapReferences.new(
69
+ @annotation_reference_map,
70
+ @namespace_reference_map
71
+ )
72
+ )
73
+ else
74
+ BEL::Nanopub::BufferingNanopubCombiner.new(@data)
75
+ end
76
+
77
+ header_flag = true
78
+ combiner.each { |nanopub|
79
+
80
+ # serialize nanopub
81
+ bel = to_bel(nanopub)
82
+
83
+ if @write_header && header_flag
84
+ yield document_header(nanopub.metadata.document_header)
85
+ yield namespaces(combiner.namespace_references)
86
+ yield annotations(combiner.annotation_references)
87
+
88
+ yield <<-COMMENT.gsub(/^\s+/, '')
89
+ ###############################################
90
+ # Statements Section
91
+ COMMENT
92
+ header_flag = false
93
+ end
94
+
95
+ yield bel
96
+ }
97
+
98
+ yield epilogue
99
+ else
100
+ to_enum(:each)
101
+ end
102
+ end
103
+
104
+ private
105
+
106
+ def document_header(header)
107
+ return "" unless header
108
+
109
+ bel = <<-COMMENT.gsub(/^\s+/, '')
110
+ ###############################################
111
+ # Document Properties Section
112
+ COMMENT
113
+
114
+ header.each { |name, value|
115
+ name_s = name.to_s
116
+ value_s =
117
+ if value.respond_to?(:each)
118
+ value.join('|')
119
+ else
120
+ value.to_s
121
+ end
122
+
123
+ # handle casing for document properties (special case, contactinfo)
124
+ name_s = (name_s.downcase == 'contactinfo') ?
125
+ 'ContactInfo' :
126
+ name_s.capitalize
127
+
128
+ bel << %Q{SET DOCUMENT #{name_s} = "#{value_s}"\n}
129
+ }
130
+
131
+ bel << "\n"
132
+ bel
133
+ end
134
+
135
+ def annotations(annotation_references)
136
+ bel = <<-COMMENT.gsub(/^\s+/, '')
137
+ ###############################################
138
+ # Annotation Definitions Section
139
+ COMMENT
140
+
141
+ return bel unless annotation_references
142
+
143
+ annotation_references.reduce(bel) { |bel, ref|
144
+ keyword, type, domain = ref.values_at(:keyword, :type, :domain)
145
+ bel << "DEFINE ANNOTATION #{keyword} AS "
146
+
147
+ case type.to_sym
148
+ when :uri
149
+ bel << %Q{URL "#{domain}"\n}
150
+ when :pattern
151
+ regex = domain.respond_to?(:source) ? domain.source : domain
152
+ bel << %Q{PATTERN "#{regex}"\n}
153
+ when :list
154
+ bel << %Q|LIST {#{domain.inspect[1...-1]}}\n|
155
+ end
156
+ bel
157
+ }
158
+ bel << "\n"
159
+ bel
160
+ end
161
+
162
+ def namespaces(namespace_references)
163
+ bel = <<-COMMENT.gsub(/^\s+/, '')
164
+ ###############################################
165
+ # Namespace Definitions Section
166
+ COMMENT
167
+
168
+ return bel unless namespace_references
169
+
170
+ namespace_references.reduce(bel) { |bel, ref|
171
+ keyword, url = ref.values_at(:keyword, :uri)
172
+ bel << %Q{DEFINE NAMESPACE #{keyword} AS URL "#{url}"\n}
173
+ bel
174
+ }
175
+ bel << "\n"
176
+ bel
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,23 @@
1
+ # vendored 'ast' gem
2
+ require 'bel_parser/vendor/ast'
3
+
4
+ # AST model
5
+ require 'bel_parser/parsers/ast/node'
6
+
7
+ # ragel parsers
8
+ require 'bel_parser/parsers/common'
9
+ require 'bel_parser/parsers/expression'
10
+ require 'bel_parser/parsers/bel_script'
11
+
12
+ # AST processors
13
+ require 'bel_parser/ast_generator'
14
+ require 'bel_parser/ast_filter'
15
+
16
+ # Language; version-independent classes
17
+ require 'bel_parser/language'
18
+
19
+ # BEL expression support
20
+ require 'bel_parser/expression'
21
+
22
+ # BEL Script support
23
+ require 'bel_parser/script'
@@ -0,0 +1,44 @@
1
+ require_relative 'parsers/ast/node'
2
+
3
+ module BELParser
4
+ # ASTFilter filters types of {BELParser::Parsers::AST::Node}.
5
+ class ASTFilter
6
+ def initialize(ast_enum, *types)
7
+ @ast_enum = ast_enum
8
+ @types = types
9
+ end
10
+
11
+ def each
12
+ if block_given?
13
+ @ast_enum.each do |(line_number, line, ast_results)|
14
+ selected = filter(ast_results)
15
+ yield([line_number, line, selected]) unless selected.empty?
16
+ end
17
+ else
18
+ enum_for(:each)
19
+ end
20
+ end
21
+
22
+ def filter(ast_enum)
23
+ ast_enum.select do |node|
24
+ @types.include?(node.type)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ if __FILE__ == $PROGRAM_NAME
31
+ require_relative 'ast_generator'
32
+
33
+ types = ARGV.map(&:to_sym)
34
+ generator = BELParser::ASTGenerator.new($stdin)
35
+ BELParser::ASTFilter.new(
36
+ generator,
37
+ *types
38
+ ).each do |(line_number, line, results)|
39
+ puts "#{line_number}: #{line}"
40
+ results.each do |result_ast|
41
+ puts result_ast.to_s(1)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,83 @@
1
+ require_relative 'parsers/common'
2
+ require_relative 'parsers/expression'
3
+ require_relative 'parsers/bel_script'
4
+ require_relative 'mixin/line_mapping'
5
+ require_relative 'mixin/line_continuator'
6
+
7
+ module BELParser
8
+ # ASTGenerator yields AST results for each line in some {IO}.
9
+ # See #{ASTGenerator#each}.
10
+ class ASTGenerator
11
+ include LineMapping
12
+ include LineContinuator
13
+
14
+ map_const = ->(x) { x.constants.map { |c| x.const_get(c) } }
15
+ PARSERS = [
16
+ map_const.call(BELParser::Parsers::Common),
17
+ map_const.call(BELParser::Parsers::Expression),
18
+ map_const.call(BELParser::Parsers::BELScript)
19
+ ].flatten!
20
+
21
+ def initialize(io)
22
+ @io = io
23
+ end
24
+
25
+ # Yields AST results for each line of the IO.
26
+ #
27
+ # @example Receive AST results in given block.
28
+ # # doctest setup require 'bel_parser' self.class.include AST::Sexp
29
+ #
30
+ # # example usage line_io = StringIO.new("\"AKT1\"\n") line =
31
+ # nil ast_res = nil ::BELParser::ASTGenerator.new.each(line_io)
32
+ # { |(line_number, line, results)|
33
+ # # do something
34
+ # }
35
+ #
36
+ # @example Receive AST results as an enumerator.
37
+ # # doctest setup require 'bel_parser' self.class.include AST::Sexp
38
+ #
39
+ # # example usage line_io = StringIO.new("\"AKT1\"\n") line,
40
+ # ast_res = ::BELParser::ASTGenerator.new.each(line_io).first.to_a
41
+ #
42
+ # @param [IO] io the IO-object to read each line from @yield
43
+ # [[Integer, String, Array<AST::Node>]] yields line number, line,
44
+ # and AST results as an {Array}
45
+ # @return [IO, #<Enumerator: #<BELParser::ASTGenerator#each>] the {IO}
46
+ # object is returned if a block is given, otherwise an
47
+ # {Enumerator} object is returned that can be iterated with
48
+ # {Enumerator#each}
49
+ def each # rubocop:disable MethodLength
50
+ if block_given?
51
+ line_enumerator = map_lines(@io.each_line.lazy)
52
+
53
+ line_number = 1
54
+ loop do
55
+ begin
56
+ line = expand_line_continuator(line_enumerator)
57
+
58
+ ast_results = []
59
+ PARSERS.map do |parser|
60
+ parser.parse(line) { |ast| ast_results << ast }
61
+ end
62
+ yield [line_number, line, ast_results]
63
+ line_number += 1
64
+ rescue StopIteration
65
+ return
66
+ end
67
+ end
68
+ else
69
+ enum_for(:each)
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ if __FILE__ == $PROGRAM_NAME
76
+ BELParser::ASTGenerator.new($stdin).each do |line_results|
77
+ line_number, line, ast_results = line_results
78
+ puts "#{line_number}: #{line}"
79
+ ast_results.each do |ast|
80
+ puts ast.to_s(1)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,3 @@
1
+ require_relative 'expression/filter'
2
+ require_relative 'expression/parser'
3
+ require_relative 'expression/validator'
@@ -0,0 +1,31 @@
1
+ require_relative '../ast_filter'
2
+
3
+ module BELParser
4
+ module Expression
5
+ # Filter will enumerate {BELParser::Parsers::AST::Node AST nodes} that make
6
+ # up BEL expressions. It selects the relevant nodes
7
+ # from an {BELParser::Parsers::AST::Node AST node} enumerator.
8
+ class Filter
9
+ # Represents BEL expression node types.
10
+ TYPES = [
11
+ :simple_statement,
12
+ :observed_term,
13
+ :nested_statement,
14
+ :term,
15
+ :parameter
16
+ ]
17
+
18
+ def initialize(ast_enum)
19
+ @ast_filter = BELParser::ASTFilter.new(ast_enum, *TYPES)
20
+ end
21
+
22
+ def each(&block)
23
+ if block_given?
24
+ @ast_filter.each(&block)
25
+ else
26
+ enum_for(:each)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end