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,21 @@
1
+ require_relative 'dataset'
2
+
3
+ # FileResource is a {Dataset} description obtained from a Annotation or
4
+ # Namespace file.
5
+ module BELParser
6
+ module Resource
7
+ class FileResource
8
+ include Dataset
9
+
10
+ attr_reader :identifier, :domain, :keyword, :name, :types
11
+
12
+ def initialize(identifier, domain, keyword, name, type)
13
+ @identifier = identifier.to_s
14
+ @domain = domain.to_s
15
+ @keyword = keyword.to_s
16
+ @name = name.to_s
17
+ @types = [type]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ require_relative 'value'
2
+
3
+ # FileResourceValue is a {Value} obtained from a Annotation or Namespace
4
+ # file.
5
+ module BELParser
6
+ module Resource
7
+ class FileResourceValue
8
+ include Value
9
+
10
+ attr_reader :dataset, :name, :encodings
11
+
12
+ def initialize(dataset, name, encodings)
13
+ @dataset = dataset
14
+ @name = name
15
+ @encodings =
16
+ if dataset.annotation_resource? && !dataset.namespace_resource?
17
+ nil
18
+ else
19
+ encodings.chars.map(&:to_sym)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,246 @@
1
+ require 'erb'
2
+ require 'rdf'
3
+ require 'rdf/vocab'
4
+ require 'rdf/jena'
5
+
6
+ require_relative 'reader'
7
+ require_relative 'lru_reader'
8
+ require_relative 'concept'
9
+ require_relative 'concept_scheme'
10
+
11
+ module BELParser
12
+ module Resource
13
+ class JenaTDBReader
14
+ include Reader
15
+ prepend LRUReader
16
+
17
+ BELV = RDF::Vocabulary.new('http://www.openbel.org/vocabulary/')
18
+ SKOS = RDF::Vocab::SKOS
19
+ DC = RDF::Vocab::DC
20
+ VALUE_PREDICATE_ORDER = [
21
+ SKOS.prefLabel,
22
+ DC.identifier,
23
+ DC.title,
24
+ SKOS.altLabel
25
+ ]
26
+
27
+ def initialize(tdb_directory_path)
28
+ @rdf = RDF::Jena::Repository.new(tdb_directory_path)
29
+ end
30
+
31
+ def retrieve_resource(identifier)
32
+ uri = RDF::URI(identifier)
33
+ domain, prefix, pref_label = nil
34
+ types = []
35
+ @rdf.query([:subject => uri]).each do |solution|
36
+ case solution.predicate
37
+ when RDF.type
38
+ types << solution.object
39
+ when BELV.domain
40
+ domain = solution.object.to_s
41
+ when BELV.prefix
42
+ prefix = solution.object.to_s
43
+ when SKOS.prefLabel
44
+ pref_label = solution.object.to_s
45
+ end
46
+ end
47
+ return nil unless types.any? do |type_uri|
48
+ type_uri == BELV.AnnotationConceptScheme || type_uri == BELV.NamespaceConceptScheme
49
+ end
50
+ ConceptScheme.new(uri, domain, prefix, pref_label, types)
51
+ end
52
+
53
+ def retrieve_value_from_resource(identifier, value)
54
+ concept_scheme = retrieve_resource(identifier)
55
+ return nil unless concept_scheme
56
+
57
+ template_binding = binding
58
+ sparql_query = RESOLVE_CONCEPT.result(template_binding)
59
+ to_concept = method(:hash_to_concept).to_proc.curry[concept_scheme]
60
+
61
+ @rdf.query_execute(sparql_query).map(&to_concept)
62
+ end
63
+
64
+ def retrieve_values_from_resource(identifier)
65
+ concept_scheme = retrieve_resource(identifier)
66
+ return nil unless concept_scheme
67
+
68
+ template_binding = binding
69
+ sparql_query = RESOLVE_CONCEPTS.result(template_binding)
70
+ to_concept = method(:hash_to_concept).to_proc.curry[concept_scheme]
71
+
72
+ @rdf.query_execute(sparql_query).map(&to_concept)
73
+ end
74
+
75
+ private
76
+
77
+ def find_value_uris(resource_uri, value)
78
+ VALUE_PREDICATE_ORDER.each do |predicate|
79
+ subjects =
80
+ @rdf.query([:predicate => predicate, :object => value])
81
+ .select do |stmt|
82
+ @rdf.has_statement?(
83
+ RDF::Statement(stmt.subject, SKOS.inScheme, resource_uri))
84
+ end.map(&:subject)
85
+
86
+ if !subjects.empty?
87
+ return subjects
88
+ end
89
+ end
90
+
91
+ []
92
+ end
93
+
94
+ def hash_to_concept(concept_scheme, hash)
95
+ Concept.new(concept_scheme,
96
+ *hash.values_at('concept', 'prefLabel', 'identifier', 'title',
97
+ 'altLabels', 'types'))
98
+ end
99
+
100
+ RESOLVE_CONCEPT = ERB.new(<<-SPARQL)
101
+ prefix belv: <http://www.openbel.org/vocabulary/>
102
+ prefix dct: <http://purl.org/dc/terms/>
103
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
104
+ prefix skos: <http://www.w3.org/2004/02/skos/core#>
105
+ select ?concept ?prefLabel ?identifier ?title
106
+ (group_concat(distinct(?type);separator='|') as ?types)
107
+ (group_concat(distinct(?altLabel);separator='|') as ?altLabels)
108
+ where {
109
+ {?concept skos:prefLabel "<%= value %>"}
110
+ UNION
111
+ {?concept dct:identifier "<%= value %>"}
112
+ UNION
113
+ {?concept dct:title "<%= value %>"}
114
+ UNION
115
+ {?concept skos:altLabel "<%= value %>"}
116
+
117
+ ?concept skos:inScheme <<%= identifier %>> .
118
+ ?concept rdf:type ?type .
119
+
120
+ ?concept skos:prefLabel ?prefLabel .
121
+ ?concept dct:identifier ?identifier .
122
+ optional {
123
+ ?concept dct:title ?title .
124
+ ?concept skos:altLabel ?altLabel .
125
+ }
126
+ }
127
+ group by ?concept ?prefLabel ?identifier ?title
128
+ SPARQL
129
+
130
+ RESOLVE_CONCEPTS = ERB.new(<<-SPARQL)
131
+ prefix belv: <http://www.openbel.org/vocabulary/>
132
+ prefix dct: <http://purl.org/dc/terms/>
133
+ prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
134
+ prefix skos: <http://www.w3.org/2004/02/skos/core#>
135
+ select ?concept ?prefLabel ?identifier ?title
136
+ (group_concat(distinct(?type);separator='|') as ?types)
137
+ (group_concat(distinct(?altLabel);separator='|') as ?altLabels)
138
+ where {
139
+ ?concept skos:inScheme <<%= identifier %>> .
140
+ ?concept rdf:type ?type .
141
+ ?concept skos:prefLabel ?prefLabel .
142
+ optional {
143
+ ?concept dct:identifier ?identifier .
144
+ ?concept dct:title ?title .
145
+ ?concept skos:altLabel ?altLabel
146
+ }
147
+ }
148
+ group by ?concept ?prefLabel ?identifier ?title
149
+ SPARQL
150
+
151
+ #ConceptScheme
152
+ class ConceptScheme
153
+ include Dataset
154
+
155
+ attr_reader :identifier, :domain, :keyword, :name, :types
156
+
157
+ def initialize(uri, domain, prefix, name, types)
158
+ @identifier = uri
159
+ @domain = domain.to_s
160
+ @keyword = prefix.to_s
161
+ @name = name.to_s
162
+ @types = convert_types(types)
163
+ end
164
+
165
+ private
166
+
167
+ def convert_types(types)
168
+ types.map do |type|
169
+ case type
170
+ when BELV.NamespaceConceptScheme
171
+ Dataset::NAMESPACE
172
+ when BELV.AnnotationConceptScheme
173
+ Dataset::ANNOTATION
174
+ end
175
+ end.compact
176
+ end
177
+ end
178
+
179
+ class Concept
180
+ include Value
181
+
182
+ attr_reader :dataset, :uri, :name, :identifier,
183
+ :title, :synonyms, :encodings
184
+
185
+ def initialize(dataset, uri, pref_label, identifier,
186
+ title, alt_labels, types)
187
+
188
+ @dataset = dataset
189
+ @uri = uri
190
+ @name = pref_label.to_s
191
+ @identifier = identifier.to_s
192
+ @title = title.to_s
193
+ @synonyms =
194
+ if alt_labels.respond_to?(:each)
195
+ alt_labels.map(&:to_s)
196
+ else
197
+ alt_labels.to_s.split('|')
198
+ end
199
+ @encodings =
200
+ if types.respond_to?(:each)
201
+ convert_encoding_types(types.map(&:to_s))
202
+ else
203
+ convert_encoding_types(types.to_s.split('|'))
204
+ end
205
+ end
206
+
207
+ private
208
+
209
+ def convert_encoding_types(types)
210
+ types.map do |type|
211
+ case type
212
+ when BELV.AbundanceConcept
213
+ :A
214
+ when BELV.BiologicalProcessConcept
215
+ :B
216
+ when BELV.ComplexConcept
217
+ :C
218
+ when BELV.GeneConcept
219
+ :G
220
+ when BELV.LocationConcept
221
+ :L
222
+ when BELV.MicroRNAConcept
223
+ :M
224
+ when BELV.MolecularActivityConcept
225
+ :T
226
+ when BELV.PathologyConcept
227
+ :O
228
+ when BELV.ProteinConcept
229
+ :P
230
+ when BELV.ProteinModificationConcept
231
+ :E
232
+ when BELV.RNAConcept
233
+ :R
234
+ end
235
+ end.compact
236
+ end
237
+ end
238
+ end
239
+ end
240
+ end
241
+
242
+ if __FILE__ == $PROGRAM_NAME
243
+ reader = BELParser::Resource::JenaTDBReader.new(
244
+ '/home/tony/projects/openbel/resource-reasoner/biological-concepts-db')
245
+ reader.retrieve_resource('http://www.openbel.org/bel/namespace/hgnc-human-genes')
246
+ end
@@ -0,0 +1,111 @@
1
+ require 'concurrent/hash'
2
+
3
+ module BELParser
4
+ module Resource
5
+ # LRUCache implements a least recently used cache. This implementation was
6
+ # adapted from https://github.com/SamSaffron/lru_redux.
7
+ class LRUCache
8
+ def initialize(max_size)
9
+ raise ArgumentError.new(:max_size) if max_size < 1
10
+
11
+ @max_size = max_size
12
+ @data = Concurrent::Hash.new
13
+ end
14
+
15
+ def max_size=(max_size)
16
+ max_size ||= @max_size
17
+
18
+ raise ArgumentError.new(:max_size) if max_size < 1
19
+
20
+ @max_size = max_size
21
+
22
+ @data.shift while @data.size > @max_size
23
+ end
24
+
25
+ def getset(key)
26
+ found = true
27
+ value = @data.delete(key){ found = false }
28
+ if found
29
+ @data[key] = value
30
+ else
31
+ result = @data[key] = yield
32
+ @data.shift if @data.length > @max_size
33
+ result
34
+ end
35
+ end
36
+
37
+ def fetch(key)
38
+ found = true
39
+ value = @data.delete(key){ found = false }
40
+ if found
41
+ @data[key] = value
42
+ else
43
+ yield if block_given?
44
+ end
45
+ end
46
+
47
+ def [](key)
48
+ found = true
49
+ value = @data.delete(key){ found = false }
50
+ if found
51
+ @data[key] = value
52
+ else
53
+ nil
54
+ end
55
+ end
56
+
57
+ def []=(key,val)
58
+ @data.delete(key)
59
+ @data[key] = val
60
+ @data.shift if @data.length > @max_size
61
+ val
62
+ end
63
+
64
+ def each
65
+ unless block_given?
66
+ return enum_for(:each)
67
+ end
68
+
69
+ array = @data.to_a
70
+ array.reverse!.each do |pair|
71
+ yield pair
72
+ end
73
+ end
74
+
75
+ # used further up the chain, non thread safe each
76
+ alias_method :each_unsafe, :each
77
+
78
+ def to_a
79
+ array = @data.to_a
80
+ array.reverse!
81
+ end
82
+
83
+ def delete(key)
84
+ @data.delete(key)
85
+ end
86
+
87
+ alias_method :evict, :delete
88
+
89
+ def key?(key)
90
+ @data.key?(key)
91
+ end
92
+
93
+ alias_method :has_key?, :key?
94
+
95
+ def clear
96
+ @data.clear
97
+ end
98
+
99
+ def count
100
+ @data.size
101
+ end
102
+
103
+ protected
104
+
105
+ # for cache validation only, ensures all is sound
106
+ def valid?
107
+ true
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,34 @@
1
+ require_relative 'lru_cache'
2
+
3
+ module BELParser
4
+ module Resource
5
+ module LRUReader
6
+
7
+ LRU_MAX_SIZE = 2000
8
+ private_constant :LRU_MAX_SIZE
9
+
10
+ def retrieve_resource(resource_identifier)
11
+ @resources ||= Hash.new { |hash, key| hash[key] = {} }
12
+ cached_dataset = @resources[resource_identifier][:dataset]
13
+ return cached_dataset if cached_dataset
14
+
15
+ resolved_dataset = super
16
+ @resources[resource_identifier][:dataset] = resolved_dataset
17
+ @resources[resource_identifier][:values] = LRUCache.new(LRU_MAX_SIZE)
18
+ resolved_dataset
19
+ end
20
+
21
+ def retrieve_value_from_resource(resource_identifier, value)
22
+ retrieve_resource(resource_identifier)
23
+ @resources[resource_identifier][:values].getset(value) {
24
+ super
25
+ }
26
+ end
27
+
28
+ def retrieve_values_from_resource(resource_identifier)
29
+ retrieve_resource(resource_identifier)
30
+ super
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,18 @@
1
+ module BELParser
2
+ module Resource
3
+ # Reader represents the API for a reader of resource data.
4
+ module Reader
5
+ def retrieve_resource(resource_identifier)
6
+ raise NotImplementedError, "#{__method__} is not implemented."
7
+ end
8
+
9
+ def retrieve_value_from_resource(resource_identifier, value)
10
+ raise NotImplementedError, "#{__method__} is not implemented."
11
+ end
12
+
13
+ def retrieve_values_from_resource(resource_identifier)
14
+ raise NotImplementedError, "#{__method__} is not implemented."
15
+ end
16
+ end
17
+ end
18
+ end