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,38 @@
1
+ module BEL::Translator::Plugins
2
+ # BELScript plugs a translator for BEL Script into bel.rb.
3
+ # Supports multiple BEL specifications by using the
4
+ # {BELParser::Language::ExpressionValidator expression validator}.
5
+ module BelScript
6
+ ID = :bel_script
7
+ NAME = 'BEL Script Translator'
8
+ DESCRIPTION = 'A translator that reads/writes BEL nanopubs to BEL Script.'
9
+ MEDIA_TYPES = %i(application/bel)
10
+ EXTENSIONS = %i(bel)
11
+
12
+ def self.create_translator(options = {})
13
+ require 'bel'
14
+ require_relative 'bel_script/translator'
15
+ BelScriptTranslator.new
16
+ end
17
+
18
+ def self.id
19
+ ID
20
+ end
21
+
22
+ def self.name
23
+ NAME
24
+ end
25
+
26
+ def self.description
27
+ DESCRIPTION
28
+ end
29
+
30
+ def self.media_types
31
+ MEDIA_TYPES
32
+ end
33
+
34
+ def self.file_extensions
35
+ EXTENSIONS
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,125 @@
1
+ require_relative 'nanopub_serialization.rb'
2
+
3
+ # BEL Script nanopub serialization that groups nanopub by citation scoped to
4
+ # individual statement groups (i.e. BEL Script's +SET STATEMENT_GROUP+ and
5
+ # +UNSET STATEMENT_GROUP+).
6
+ #
7
+ # @example Citation serialization for a group of nanopub
8
+ # SET STATEMENT_GROUP = 12857727
9
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
10
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
11
+ # SET CellLine = "MCF 10A"
12
+ # SET TextLocation = Abstract
13
+ # complex(p(HGNC:USF1),g(HGNC:IGF2R))
14
+ #
15
+ # complex(p(HGNC:USF2),g(HGNC:IGF2R))
16
+ #
17
+ # tscript(p(HGNC:USF2)) directlyIncreases r(HGNC:IGF2R)
18
+ #
19
+ # tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
20
+ #
21
+ # SET Support = "c-Myc was present on the CDK4 promoter to the ..."
22
+ # complex(p(HGNC:MYC),g(HGNC:CDK4))
23
+ # UNSET STATEMENT_GROUP
24
+ module BEL::Translator::Plugins::BelScript::BelCitationSerialization
25
+ include BEL::Translator::Plugins::BelScript::NanopubSerialization
26
+
27
+ # Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
28
+ #
29
+ # Includes +SET AnnotationName+ and +UNSET AnnotationName+ where needed in
30
+ # order to remove duplicating annotations.
31
+ #
32
+ # @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
33
+ # @return [String] the BEL Script string
34
+ def to_bel(nanopub)
35
+ bel = ''
36
+
37
+ citation = citation_value(nanopub)
38
+ support = support_value(nanopub)
39
+ annotations = annotation_values(nanopub)
40
+
41
+ current_annotations = {}.merge(annotations)
42
+ current_annotations[:Citation] = citation if citation
43
+ current_annotations[:Support] = support if support
44
+
45
+ if !nanopub.citation.id || nanopub.citation.id.empty?
46
+ citation_id = quote('')
47
+ else
48
+ citation_id = quote_if_needed(nanopub.citation.id)
49
+ end
50
+
51
+ # Reset cumulative annotations if new citation.
52
+ if cumulative_citation == nil
53
+ bel << %Q{SET STATEMENT_GROUP = #{citation_id}\n}
54
+ cumulative_annotations.clear
55
+ elsif nanopub.citation != cumulative_citation
56
+ bel << %Q{UNSET STATEMENT_GROUP\n}
57
+ bel << "\n\n"
58
+ bel << %Q{SET STATEMENT_GROUP = #{citation_id}\n}
59
+ cumulative_annotations.clear
60
+ end
61
+
62
+ # Hang on to the last citation.
63
+ self.cumulative_citation = nanopub.citation
64
+
65
+ # UNSET unused annotations from previous nanopub.
66
+ (cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
67
+ bel << "UNSET #{unset_key}\n"
68
+ cumulative_annotations.delete(unset_key)
69
+ end
70
+
71
+ # Remove annotation if key/value was SET by a previous nanopub.
72
+ Hash[
73
+ cumulative_annotations.to_a & current_annotations.to_a
74
+ ].each do |same_k, _|
75
+ current_annotations.delete(same_k)
76
+ end
77
+
78
+ # Retain the current nanopub's annotation in cumulative set.
79
+ cumulative_annotations.merge!(current_annotations)
80
+
81
+ # SET Citation
82
+ citation = current_annotations.delete(:Citation)
83
+ if citation
84
+ bel << "SET Citation = {#{citation}}\n"
85
+ end
86
+
87
+ # SET Support
88
+ support = current_annotations.delete(:Support)
89
+ if support
90
+ bel << %Q{SET Support = "#{support}"\n}
91
+ end
92
+
93
+ # SET new or modified annotations
94
+ current_annotations.sort.each do |(name, value)|
95
+ bel << "SET #{name} = #{value}\n"
96
+ end
97
+
98
+ # Assert BEL statement
99
+ bel << "#{nanopub.bel_statement}\n"
100
+
101
+ # Separate nanopub by new line.
102
+ bel << "\n"
103
+
104
+ bel
105
+ end
106
+
107
+ private
108
+
109
+ # The cumulative citation that is active for the current nanopub. This is
110
+ # tracked in order to decide when to begin a new statement group.
111
+ attr_accessor :cumulative_citation
112
+
113
+ # Returns the cumulative +Hash+ of annotations. This *state* is used to keep
114
+ # track of the active, scoped annotations as nanopub is serialized.
115
+ def cumulative_annotations
116
+ @cumulative_annotations ||= {}
117
+ end
118
+
119
+ # Return BEL Script syntax that should completes the BEL Script document.
120
+ # For Citation serialization we will always end with the unset of a
121
+ # statement group.
122
+ def epilogue
123
+ %Q{UNSET STATEMENT_GROUP\n}
124
+ end
125
+ end
@@ -0,0 +1,109 @@
1
+ require_relative 'nanopub_serialization'
2
+
3
+ # BEL Script nanopub serialization that writes each nanopub with their full
4
+ # set of annotations (i.e. includes all `SET` and necessary `UNSET` records).
5
+ # This style is more readable because it groups all set annotations near the
6
+ # BEL statement.
7
+ #
8
+ # @example Discrete serialization for a group of nanopub
9
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
10
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
11
+ # SET CellLine = "MCF 10A"
12
+ # SET TextLocation = Abstract
13
+ # complex(p(HGNC:USF1),g(HGNC:IGF2R))
14
+ #
15
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
16
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
17
+ # SET CellLine = "MCF 10A"
18
+ # SET TextLocation = Abstract
19
+ # complex(p(HGNC:USF2),g(HGNC:IGF2R))
20
+ #
21
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
22
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
23
+ # SET CellLine = "MCF 10A"
24
+ # SET TextLocation = Abstract
25
+ # tscript(p(HGNC:USF2)) directlyIncreases r(HGNC:IGF2R)
26
+ #
27
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
28
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
29
+ # SET CellLine = "MCF 10A"
30
+ # SET TextLocation = Abstract
31
+ # tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
32
+ #
33
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
34
+ # SET Support = "c-Myc was present on the CDK4 promoter to the ..."
35
+ # SET CellLine = "MCF 10A"
36
+ # SET TextLocation = Abstract
37
+ # complex(p(HGNC:MYC),g(HGNC:CDK4))
38
+ #
39
+ # UNSET CellLine
40
+ module BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
41
+ include BEL::Translator::Plugins::BelScript::NanopubSerialization
42
+
43
+ # Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
44
+ # Includes all necessary +SET AnnotationName+ and +UNSET AnnotationName+
45
+ # records around the BEL statement.
46
+ #
47
+ # @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
48
+ # @return [String] the BEL Script string
49
+ def to_bel(nanopub)
50
+ bel = ''
51
+
52
+ citation = citation_value(nanopub)
53
+ support = support_value(nanopub)
54
+ annotations = annotation_values(nanopub)
55
+
56
+ current_annotations = {}.merge(annotations)
57
+ current_annotations[:Citation] = citation if citation
58
+ current_annotations[:Support] = support if support
59
+
60
+ # UNSET unused annotations from previous nanopub.
61
+ (cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
62
+ bel << "UNSET #{unset_key}\n"
63
+ cumulative_annotations.delete(unset_key)
64
+ end
65
+
66
+ # Retain the current nanopub's annotation in cumulative set.
67
+ cumulative_annotations.merge!(current_annotations)
68
+
69
+ # SET Citation
70
+ citation = current_annotations.delete(:Citation)
71
+ if citation
72
+ bel << "SET Citation = {#{citation}}\n"
73
+ end
74
+
75
+ # SET Support
76
+ support = current_annotations.delete(:Support)
77
+ if support
78
+ bel << %Q{SET Support = "#{support}"\n}
79
+ end
80
+
81
+ # SET new or modified annotations
82
+ current_annotations.sort.each do |(name, value)|
83
+ bel << "SET #{name} = #{value}\n"
84
+ end
85
+
86
+ # Assert BEL statement
87
+ bel << "#{nanopub.bel_statement}\n"
88
+
89
+ # Separate nanopub by new line.
90
+ bel << "\n"
91
+
92
+ bel
93
+ end
94
+
95
+ private
96
+
97
+ # Returns the cumulative +Hash+ of annotations. This *state* is used to keep
98
+ # track of the active, scoped annotations as nanopub is serialized.
99
+ def cumulative_annotations
100
+ @cumulative_annotations ||= {}
101
+ end
102
+
103
+ # Return BEL Script syntax that completes the BEL Script document.
104
+ # The empty string is returned since no ending syntax is necessary when
105
+ # serializing each nanopub discretely.
106
+ def epilogue
107
+ ""
108
+ end
109
+ end
@@ -0,0 +1,100 @@
1
+ require_relative 'nanopub_serialization.rb'
2
+
3
+ # BEL Script nanopub serialization that writes nanopubs sequentially while
4
+ # including only the necessary unsetting of annotations (i.e. BEL Script's
5
+ # +UNSET AnnotationName+ syntax).
6
+ #
7
+ # @example Top-down serialization for a group of nanopubs
8
+ # SET Citation = {"PubMed", "Journal...", "12857727", "2003-08-11", "", ""}
9
+ # SET Support = "USF1 and USF2 bound the IGF2R promoter in vitro, ..."
10
+ # SET CellLine = "MCF 10A"
11
+ # SET TextLocation = Abstract
12
+ # complex(p(HGNC:USF1),g(HGNC:IGF2R))
13
+ #
14
+ # complex(p(HGNC:USF2),g(HGNC:IGF2R))
15
+ #
16
+ # tscript(p(HGNC:USF2)) directlyIncreases r(HGNC:IGF2R)
17
+ #
18
+ # tscript(p(HGNC:USF1)) causesNoChange r(HGNC:IGF2R)
19
+ #
20
+ # SET Support = "c-Myc was present on the CDK4 promoter to the ..."
21
+ # complex(p(HGNC:MYC),g(HGNC:CDK4))
22
+ #
23
+ # UNSET CellLine
24
+ module BEL::Translator::Plugins::BelScript::BelTopDownSerialization
25
+ include BEL::Translator::Plugins::BelScript::NanopubSerialization
26
+
27
+ # Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
28
+ # Includes all necessary +SET AnnotationName+ and +UNSET AnnotationName+
29
+ # records within the scope of a citation's statement group.
30
+ #
31
+ # @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
32
+ # @return [String] the BEL Script string
33
+ def to_bel(nanopub)
34
+ bel = ''
35
+
36
+ citation = citation_value(nanopub)
37
+ support = support_value(nanopub)
38
+ annotations = annotation_values(nanopub)
39
+
40
+ current_annotations = {}.merge(annotations)
41
+ current_annotations[:Citation] = citation if citation
42
+ current_annotations[:Support] = support if support
43
+
44
+ # UNSET unused annotations from previous nanopub.
45
+ (cumulative_annotations.keys - current_annotations.keys).each do |unset_key|
46
+ bel << "UNSET #{unset_key}\n"
47
+ cumulative_annotations.delete(unset_key)
48
+ end
49
+
50
+ # Remove annotation if key/value was SET by a previous nanopub.
51
+ Hash[
52
+ cumulative_annotations.to_a & current_annotations.to_a
53
+ ].each do |same_k, _|
54
+ current_annotations.delete(same_k)
55
+ end
56
+
57
+ # Retain the current nanopub's annotation in cumulative set.
58
+ cumulative_annotations.merge!(current_annotations)
59
+
60
+ # SET Citation
61
+ citation = current_annotations.delete(:Citation)
62
+ if citation
63
+ bel << "SET Citation = {#{citation}}\n"
64
+ end
65
+
66
+ # SET Support
67
+ support = current_annotations.delete(:Support)
68
+ if support
69
+ bel << %Q{SET Support = "#{support}"\n}
70
+ end
71
+
72
+ # SET new or modified annotations
73
+ current_annotations.sort.each do |(name, value)|
74
+ bel << "SET #{name} = #{value}\n"
75
+ end
76
+
77
+ # Assert BEL statement
78
+ bel << "#{nanopub.bel_statement}\n"
79
+
80
+ # Separate nanopub by new line.
81
+ bel << "\n"
82
+
83
+ bel
84
+ end
85
+
86
+ private
87
+
88
+ # Returns the cumulative +Hash+ of annotations. This *state* is used to keep
89
+ # track of the active, scoped annotations as nanopub is serialized.
90
+ def cumulative_annotations
91
+ @cumulative_annotations ||= {}
92
+ end
93
+
94
+ # Return BEL Script syntax that completes the BEL Script document.
95
+ # The empty string is returned since no ending syntax is necessary when
96
+ # serializing in a top-down manner.
97
+ def epilogue
98
+ ""
99
+ end
100
+ end
@@ -0,0 +1,79 @@
1
+ require 'bel/quoting'
2
+
3
+ # Serializing of common {BEL::Nanopub::Nanopub nanopub} components to BEL
4
+ # Script syntax.
5
+ #
6
+ # @abstract
7
+ module BEL::Translator::Plugins::BelScript::NanopubSerialization
8
+ include BEL::Quoting
9
+
10
+ # Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
11
+ #
12
+ # @param [BEL::Nanopub::Nanopub] nanopub the nanopub to serialize
13
+ # @return [String] the BEL Script string
14
+ # @abstract Include and override {#to_bel} to implement serialization
15
+ # {BEL::Nanopub::Nanopub nanopub} to BEL Script
16
+ def to_bel(nanopub)
17
+ end
18
+
19
+ # Return BEL Script syntax that completes the BEL Script document.
20
+ #
21
+ # @abstract
22
+ def epilogue
23
+ raise NotImplementedError.new("#{self.class}#epilogue")
24
+ end
25
+
26
+ protected
27
+
28
+ def citation_value(nanopub)
29
+ citation = nanopub.citation
30
+
31
+ return nil unless citation && citation.valid?
32
+
33
+ values = citation.to_a
34
+ values.map! { |v|
35
+ v ||= ""
36
+ if v.respond_to?(:each)
37
+ %Q{"#{v.join('|')}"}
38
+ else
39
+ %Q{"#{v}"}
40
+ end
41
+ }
42
+ values.join(', ')
43
+ end
44
+
45
+ def support_value(nanopub)
46
+ support = nanopub.support
47
+
48
+ return nil unless support && support.value
49
+
50
+ value = support.value
51
+ value.gsub!("\n", "")
52
+ value.gsub!('"', %Q{\\"})
53
+ value
54
+ end
55
+
56
+ def annotation_values(nanopub)
57
+ experiment_context = nanopub.experiment_context
58
+
59
+ return {} unless experiment_context
60
+
61
+ Hash[
62
+ experiment_context.
63
+ sort_by { |obj| obj[:name].to_sym }.
64
+ map { |obj|
65
+ name = obj[:name].to_sym
66
+ value = obj[:value]
67
+
68
+ value_s =
69
+ if value.respond_to? :map
70
+ "{#{value.map { |v| quote(v) }.join(', ')}}"
71
+ else
72
+ quote(value)
73
+ end
74
+
75
+ [name, value_s]
76
+ }
77
+ ]
78
+ end
79
+ end