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,46 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/quoting'
3
+ require 'bel_parser/parsers/ast/node'
4
+ require 'concurrent/hash'
5
+ require_relative '../keywords'
6
+ require_relative '../state_function'
7
+
8
+ module BELParser
9
+ module Script
10
+ module State
11
+ class Unset
12
+ extend StateFunction
13
+ extend BELParser::Script::Keyword
14
+ extend BELParser::Quoting
15
+
16
+ TARGET_NODE = BELParser::Parsers::AST::Unset
17
+
18
+ def self.consume(ast_node, script_context)
19
+ return nil unless ast_node.is_a?(TARGET_NODE)
20
+ name_string = ast_node.name.identifier.string_literal
21
+ case name_string
22
+ when /\ASTATEMENT_GROUP\Z/
23
+ handle_statement_group(script_context)
24
+ else
25
+ handle_annotation(name_string, script_context)
26
+ end
27
+ end
28
+
29
+ def self.handle_annotation(name, script_context)
30
+ script_context[:annotations] ||= Concurrent::Hash.new
31
+ script_context[:annotations].delete(name)
32
+ script_context[:citation] = nil if is_citation?(name)
33
+ end
34
+ private_class_method :handle_annotation
35
+
36
+ def self.handle_statement_group(script_context)
37
+ script_context.delete(:statement_group)
38
+ script_context[:annotations] ||= Concurrent::Hash.new
39
+ script_context[:annotations].clear
40
+ script_context[:citation] = nil
41
+ end
42
+ private_class_method :handle_statement_group
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,49 @@
1
+ module BELParser
2
+ module Script
3
+ # StateAggregator aggregates BEL Script state for each
4
+ # {BELParser::Parsers::AST::Node AST node} it processes.
5
+ class StateAggregator
6
+
7
+ STATE_PATH = 'state'
8
+
9
+ def initialize(ast_enum, options = {})
10
+ @ast_enum = ast_enum
11
+ @script_context = {}.merge(options)
12
+
13
+ StateAggregator.require_script_path
14
+ @state_functions = StateAggregator.state_constants(State)
15
+ end
16
+
17
+ def each
18
+ if block_given?
19
+ @ast_enum.each do |(line_number, line, ast_node)|
20
+ ast_node.traverse.each do |node|
21
+ @state_functions.each do |func|
22
+ func.consume(node, @script_context)
23
+ end
24
+ end
25
+ yield [line_number, line, ast_node, @script_context]
26
+ end
27
+ else
28
+ enum_for(:each)
29
+ end
30
+ end
31
+
32
+ def self.require_script_path
33
+ base_path = File.expand_path(File.dirname(__FILE__)) + File::SEPARATOR
34
+ Dir[File.join(base_path, STATE_PATH, '*.rb')]
35
+ .each do |ruby_file|
36
+ ruby_file.sub!(/^#{Regexp.escape(base_path)}/, '')
37
+ require_relative ruby_file
38
+ end
39
+ end
40
+
41
+ def self.state_constants(mod)
42
+ mod.constants.collect do |symbol|
43
+ const = mod.const_get(symbol)
44
+ const if const.respond_to?(:consume)
45
+ end.compact
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,10 @@
1
+ module BELParser
2
+ module Script
3
+ module StateFunction
4
+ # @abstract Extend {StateFunction} and override {#consume}.
5
+ def consume(ast_node, script_context)
6
+ raise NotImplementedError, "#{__method__} is not implemented."
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,46 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/expression_validator'
3
+ require 'bel_parser/language/syntax_function'
4
+ require 'bel_parser/language/syntax_warning'
5
+ require 'bel_parser/quoting'
6
+ require 'bel_parser/parsers/ast/node'
7
+ require 'concurrent/hash'
8
+
9
+ module BELParser
10
+ module Script
11
+ module Syntax
12
+ class ExpressionValidation
13
+ extend BELParser::Language::Syntax::SyntaxFunction
14
+ extend BELParser::Quoting
15
+
16
+ TARGET_NODES = [
17
+ BELParser::Parsers::AST::ObservedTerm,
18
+ BELParser::Parsers::AST::SimpleStatement,
19
+ BELParser::Parsers::AST::NestedStatement
20
+ ]
21
+ EXP_VALIDATOR = BELParser::Language::ExpressionValidator
22
+
23
+ def self.map(ast_node, script_context)
24
+ return nil unless TARGET_NODES.include?(ast_node.class)
25
+ return nil unless script_context.key?(:specification)
26
+
27
+ validator = expression_validator(script_context)
28
+ validator.validate(ast_node).select(&:failure?)
29
+ end
30
+
31
+ def self.expression_validator(script_context)
32
+ unless defined? @expression_validator
33
+ spec, namespaces, reader =
34
+ script_context
35
+ .values_at(
36
+ :specification,
37
+ :namespace_definitions,
38
+ :resource_reader)
39
+ @expression_validator = EXP_VALIDATOR.new(spec, namespaces, reader)
40
+ end
41
+ @expression_validator
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,49 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/syntax_function'
3
+ require 'bel_parser/language/syntax_error'
4
+ require 'bel_parser/quoting'
5
+ require 'bel_parser/parsers/ast/node'
6
+ require 'concurrent/hash'
7
+
8
+ module BELParser
9
+ module Script
10
+ module Syntax
11
+ class InvalidRegexPattern
12
+ extend BELParser::Language::Syntax::SyntaxFunction
13
+ extend BELParser::Quoting
14
+
15
+ TARGET_NODE = BELParser::Parsers::AST::Pattern
16
+
17
+ def self.map(ast_node, script_context)
18
+ return nil unless ast_node.is_a?(TARGET_NODE)
19
+ pattern = unquote(ast_node.string.string_literal)
20
+ begin
21
+ Regexp.new(pattern)
22
+ nil
23
+ rescue RegexpError => error
24
+ InvalidRegexPatternError.new(ast_node, pattern, error.to_s)
25
+ end
26
+ end
27
+ end
28
+
29
+ # InvalidRegexPattern indicates that a pattern represented an invalid
30
+ # regular expression.
31
+ class InvalidRegexPatternError < BELParser::Language::Syntax::SyntaxError
32
+ # Gets the invalid pattern.
33
+ attr_reader :pattern
34
+
35
+ def initialize(pattern_node, pattern, error_msg)
36
+ super(pattern_node, nil)
37
+ @pattern = pattern
38
+ @error_msg = error_msg
39
+ end
40
+
41
+ def msg
42
+ <<-MSG.gsub(/^ +/, '').delete("\n")
43
+ "#@pattern" is not a valid regular expression (#@error_msg).
44
+ MSG
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,61 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/syntax_function'
3
+ require 'bel_parser/language/syntax_error'
4
+ require 'bel_parser/quoting'
5
+ require 'bel_parser/parsers/ast/node'
6
+ require 'concurrent/hash'
7
+ require_relative '../keywords'
8
+
9
+ module BELParser
10
+ module Script
11
+ module Syntax
12
+ class UndefinedAnnotation
13
+ extend BELParser::Language::Syntax::SyntaxFunction
14
+ extend BELParser::Script::Keyword
15
+
16
+ TARGET_NODE = BELParser::Parsers::AST::Set
17
+
18
+ def self.map(ast_node, script_context)
19
+ return nil unless ast_node.is_a?(TARGET_NODE)
20
+ name_string = ast_node.name.identifier.string_literal
21
+ annotation_definitions =
22
+ script_context[:annotation_definitions] ||= Concurrent::Hash.new
23
+
24
+ return nil if is_implicit_annotation?(name_string)
25
+ return nil if annotation_definitions.key?(name_string)
26
+ UndefinedAnnotationError.new(
27
+ ast_node,
28
+ name_string,
29
+ script_context[:annotation_definitions])
30
+ end
31
+ end
32
+
33
+ # UndefinedAnnotationError represents an undefined annotation seen when
34
+ # checking a SET annotation.
35
+ class UndefinedAnnotationError < BELParser::Language::Syntax::SyntaxError
36
+ # Gets the undefined prefix.
37
+ attr_reader :prefix
38
+
39
+ def initialize(set_node, prefix, annotation_definitions)
40
+ super(set_node, nil)
41
+ @prefix = prefix
42
+ @annotation_definitions = annotation_definitions
43
+ end
44
+
45
+ def msg
46
+ defined_annotations =
47
+ if @annotation_definitions.empty?
48
+ 'No annotations are defined.'
49
+ else
50
+ annotation_prefixes = @annotation_definitions.keys.join(', ')
51
+ "Defined annotations: #{annotation_prefixes}"
52
+ end
53
+ <<-MSG.gsub(/^ +/, '').delete("\n")
54
+ Annotation definition is missing for "#@prefix".
55
+ #{defined_annotations}
56
+ MSG
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,84 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/syntax_function'
3
+ require 'bel_parser/language/syntax_warning'
4
+ require 'bel_parser/quoting'
5
+ require 'bel_parser/parsers/ast/node'
6
+ require 'concurrent/hash'
7
+ require_relative '../keywords'
8
+
9
+ module BELParser
10
+ module Script
11
+ module Syntax
12
+ class UndefinedAnnotationValue
13
+ extend BELParser::Language::Syntax::SyntaxFunction
14
+ extend BELParser::Quoting
15
+ extend BELParser::Script::Keyword
16
+
17
+ TARGET_NODE = BELParser::Parsers::AST::Set
18
+ LIST_NODE = BELParser::Parsers::AST::List
19
+
20
+ def self.map(ast_node, script_context)
21
+ return nil unless ast_node.is_a?(TARGET_NODE)
22
+ name, value = ast_node.children
23
+ name_string = ast_node.name.identifier.string_literal
24
+
25
+ return nil if is_implicit_annotation?(name_string)
26
+ dataset = annotation(name_string, script_context)
27
+ return nil unless dataset
28
+
29
+ rr = script_context[:resource_reader]
30
+ value_node = ast_node.value.children[0]
31
+ if value_node.is_a?(LIST_NODE)
32
+ value_node
33
+ .list_items.map { |li| li.children[0].string_literal }
34
+ .map do |string|
35
+ map_value(ast_node, name_string, string, dataset.identifier, rr)
36
+ end
37
+ else
38
+ map_value(
39
+ ast_node,
40
+ name_string,
41
+ value_node.string_literal,
42
+ dataset.identifier,
43
+ rr)
44
+ end
45
+ end
46
+
47
+ def self.annotation(name_string, script_context)
48
+ hash =
49
+ script_context[:annotation_definitions] ||= Concurrent::Hash.new
50
+ type, definition = hash[name_string]
51
+ type == :url ? definition : nil
52
+ end
53
+
54
+ def self.map_value(ast_node, name_string, value_string, identifier, rr)
55
+ value_string = unquote(value_string)
56
+ value = rr.retrieve_value_from_resource(identifier, value_string)
57
+ UndefinedAnnotationValueWarning.new(
58
+ ast_node,
59
+ name_string,
60
+ value_string) unless value
61
+ end
62
+ end
63
+
64
+ # UndefinedAnnotationValueWarning represents an undefined annotation value
65
+ # while checking a SET annotation.
66
+ class UndefinedAnnotationValueWarning < BELParser::Language::Syntax::SyntaxWarning
67
+ # Gets the prefix.
68
+ attr_reader :prefix
69
+ # Gets the undefined annotation value.
70
+ attr_reader :value
71
+
72
+ def initialize(set_node, prefix, value)
73
+ super(set_node, nil)
74
+ @prefix = prefix
75
+ @value = value
76
+ end
77
+
78
+ def msg
79
+ %(Undefined annotation value "#@value" for annotation "#@prefix".)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,54 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/syntax_function'
3
+ require 'bel_parser/language/syntax_error'
4
+ require 'bel_parser/quoting'
5
+ require 'bel_parser/parsers/ast/node'
6
+ require 'concurrent/hash'
7
+
8
+ module BELParser
9
+ module Script
10
+ module Syntax
11
+ class UnresolvableNamespace
12
+ extend BELParser::Language::Syntax::SyntaxFunction
13
+ extend BELParser::Quoting
14
+
15
+ TARGET_NODE = BELParser::Parsers::AST::NamespaceDefinition
16
+
17
+ def self.map(ast_node, script_context)
18
+ return nil unless ast_node.is_a?(TARGET_NODE)
19
+ resource_reader = script_context[:resource_reader]
20
+
21
+ keyword, domain = ast_node.children
22
+ if domain.url?
23
+ url = unquote(domain.child.string.string_literal)
24
+ unless resource_reader.retrieve_resource(url)
25
+ prefix = keyword.identifier.string_literal
26
+ return UnresolvableNamespaceError.new(ast_node, prefix, url)
27
+ end
28
+ end
29
+
30
+ nil
31
+ end
32
+ end
33
+
34
+ # UnresolvableNamespaceError indicates that a namespace resource could
35
+ # not be resolved.
36
+ class UnresolvableNamespaceError < BELParser::Language::Syntax::SyntaxError
37
+ # Gets the unresolvable namespace prefix.
38
+ attr_reader :prefix
39
+ # Gets the unresolvable namespace identifier.
40
+ attr_reader :identifier
41
+
42
+ def initialize(define_namespace_node, prefix, identifier)
43
+ super(define_namespace_node, nil)
44
+ @prefix = prefix
45
+ @identifier = identifier
46
+ end
47
+
48
+ def msg
49
+ %(Could not resolve "#@prefix" with identifier "#@identifier".)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,59 @@
1
+ require 'bel_parser/language'
2
+ require 'bel_parser/language/syntax_function'
3
+ require 'bel_parser/language/syntax_error'
4
+ require 'bel_parser/quoting'
5
+ require 'bel_parser/parsers/ast/node'
6
+ require 'concurrent/hash'
7
+ require_relative '../keywords'
8
+
9
+ module BELParser
10
+ module Script
11
+ module Syntax
12
+ class UnsupportedBELVersion
13
+ extend BELParser::Language::Syntax::SyntaxFunction
14
+ extend BELParser::Quoting
15
+ extend Keyword
16
+
17
+ TARGET_NODE = BELParser::Parsers::AST::DocumentProperty
18
+
19
+ def self.map(ast_node, script_context)
20
+ return nil unless ast_node.is_a?(TARGET_NODE)
21
+ name, value = ast_node.children
22
+ name_string = name.identifier.string_literal
23
+ return nil unless is_bel_version?(name_string)
24
+
25
+ value_string = unquote(value.children[0].string_literal)
26
+ begin
27
+ BELParser::Language.specification(value_string)
28
+ nil
29
+ rescue ArgumentError
30
+ latest_version = BELParser::Language.latest_supported_version
31
+ latest_spec = BELParser::Language.specification(latest_version)
32
+ script_context[:specification] = latest_spec
33
+ UnsupportedBELVersionWarning.new(ast_node, value_string)
34
+ end
35
+ end
36
+ end
37
+
38
+ # UnsupportedBELVersionError represents the use of an unsupported
39
+ # BEL version string.
40
+ class UnsupportedBELVersionWarning < BELParser::Language::Syntax::SyntaxWarning
41
+ # Gets the unsupported bel version.
42
+ attr_reader :unsupported_version
43
+
44
+ def initialize(document_property_node, unsupported_version)
45
+ super(document_property_node, nil)
46
+ @unsupported_version = unsupported_version
47
+ @latest = BELParser::Language.latest_supported_version
48
+ end
49
+
50
+ def msg
51
+ <<-MSG.gsub(/^ +/, '').delete("\n")
52
+ Unsupported BEL version "#@unsupported_version".
53
+ Setting BEL version to the latest supported version "#@latest".
54
+ MSG
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end