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,177 @@
1
+ module BELParser
2
+ # The Quoting module implements quoting rules consistent with BEL
3
+ # and BEL Script. Double quotes are used to group a string together
4
+ # which may contain whitespace or special characters.
5
+ #
6
+ # A value can either be an identifier or a string value. An
7
+ # identifier can only include the characters +[0-9A-Za-z_]+. A string
8
+ # value is necessary when at least one of +[^0-9A-Za-z_]+ exists in
9
+ # the value.
10
+ #
11
+ # Uses:
12
+ #
13
+ # BEL: The BEL parameters must be an identifier or string value.
14
+ #
15
+ # BEL Script: BEL parameters, document property values, and annotation
16
+ # values must be an identifier or string value.
17
+ module Quoting
18
+ # Declares BEL Script keywords that cause problems with the OpenBEL
19
+ # Framework parser.
20
+ Keywords = %w(SET DEFINE a g p r m).freeze
21
+
22
+ # Regular expression that matches one of {Quoting::Keywords}.
23
+ KeywordMatcher = Regexp.compile(/^(#{Keywords.join('|')})$/)
24
+
25
+ # Regular expression that matches on any non-word character.
26
+ NonWordMatcher = Regexp.compile(/[^0-9a-zA-Z_]/)
27
+
28
+ # Regular expression that matches a value surrounded by unescaped
29
+ # double quotes.
30
+ StrictQuotedMatcher = Regexp.compile(/\A".*?(?<!\\)"\Z/m)
31
+
32
+ # Regular expression that matches a value surrounded by double quotes
33
+ # that may be escaped.
34
+ LenientQuotedMatcher = Regexp.compile(/\A".*?"\Z/m)
35
+
36
+ # Regular expression that matches double quotes that are not escaped.
37
+ QuoteNotEscapedMatcher = Regexp.compile(/(?<!\\)"/m)
38
+
39
+ # Returns +value+ surrounded by double quotes. This method is idempotent
40
+ # so +value+ will only be quoted once regardless of how may times the
41
+ # method is called on it.
42
+ #
43
+ # @example Quoting a BEL parameter.
44
+ # quote("apoptotic process")
45
+ # # => "\"apoptotic process\""
46
+ # @example Escaping quotes within a value.
47
+ # quote("vesicle fusion with \"Golgi apparatus\"")
48
+ # # => "\"vesicle fusion with \\\"Golgi apparatus\\\"\""
49
+ #
50
+ # @parameter [#to_s] value a value to be quoted
51
+ # @return [String] value surrounded by double quotes
52
+ def quote(value)
53
+ string = value.to_s
54
+ unquoted = unquote(string)
55
+ escaped = unquoted.gsub(QuoteNotEscapedMatcher, '\\"')
56
+ %("#{escaped}")
57
+ end
58
+
59
+ # Returns +value+ with surrounded quotes removed.
60
+ #
61
+ # @example Unquoting a BEL parameter.
62
+ # unquote("\"apoptotic process\"")
63
+ # # => "apoptotic process"
64
+ # @example Escaped quotes are preserved.
65
+ # unquote("\"vesicle fusion with \"Golgi apparatus\"\"")
66
+ #
67
+ # @parameter [#to_s] value a value to be unquoted
68
+ # @return [String] value with surrounding double quotes removed
69
+ def unquote(value)
70
+ string = value.to_s
71
+ if string =~ StrictQuotedMatcher
72
+ string[1...-1]
73
+ else
74
+ string
75
+ end
76
+ end
77
+
78
+ # Returns +value+ with quoting applied only if necessary. A +value+
79
+ # consisting of only word character (e.g. [0-9A-Za-z_]) does not need
80
+ # quoting. A +value+ consisting of at least one non-word character
81
+ # (e.g. [^0-9A-Za-z_]) will requiring quoting.
82
+ #
83
+ # @example Quotes added when value includes spaces.
84
+ # quote_if_needed("apoptotic process")
85
+ # # => "\"apoptotic process\""
86
+ # @example Quotes added when value includes double quote.
87
+ # quote_if_needed("vesicle fusion with \"Golgi apparatus\"")
88
+ # # => "\"vesicle fusion with \\\"Golgi apparatus\\\"\""
89
+ # @example No quotes necessary for identifier.
90
+ # quote_if_needed("AKT1_HUMAN")
91
+ # # => "AKT1_HUMAN"
92
+ #
93
+ # @parameter [#to_s] value that may be quoted
94
+ # @return [String] original value or quoted value
95
+ def quote_if_needed(value)
96
+ if string_value?(value)
97
+ quote(value)
98
+ else
99
+ value.to_s
100
+ end
101
+ end
102
+
103
+ # Returns whether the +value+ is surrounded by double quotes.
104
+ #
105
+ # @example Returns +true+ when value is quoted.
106
+ # quoted?("\"vesicle fusion with \"Golgi apparatus\"")
107
+ # # => true
108
+ # @example Returns +false+ when value is not quoted.
109
+ # quoted?("apoptotic process")
110
+ # # => false
111
+ #
112
+ # @parameter [#to_s] value to test
113
+ # @return [Boolean] +true+ if +value+ is quoted, +false+ if
114
+ # +value+ is not quoted
115
+ def quoted?(value)
116
+ string = value.to_s
117
+ (string =~ LenientQuotedMatcher) != nil
118
+ end
119
+
120
+ # Returns whether the +value+ is not surrounded by double quotes.
121
+ #
122
+ # @example Returns +true+ when value is not quoted.
123
+ # unquoted?("apoptotic process")
124
+ # # => true
125
+ # @example Returns +false+ when value is quoted.
126
+ # unquoted?("\"vesicle fusion with \"Golgi apparatus\"")
127
+ # # => false
128
+ #
129
+ # @parameter [#to_s] value to test
130
+ # @return [Boolean] +true+ if +value+ is not quoted, +false+ if
131
+ # +value+ is quoted
132
+ def unquoted?(value)
133
+ !quoted?(value)
134
+ end
135
+
136
+ # Returns whether the +value+ represents an identifier. An
137
+ # identifier consists of only word characters (e.g. [0-9A-Za-z_]).
138
+ #
139
+ # @example Returns +true+ when representing an identifier.
140
+ # identifier_value?("AKT1_HUMAN")
141
+ # # => true
142
+ # @example Returns +false+ when not representing an identifier.
143
+ # identifier_value?("apoptotic process")
144
+ # # => false
145
+ #
146
+ # @parameter [#to_s] value to test
147
+ # @return [Boolean] +true+ if +value+ is an identifier,
148
+ # +false+ if +value+ is not an identifier
149
+ def identifier_value?(value)
150
+ string = value.to_s
151
+ [NonWordMatcher, KeywordMatcher].none? do |matcher|
152
+ matcher.match string
153
+ end
154
+ end
155
+
156
+ # Returns whether the +value+ represents a string value. A string
157
+ # value consists of at least one non-word character
158
+ # (e.g. [^0-9A-Za-z_]).
159
+ #
160
+ # @example Returns +true+ when representing a string value.
161
+ # string_value?("apoptotic process")
162
+ # # => true
163
+ # @example Returns +false+ when not representing a string value.
164
+ # string_value?("AKT1_HUMAN")
165
+ # # => false
166
+ #
167
+ # @parameter [#to_s] value to test
168
+ # @return [Boolean] +true+ if +value+ is a string value,
169
+ # +false+ if +value+ is not a string value
170
+ def string_value?(value)
171
+ string = value.to_s
172
+ [NonWordMatcher, KeywordMatcher].any? do |matcher|
173
+ matcher.match string
174
+ end
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,56 @@
1
+ require_relative 'value'
2
+
3
+ module BELParser
4
+ module Resource
5
+ # Concept
6
+ class Concept
7
+ include Value
8
+
9
+ attr_reader :dataset, :uri, :name, :identifier,
10
+ :title, :synonyms, :encodings
11
+
12
+ def initialize(dataset, uri, pref_label, identifier,
13
+ title, alt_labels, types)
14
+
15
+ @dataset = dataset
16
+ @uri = uri
17
+ @name = pref_label.to_s
18
+ @identifier = identifier.to_s
19
+ @title = title.to_s
20
+ @synonyms = alt_labels.to_s.split('|')
21
+ @encodings = convert_encoding_types(types.to_s)
22
+ end
23
+
24
+ private
25
+
26
+ def convert_encoding_types(types)
27
+ types.split('|').map do |type|
28
+ case type
29
+ when /AbundanceConcept$/
30
+ :A
31
+ when /BiologicalProcessConcept$/
32
+ :B
33
+ when /ComplexConcept$/
34
+ :C
35
+ when /GeneConcept$/
36
+ :G
37
+ when /LocationConcept$/
38
+ :L
39
+ when /MicroRNAConcept$/
40
+ :M
41
+ when /MolecularActivityConcept$/
42
+ :T
43
+ when /PathologyConcept$/
44
+ :O
45
+ when /ProteinConcept$/
46
+ :P
47
+ when /ProteinModificationConcept$/
48
+ :E
49
+ when /RNAConcept$/
50
+ :R
51
+ end
52
+ end.compact
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,35 @@
1
+ require_relative 'dataset'
2
+
3
+ module BELParser
4
+ module Resource
5
+ #ConceptScheme
6
+ class ConceptScheme
7
+ include Dataset
8
+
9
+ attr_reader :identifier, :domain, :keyword, :name, :types
10
+
11
+ def initialize(identifier, domain, prefix, name, types)
12
+ @identifier = identifier.to_s
13
+ @domain = domain.to_s
14
+ @keyword = prefix.to_s
15
+ @name = name.to_s
16
+ @types = convert_types(types.to_s)
17
+ end
18
+
19
+ private
20
+
21
+ def convert_types(types)
22
+ types.split('|').map do |type|
23
+ case type
24
+ when /NamespaceConceptScheme$/
25
+ Dataset::NAMESPACE
26
+ when /AnnotationConceptScheme$/
27
+ Dataset::ANNOTATION
28
+ else
29
+ nil
30
+ end
31
+ end.compact
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ module BELParser
2
+ module Resource
3
+ # Dataset
4
+ module Dataset
5
+
6
+ ANNOTATION = :annotation
7
+ NAMESPACE = :namespace
8
+
9
+ def identifier
10
+ raise NotImplementedError, "#{__method__} is not implemented."
11
+ end
12
+
13
+ def keyword
14
+ raise NotImplementedError, "#{__method__} is not implemented."
15
+ end
16
+
17
+ def domain
18
+ raise NotImplementedError, "#{__method__} is not implemented."
19
+ end
20
+
21
+ def annotation_resource?
22
+ types.include?(ANNOTATION)
23
+ end
24
+
25
+ def namespace_resource?
26
+ types.include?(NAMESPACE)
27
+ end
28
+
29
+ def types
30
+ raise NotImplementedError, "#{__method__} is not implemented."
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,89 @@
1
+ require 'concurrent/hash'
2
+
3
+ module BELParser
4
+ module Resource
5
+ module EagerReader
6
+
7
+ EMPTY_ARRAY = [].freeze
8
+ CACHE_KEYS = [:name, :identifier, :title, :synonyms].freeze
9
+
10
+ def resources
11
+ @resources ||= Concurrent::Hash.new
12
+ end
13
+
14
+ def locks
15
+ @locks ||= Concurrent::Hash.new
16
+ end
17
+
18
+ def load_threads
19
+ @load_threads ||= Concurrent::Hash.new
20
+ end
21
+
22
+ def load_values(identifier)
23
+ lock = locks[identifier] ||= Mutex.new
24
+ if identifier.include?('taxonomy')
25
+ puts "load_all_values, try lock..."
26
+ end
27
+ if lock.try_lock
28
+ load_threads[identifier] = Thread.new do
29
+ value_hash = {
30
+ :name => {},
31
+ :identifier => {},
32
+ :title => {},
33
+ :synonyms => {}
34
+ }
35
+ retrieve_values_from_resource(identifier).each do |concept|
36
+ value_hash[:name][concept.name] = concept
37
+ value_hash[:identifier][concept.identifier] = concept
38
+ value_hash[:title][concept.title] = concept
39
+ concept.synonyms.each do |synonym|
40
+ value_hash[:synonyms][synonym] = concept
41
+ end
42
+ end
43
+ resources[identifier] = value_hash
44
+ lock.unlock
45
+ end
46
+ end
47
+ end
48
+
49
+ def retrieve_resource(resource_identifier)
50
+ if !resources.key?(resource_identifier)
51
+ load_all_values(resource_identifier)
52
+ end
53
+ end
54
+
55
+ def retrieve_value_from_resource(resource_identifier, value)
56
+ if !resources.key?(resource_identifier)
57
+ load_all_values(resource_identifier)
58
+ if load_threads.key?(resource_identifier)
59
+ load_thread = load_threads[resource_identifier]
60
+ load_thread.join unless load_thread == Thread.current
61
+ end
62
+ end
63
+
64
+ concepts = resources[resource_identifier]
65
+ return nil unless concepts
66
+ CACHE_KEYS.each do |key|
67
+ cached_concept = concepts[key].fetch(value, nil)
68
+ return cached_concept if cached_concept
69
+ end
70
+ nil
71
+ end
72
+
73
+ def retrieve_values_from_resource(resource_identifier)
74
+ if !resources.key?(resource_identifier)
75
+ load_all_values(resource_identifier)
76
+ if load_threads.key?(resource_identifier)
77
+ load_thread = load_threads[resource_identifier]
78
+ load_thread.join unless load_thread == Thread.current
79
+ end
80
+ end
81
+
82
+ concepts = resources[resource_identifier]
83
+ return nil unless concepts
84
+ concepts[:name].values
85
+ end
86
+
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,51 @@
1
+ require 'concurrent/hash'
2
+
3
+ require_relative 'sparql_reader'
4
+
5
+ module BELParser
6
+ module Resource
7
+ # EagerSPARQLReader
8
+ class EagerSPARQLReader < SPARQLReader
9
+ def initialize(sparql_endpoint_url, validate_url = true)
10
+ @resources = Concurrent::Hash.new
11
+ @locks = Concurrent::Hash.new
12
+ super
13
+ end
14
+
15
+ def retrieve_resource(resource_identifier)
16
+ if @resources.key?(resource_identifier)
17
+ concepts = @resources[resource_identifier]
18
+ concepts[value]
19
+ else
20
+ lock = @locks[resource_identifier] ||= Mutex.new
21
+ if lock.try_lock
22
+ Thread.new do
23
+ concepts = retrieve_values_from_resource(resource_identifier).to_a
24
+ @resources[resource_identifier] =
25
+ Hash[
26
+ concepts.map do |c|
27
+ [c.name, c]
28
+ end
29
+ ]
30
+ lock.unlock
31
+ end
32
+ end
33
+
34
+ super
35
+ end
36
+ end
37
+
38
+ def retrieve_value_from_resource(resource_identifier, value)
39
+ concepts = @resources[resource_identifier]
40
+ return super unless concepts
41
+ concepts[value]
42
+ end
43
+
44
+ def retrieve_values_from_resource(resource_identifier)
45
+ concepts = @resources[resource_identifier]
46
+ return super unless concepts
47
+ concepts
48
+ end
49
+ end
50
+ end
51
+ end