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.
- checksums.yaml +7 -0
- data/.gemspec-java +32 -0
- data/CHANGELOG.md +10 -0
- data/LICENSE +191 -0
- data/README.md +20 -0
- data/VERSION +1 -0
- data/bin/bel2_validator +62 -0
- data/bin/bel_script_reader +132 -0
- data/lib/bel/translator/plugins/bel_script.rb +38 -0
- data/lib/bel/translator/plugins/bel_script/bel_citation_serialization.rb +125 -0
- data/lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb +109 -0
- data/lib/bel/translator/plugins/bel_script/bel_top_down_serialization.rb +100 -0
- data/lib/bel/translator/plugins/bel_script/nanopub_serialization.rb +79 -0
- data/lib/bel/translator/plugins/bel_script/reader.rb +39 -0
- data/lib/bel/translator/plugins/bel_script/translator.rb +37 -0
- data/lib/bel/translator/plugins/bel_script/writer.rb +180 -0
- data/lib/bel_parser.rb +23 -0
- data/lib/bel_parser/ast_filter.rb +44 -0
- data/lib/bel_parser/ast_generator.rb +83 -0
- data/lib/bel_parser/expression.rb +3 -0
- data/lib/bel_parser/expression/filter.rb +31 -0
- data/lib/bel_parser/expression/parser.rb +72 -0
- data/lib/bel_parser/expression/validator.rb +79 -0
- data/lib/bel_parser/language.rb +114 -0
- data/lib/bel_parser/language/amino_acid.rb +68 -0
- data/lib/bel_parser/language/apply_namespace_encoding.rb +98 -0
- data/lib/bel_parser/language/base_specification.rb +82 -0
- data/lib/bel_parser/language/covalent_protein_modification.rb +56 -0
- data/lib/bel_parser/language/expression_validator.rb +68 -0
- data/lib/bel_parser/language/function.rb +67 -0
- data/lib/bel_parser/language/relationship.rb +102 -0
- data/lib/bel_parser/language/semantics.rb +40 -0
- data/lib/bel_parser/language/semantics/deeply_nested_statement.rb +65 -0
- data/lib/bel_parser/language/semantics/function_deprecation.rb +43 -0
- data/lib/bel_parser/language/semantics/list_function_subject.rb +45 -0
- data/lib/bel_parser/language/semantics/multiple_subject_object.rb +55 -0
- data/lib/bel_parser/language/semantics/non_causal_nested_statement.rb +50 -0
- data/lib/bel_parser/language/semantics/non_object_list.rb +56 -0
- data/lib/bel_parser/language/semantics/relationship_deprecation.rb +44 -0
- data/lib/bel_parser/language/semantics/relationship_not_listable.rb +60 -0
- data/lib/bel_parser/language/semantics/signature_mapping.rb +83 -0
- data/lib/bel_parser/language/semantics_ast.rb +784 -0
- data/lib/bel_parser/language/semantics_ast_warnings.rb +180 -0
- data/lib/bel_parser/language/semantics_function.rb +16 -0
- data/lib/bel_parser/language/semantics_match.rb +28 -0
- data/lib/bel_parser/language/semantics_result.rb +33 -0
- data/lib/bel_parser/language/semantics_type_warning.rb +22 -0
- data/lib/bel_parser/language/semantics_warning.rb +27 -0
- data/lib/bel_parser/language/signature.rb +39 -0
- data/lib/bel_parser/language/specification.rb +118 -0
- data/lib/bel_parser/language/syntax.rb +38 -0
- data/lib/bel_parser/language/syntax/invalid_function.rb +39 -0
- data/lib/bel_parser/language/syntax/invalid_relationship.rb +42 -0
- data/lib/bel_parser/language/syntax/undefined_namespace.rb +49 -0
- data/lib/bel_parser/language/syntax/undefined_namespace_value.rb +44 -0
- data/lib/bel_parser/language/syntax_error.rb +32 -0
- data/lib/bel_parser/language/syntax_function.rb +16 -0
- data/lib/bel_parser/language/syntax_result.rb +32 -0
- data/lib/bel_parser/language/syntax_warning.rb +27 -0
- data/lib/bel_parser/language/version1_0.rb +20 -0
- data/lib/bel_parser/language/version1_0/functions/abundance.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/biological_process.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/catalytic_activity.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/cell_secretion.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/cell_surface_expression.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/chaperone_activity.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/complex_abundance.rb +115 -0
- data/lib/bel_parser/language/version1_0/functions/composite_abundance.rb +81 -0
- data/lib/bel_parser/language/version1_0/functions/degradation.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/fusion.rb +287 -0
- data/lib/bel_parser/language/version1_0/functions/gene_abundance.rb +122 -0
- data/lib/bel_parser/language/version1_0/functions/gtp_bound_activity.rb +113 -0
- data/lib/bel_parser/language/version1_0/functions/kinase_activity.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/list.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/micro_rna_abundance.rb +85 -0
- data/lib/bel_parser/language/version1_0/functions/molecular_activity.rb +82 -0
- data/lib/bel_parser/language/version1_0/functions/pathology.rb +83 -0
- data/lib/bel_parser/language/version1_0/functions/peptidase_activity.rb +112 -0
- data/lib/bel_parser/language/version1_0/functions/phosphatase_activity.rb +112 -0
- data/lib/bel_parser/language/version1_0/functions/products.rb +79 -0
- data/lib/bel_parser/language/version1_0/functions/protein_abundance.rb +234 -0
- data/lib/bel_parser/language/version1_0/functions/protein_modification.rb +179 -0
- data/lib/bel_parser/language/version1_0/functions/reactants.rb +79 -0
- data/lib/bel_parser/language/version1_0/functions/reaction.rb +86 -0
- data/lib/bel_parser/language/version1_0/functions/ribosylation_activity.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/rna_abundance.rb +122 -0
- data/lib/bel_parser/language/version1_0/functions/substitution.rb +93 -0
- data/lib/bel_parser/language/version1_0/functions/transcriptional_activity.rb +114 -0
- data/lib/bel_parser/language/version1_0/functions/translocation.rb +98 -0
- data/lib/bel_parser/language/version1_0/functions/transport_activity.rb +115 -0
- data/lib/bel_parser/language/version1_0/functions/truncation.rb +81 -0
- data/lib/bel_parser/language/version1_0/relationships/acts_in.rb +61 -0
- data/lib/bel_parser/language/version1_0/relationships/analogous.rb +41 -0
- data/lib/bel_parser/language/version1_0/relationships/association.rb +42 -0
- data/lib/bel_parser/language/version1_0/relationships/biomarker_for.rb +42 -0
- data/lib/bel_parser/language/version1_0/relationships/causes_no_change.rb +50 -0
- data/lib/bel_parser/language/version1_0/relationships/decreases.rb +63 -0
- data/lib/bel_parser/language/version1_0/relationships/directly_decreases.rb +56 -0
- data/lib/bel_parser/language/version1_0/relationships/directly_increases.rb +56 -0
- data/lib/bel_parser/language/version1_0/relationships/has_component.rb +62 -0
- data/lib/bel_parser/language/version1_0/relationships/has_components.rb +61 -0
- data/lib/bel_parser/language/version1_0/relationships/has_member.rb +48 -0
- data/lib/bel_parser/language/version1_0/relationships/has_members.rb +57 -0
- data/lib/bel_parser/language/version1_0/relationships/has_modification.rb +54 -0
- data/lib/bel_parser/language/version1_0/relationships/has_product.rb +60 -0
- data/lib/bel_parser/language/version1_0/relationships/has_variant.rb +54 -0
- data/lib/bel_parser/language/version1_0/relationships/includes.rb +59 -0
- data/lib/bel_parser/language/version1_0/relationships/increases.rb +63 -0
- data/lib/bel_parser/language/version1_0/relationships/is_a.rb +48 -0
- data/lib/bel_parser/language/version1_0/relationships/negative_correlation.rb +50 -0
- data/lib/bel_parser/language/version1_0/relationships/orthologous.rb +48 -0
- data/lib/bel_parser/language/version1_0/relationships/positive_correlation.rb +46 -0
- data/lib/bel_parser/language/version1_0/relationships/prognostic_biomarker_for.rb +44 -0
- data/lib/bel_parser/language/version1_0/relationships/rate_limiting_step_of.rb +53 -0
- data/lib/bel_parser/language/version1_0/relationships/reactant_in.rb +60 -0
- data/lib/bel_parser/language/version1_0/relationships/sub_process_of.rb +55 -0
- data/lib/bel_parser/language/version1_0/relationships/transcribed_to.rb +53 -0
- data/lib/bel_parser/language/version1_0/relationships/translated_to.rb +54 -0
- data/lib/bel_parser/language/version1_0/relationships/translocates.rb +57 -0
- data/lib/bel_parser/language/version1_0/return_types/abundance.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/any.rb +74 -0
- data/lib/bel_parser/language/version1_0/return_types/biological_process.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/catalytic_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/chaperone_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/complex_abundance.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/fusion.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/gene_abundance.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/gtp_bound_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/kinase_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/list.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/micro_rna_abundance.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/molecular_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/pathology.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/peptidase_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/phosphatase_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/products.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/protein_abundance.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/protein_modification.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/reactants.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/ribosylation_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/rna_abundance.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/substitution.rb +17 -0
- data/lib/bel_parser/language/version1_0/return_types/transcriptional_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/transport_activity.rb +20 -0
- data/lib/bel_parser/language/version1_0/return_types/truncation.rb +17 -0
- data/lib/bel_parser/language/version1_0/value_encodings/abundance.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/any.rb +74 -0
- data/lib/bel_parser/language/version1_0/value_encodings/biological_process.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/complex_abundance.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/gene_abundance.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/micro_rna_abundance.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/pathology.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/protein_abundance.rb +21 -0
- data/lib/bel_parser/language/version1_0/value_encodings/rna_abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0.rb +20 -0
- data/lib/bel_parser/language/version2_0/functions/abundance.rb +161 -0
- data/lib/bel_parser/language/version2_0/functions/activity.rb +118 -0
- data/lib/bel_parser/language/version2_0/functions/biological_process.rb +84 -0
- data/lib/bel_parser/language/version2_0/functions/cell_secretion.rb +83 -0
- data/lib/bel_parser/language/version2_0/functions/cell_surface_expression.rb +83 -0
- data/lib/bel_parser/language/version2_0/functions/complex_abundance.rb +190 -0
- data/lib/bel_parser/language/version2_0/functions/composite_abundance.rb +81 -0
- data/lib/bel_parser/language/version2_0/functions/degradation.rb +83 -0
- data/lib/bel_parser/language/version2_0/functions/fragment.rb +116 -0
- data/lib/bel_parser/language/version2_0/functions/from_location.rb +85 -0
- data/lib/bel_parser/language/version2_0/functions/fusion.rb +203 -0
- data/lib/bel_parser/language/version2_0/functions/gene_abundance.rb +192 -0
- data/lib/bel_parser/language/version2_0/functions/list.rb +114 -0
- data/lib/bel_parser/language/version2_0/functions/location.rb +83 -0
- data/lib/bel_parser/language/version2_0/functions/micro_rna_abundance.rb +163 -0
- data/lib/bel_parser/language/version2_0/functions/molecular_activity.rb +86 -0
- data/lib/bel_parser/language/version2_0/functions/pathology.rb +83 -0
- data/lib/bel_parser/language/version2_0/functions/products.rb +79 -0
- data/lib/bel_parser/language/version2_0/functions/protein_abundance.rb +270 -0
- data/lib/bel_parser/language/version2_0/functions/protein_modification.rb +172 -0
- data/lib/bel_parser/language/version2_0/functions/reactants.rb +79 -0
- data/lib/bel_parser/language/version2_0/functions/reaction.rb +86 -0
- data/lib/bel_parser/language/version2_0/functions/rna_abundance.rb +192 -0
- data/lib/bel_parser/language/version2_0/functions/to_location.rb +84 -0
- data/lib/bel_parser/language/version2_0/functions/translocation.rb +91 -0
- data/lib/bel_parser/language/version2_0/functions/variant.rb +80 -0
- data/lib/bel_parser/language/version2_0/relationships/acts_in.rb +61 -0
- data/lib/bel_parser/language/version2_0/relationships/analogous.rb +45 -0
- data/lib/bel_parser/language/version2_0/relationships/association.rb +42 -0
- data/lib/bel_parser/language/version2_0/relationships/biomarker_for.rb +46 -0
- data/lib/bel_parser/language/version2_0/relationships/causes_no_change.rb +50 -0
- data/lib/bel_parser/language/version2_0/relationships/decreases.rb +63 -0
- data/lib/bel_parser/language/version2_0/relationships/directly_decreases.rb +56 -0
- data/lib/bel_parser/language/version2_0/relationships/directly_increases.rb +56 -0
- data/lib/bel_parser/language/version2_0/relationships/has_component.rb +62 -0
- data/lib/bel_parser/language/version2_0/relationships/has_components.rb +61 -0
- data/lib/bel_parser/language/version2_0/relationships/has_member.rb +48 -0
- data/lib/bel_parser/language/version2_0/relationships/has_members.rb +57 -0
- data/lib/bel_parser/language/version2_0/relationships/has_modification.rb +54 -0
- data/lib/bel_parser/language/version2_0/relationships/has_product.rb +60 -0
- data/lib/bel_parser/language/version2_0/relationships/has_variant.rb +54 -0
- data/lib/bel_parser/language/version2_0/relationships/includes.rb +59 -0
- data/lib/bel_parser/language/version2_0/relationships/increases.rb +63 -0
- data/lib/bel_parser/language/version2_0/relationships/is_a.rb +48 -0
- data/lib/bel_parser/language/version2_0/relationships/negative_correlation.rb +50 -0
- data/lib/bel_parser/language/version2_0/relationships/orthologous.rb +48 -0
- data/lib/bel_parser/language/version2_0/relationships/positive_correlation.rb +46 -0
- data/lib/bel_parser/language/version2_0/relationships/prognostic_biomarker_for.rb +48 -0
- data/lib/bel_parser/language/version2_0/relationships/rate_limiting_step_of.rb +53 -0
- data/lib/bel_parser/language/version2_0/relationships/reactant_in.rb +60 -0
- data/lib/bel_parser/language/version2_0/relationships/regulates.rb +51 -0
- data/lib/bel_parser/language/version2_0/relationships/sub_process_of.rb +55 -0
- data/lib/bel_parser/language/version2_0/relationships/transcribed_to.rb +53 -0
- data/lib/bel_parser/language/version2_0/relationships/translated_to.rb +54 -0
- data/lib/bel_parser/language/version2_0/relationships/translocates.rb +57 -0
- data/lib/bel_parser/language/version2_0/return_types/abundance.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/activity.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/any.rb +74 -0
- data/lib/bel_parser/language/version2_0/return_types/biological_process.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/complex_abundance.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/fragment.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/from_location.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/fusion.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/gene_abundance.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/list.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/location.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/micro_rna_abundance.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/molecular_activity.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/pathology.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/products.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/protein_abundance.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/protein_modification.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/reactants.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/rna_abundance.rb +17 -0
- data/lib/bel_parser/language/version2_0/return_types/to_location.rb +20 -0
- data/lib/bel_parser/language/version2_0/return_types/variant.rb +20 -0
- data/lib/bel_parser/language/version2_0/value_encodings/abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/activity.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/any.rb +74 -0
- data/lib/bel_parser/language/version2_0/value_encodings/biological_process.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/complex_abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/gene_abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/location.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/micro_rna_abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/pathology.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/protein_abundance.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/protein_modification.rb +21 -0
- data/lib/bel_parser/language/version2_0/value_encodings/rna_abundance.rb +21 -0
- data/lib/bel_parser/mixin/line_continuator.rb +15 -0
- data/lib/bel_parser/mixin/line_mapping.rb +14 -0
- data/lib/bel_parser/parsers/ast/node.rb +987 -0
- data/lib/bel_parser/parsers/ast/sexp.rb +8 -0
- data/lib/bel_parser/parsers/bel_script.rb +5 -0
- data/lib/bel_parser/parsers/bel_script/define_annotation.rb +5920 -0
- data/lib/bel_parser/parsers/bel_script/define_annotation.rl +141 -0
- data/lib/bel_parser/parsers/bel_script/define_namespace.rb +1780 -0
- data/lib/bel_parser/parsers/bel_script/define_namespace.rl +121 -0
- data/lib/bel_parser/parsers/bel_script/set.rb +5008 -0
- data/lib/bel_parser/parsers/bel_script/set.rl +116 -0
- data/lib/bel_parser/parsers/bel_script/set_document.rb +7722 -0
- data/lib/bel_parser/parsers/bel_script/set_document.rl +97 -0
- data/lib/bel_parser/parsers/bel_script/unset.rb +706 -0
- data/lib/bel_parser/parsers/bel_script/unset.rl +95 -0
- data/lib/bel_parser/parsers/common.rb +5 -0
- data/lib/bel_parser/parsers/common/blank_line.rb +211 -0
- data/lib/bel_parser/parsers/common/blank_line.rl +81 -0
- data/lib/bel_parser/parsers/common/comment_line.rb +245 -0
- data/lib/bel_parser/parsers/common/comment_line.rl +97 -0
- data/lib/bel_parser/parsers/common/common.rb +7 -0
- data/lib/bel_parser/parsers/common/common.rl +13 -0
- data/lib/bel_parser/parsers/common/identifier.rb +289 -0
- data/lib/bel_parser/parsers/common/identifier.rl +106 -0
- data/lib/bel_parser/parsers/common/list.rb +2388 -0
- data/lib/bel_parser/parsers/common/list.rl +146 -0
- data/lib/bel_parser/parsers/common/string.rb +271 -0
- data/lib/bel_parser/parsers/common/string.rl +107 -0
- data/lib/bel_parser/parsers/expression.rb +7 -0
- data/lib/bel_parser/parsers/expression/comment.rb +239 -0
- data/lib/bel_parser/parsers/expression/comment.rl +97 -0
- data/lib/bel_parser/parsers/expression/nested_statement.rb +17802 -0
- data/lib/bel_parser/parsers/expression/nested_statement.rl +141 -0
- data/lib/bel_parser/parsers/expression/observed_term.rb +7291 -0
- data/lib/bel_parser/parsers/expression/observed_term.rl +92 -0
- data/lib/bel_parser/parsers/expression/parameter.rb +1506 -0
- data/lib/bel_parser/parsers/expression/parameter.rl +97 -0
- data/lib/bel_parser/parsers/expression/relationship.rb +254 -0
- data/lib/bel_parser/parsers/expression/relationship.rl +98 -0
- data/lib/bel_parser/parsers/expression/simple_statement.rb +10475 -0
- data/lib/bel_parser/parsers/expression/simple_statement.rl +112 -0
- data/lib/bel_parser/parsers/expression/term.rb +3989 -0
- data/lib/bel_parser/parsers/expression/term.rl +157 -0
- data/lib/bel_parser/parsers/line_parser.rb +92 -0
- data/lib/bel_parser/parsers/mixin/buffer.rb +10 -0
- data/lib/bel_parser/parsers/nonblocking_io_wrapper.rb +50 -0
- data/lib/bel_parser/parsers/serializer.rb +205 -0
- data/lib/bel_parser/quoting.rb +177 -0
- data/lib/bel_parser/resource/concept.rb +56 -0
- data/lib/bel_parser/resource/concept_scheme.rb +35 -0
- data/lib/bel_parser/resource/dataset.rb +34 -0
- data/lib/bel_parser/resource/eager_reader.rb +89 -0
- data/lib/bel_parser/resource/eager_sparql_reader.rb +51 -0
- data/lib/bel_parser/resource/file_resource.rb +21 -0
- data/lib/bel_parser/resource/file_resource_value.rb +24 -0
- data/lib/bel_parser/resource/jena_tdb_reader.rb +246 -0
- data/lib/bel_parser/resource/lru_cache.rb +111 -0
- data/lib/bel_parser/resource/lru_reader.rb +34 -0
- data/lib/bel_parser/resource/reader.rb +18 -0
- data/lib/bel_parser/resource/resource_url_reader.rb +181 -0
- data/lib/bel_parser/resource/sparql_reader.rb +179 -0
- data/lib/bel_parser/resource/value.rb +31 -0
- data/lib/bel_parser/script.rb +8 -0
- data/lib/bel_parser/script/filter.rb +35 -0
- data/lib/bel_parser/script/first_node.rb +21 -0
- data/lib/bel_parser/script/keywords.rb +32 -0
- data/lib/bel_parser/script/nanopub_mapper.rb +182 -0
- data/lib/bel_parser/script/parser.rb +51 -0
- data/lib/bel_parser/script/state/annotation_definition.rb +62 -0
- data/lib/bel_parser/script/state/bel_version.rb +36 -0
- data/lib/bel_parser/script/state/document_property.rb +29 -0
- data/lib/bel_parser/script/state/namespace_definition.rb +32 -0
- data/lib/bel_parser/script/state/set.rb +82 -0
- data/lib/bel_parser/script/state/unset.rb +46 -0
- data/lib/bel_parser/script/state_aggregator.rb +49 -0
- data/lib/bel_parser/script/state_function.rb +10 -0
- data/lib/bel_parser/script/syntax/expression_validation.rb +46 -0
- data/lib/bel_parser/script/syntax/invalid_regex_pattern.rb +49 -0
- data/lib/bel_parser/script/syntax/undefined_annotation.rb +61 -0
- data/lib/bel_parser/script/syntax/undefined_annotation_value.rb +84 -0
- data/lib/bel_parser/script/syntax/unresolvable_namespace.rb +54 -0
- data/lib/bel_parser/script/syntax/unsupported_bel_version.rb +59 -0
- data/lib/bel_parser/script/validator.rb +65 -0
- data/lib/bel_parser/vendor/ast.rb +17 -0
- data/lib/bel_parser/vendor/ast/node.rb +254 -0
- data/lib/bel_parser/vendor/ast/processor.rb +12 -0
- data/lib/bel_parser/vendor/ast/processor/mixin.rb +282 -0
- data/lib/bel_parser/vendor/ast/sexp.rb +30 -0
- 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
|