bel_parser 1.0.5-java → 1.0.6-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 +4 -4
 - data/{.gemspec-java → .gemspec} +1 -3
 - data/README.md +61 -8
 - data/VERSION +1 -1
 - data/lib/bel/translator/plugins/bel_script/nanopub_serialization.rb +7 -5
 - data/lib/bel/translator/plugins/bel_script/writer.rb +37 -26
 - data/lib/bel_parser/expression/model/annotation.rb +7 -2
 - data/lib/bel_parser/expression/model/statement.rb +30 -16
 - data/lib/bel_parser/language/function.rb +1 -3
 - data/lib/bel_parser/language/relationship.rb +1 -3
 - data/lib/bel_parser/mixin/line_mapping.rb +1 -1
 - data/lib/bel_parser/script/state/set.rb +6 -1
 - metadata +6 -20
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0c9868e3746d9e87d07fa0998aab114ff4fcd0ec
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f352bc984914515f5f25fcc703572e0cb86c5b47
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 79994e64bc3aa53b99f8267d1e39a23fd1a8d7f0570f0421b53af480de35409eda1a1856dd6365f0cdb00adfae1e9dea05471815b30dba1325bc3426391b4341
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8de33aae5e099d77f448677e7e5b52017cdd3e73f63e0f41c37642e5a4204212c04e8d96f87836c83ba39ed334dfd558bfd38c349246dd61694fb8ba46d60fe0
         
     | 
    
        data/{.gemspec-java → .gemspec}
    RENAMED
    
    | 
         @@ -5,6 +5,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       5 
5 
     | 
    
         
             
                                               File.expand_path(File.dirname(__FILE__)),
         
     | 
| 
       6 
6 
     | 
    
         
             
                                               'VERSION'))
         
     | 
| 
       7 
7 
     | 
    
         
             
              spec.summary               = %q{Parser for Biolgical Expression Language.}
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.platform              = 'java'
         
     | 
| 
       8 
9 
     | 
    
         
             
              spec.description           = %q{Implements language versions 1.0 and 2.0.}
         
     | 
| 
       9 
10 
     | 
    
         
             
              spec.license               = 'Apache-2.0'
         
     | 
| 
       10 
11 
     | 
    
         
             
              spec.authors               = [
         
     | 
| 
         @@ -26,8 +27,5 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       26 
27 
     | 
    
         
             
              spec.require_paths         = ['lib']
         
     | 
| 
       27 
28 
     | 
    
         
             
              spec.required_ruby_version = '>= 2.0.0'
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
              spec.platform              = 'java'
         
     | 
| 
       30 
30 
     | 
    
         
             
              spec.add_runtime_dependency  'sparql-client', '~> 2.0.0'
         
     | 
| 
       31 
     | 
    
         
            -
              spec.add_runtime_dependency  'dbm-mapdb3',    '~> 0.6.0.beta'
         
     | 
| 
       32 
31 
     | 
    
         
             
            end
         
     | 
| 
       33 
     | 
    
         
            -
            # vim: ft=ruby
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,20 +1,73 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # bel_parser
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            The bel_parser gem implements BEL specifications (currently 1.0 and 2.0) and BEL Script nanopub format.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            ### Installation
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              gem install bel_parser 
     | 
| 
      
 7 
     | 
    
         
            +
              gem install bel_parser
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### Motivation
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The motivation for this library is to provide the building blocks to implement BEL specifications more easily. This includes:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - Recognizing input to Abstract Syntax Trees
         
     | 
| 
      
 14 
     | 
    
         
            +
            - Applying syntax validation relative to a BEL specification.
         
     | 
| 
      
 15 
     | 
    
         
            +
            - Applying signature validation relative to a BEL specification.
         
     | 
| 
      
 16 
     | 
    
         
            +
            - Conversion of Abstract Syntax Trees to a Nanopub object model.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            Currently BEL 1.0 and 2.0 specifications are implemented.
         
     | 
| 
       8 
19 
     | 
    
         | 
| 
       9 
20 
     | 
    
         
             
            ### Getting Started
         
     | 
| 
       10 
21 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
            bel_parser provides a Ruby library and a set of command-line tools.
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Command-line tools:
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            1. *bel2_debug_ast*
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              Writes the AST output recognized from the input.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              usage: `bel2_debug_ast` (Then enter a line at a time)
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              usage: `bel2_debug_ast --file file.bel`
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            2. *bel2_validator*
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              Validate the syntax and semantics of the AST recognized from the input.
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              usage: `bel2_validator` (Then enter a line at a time)
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              usage: `bel2_validator --file file.bel --specification 2.0`
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            3. *bel2_upgrade*
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              Upgrades BEL statements from 1.0 to 2.0.
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              usage: `bel2_upgrade` (Then enter a line at a time)
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              usage: `bel2_upgrade --file file.bel`
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            ### Development / Deployment
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            Development for the next release should be performed on the *next* branch. When the new changes are complete, functional, and tested they should be merged over to the *master* branch.
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            To make a release, perform the following steps:
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            - Update the version in the `VERSION` file.
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            - Add a new version with list of changes in the `CHANGELOG` file. This file is modelled after http://keepachangelog.com/.
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            - Build the Ruby and Java versions of the gem:
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              Ruby: `gem build .gemspec`
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
              Java: `gem build .gemspec-java`
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            - Create a release on GitHub with both gems and a summary of the changes in this version.
         
     | 
| 
       13 
67 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
            - Push both gems to RubyGems:
         
     | 
| 
       15 
69 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
              `gem push bel_parser-VERSION.gem`
         
     | 
| 
       17 
71 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
      
 72 
     | 
    
         
            +
              `gem push bel_parser-VERSION-java.gem`
         
     | 
| 
       19 
73 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            ### Design
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.0.6
         
     | 
| 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require ' 
     | 
| 
      
 1 
     | 
    
         
            +
            require 'bel_parser/quoting'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # Serializing of common {BEL::Nanopub::Nanopub nanopub} components to BEL
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Script syntax.
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # @abstract
         
     | 
| 
       7 
7 
     | 
    
         
             
            module BEL::Translator::Plugins::BelScript::NanopubSerialization
         
     | 
| 
       8 
     | 
    
         
            -
              include  
     | 
| 
      
 8 
     | 
    
         
            +
              include BELParser::Quoting
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              # Serialize the {BEL::Nanopub::Nanopub nanopub} to a BEL Script string.
         
     | 
| 
       11 
11 
     | 
    
         
             
              #
         
     | 
| 
         @@ -32,11 +32,13 @@ module BEL::Translator::Plugins::BelScript::NanopubSerialization 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                values = citation.to_a
         
     | 
| 
       34 
34 
     | 
    
         
             
                values.map! { |v|
         
     | 
| 
       35 
     | 
    
         
            -
                  v  
     | 
| 
      
 35 
     | 
    
         
            +
                  v = %("") if v.nil? || v.empty?
         
     | 
| 
       36 
36 
     | 
    
         
             
                  if v.respond_to?(:each)
         
     | 
| 
       37 
     | 
    
         
            -
                     
     | 
| 
      
 37 
     | 
    
         
            +
                    v.map! { |item| item.delete("\r\n") }
         
     | 
| 
      
 38 
     | 
    
         
            +
                    quote(v.join('|'))
         
     | 
| 
       38 
39 
     | 
    
         
             
                  else
         
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
      
 40 
     | 
    
         
            +
                    v.delete!("\r\n")
         
     | 
| 
      
 41 
     | 
    
         
            +
                    quote(v)
         
     | 
| 
       40 
42 
     | 
    
         
             
                  end
         
     | 
| 
       41 
43 
     | 
    
         
             
                }
         
     | 
| 
       42 
44 
     | 
    
         
             
                values.join(', ')
         
     | 
| 
         @@ -45,7 +45,7 @@ module BEL::Translator::Plugins 
     | 
|
| 
       45 
45 
     | 
    
         
             
                        }
         
     | 
| 
       46 
46 
     | 
    
         
             
                        serialization_module = serialization_refs[serialization.to_sym]
         
     | 
| 
       47 
47 
     | 
    
         
             
                        unless serialization_module
         
     | 
| 
       48 
     | 
    
         
            -
                            raise % 
     | 
| 
      
 48 
     | 
    
         
            +
                            raise %(No BEL serialization strategy for "#{serialization}")
         
     | 
| 
       49 
49 
     | 
    
         
             
                        end
         
     | 
| 
       50 
50 
     | 
    
         
             
                        serialization_module
         
     | 
| 
       51 
51 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -81,7 +81,7 @@ module BEL::Translator::Plugins 
     | 
|
| 
       81 
81 
     | 
    
         
             
                        bel = to_bel(nanopub)
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
       83 
83 
     | 
    
         
             
                        if @write_header && header_flag
         
     | 
| 
       84 
     | 
    
         
            -
                          yield document_header(nanopub.metadata 
     | 
| 
      
 84 
     | 
    
         
            +
                          yield document_header(nanopub.metadata)
         
     | 
| 
       85 
85 
     | 
    
         
             
                          yield namespaces(combiner.namespace_references)
         
     | 
| 
       86 
86 
     | 
    
         
             
                          yield annotations(combiner.annotation_references)
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
         @@ -103,30 +103,35 @@ module BEL::Translator::Plugins 
     | 
|
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                  private
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
       106 
     | 
    
         
            -
                  def document_header( 
     | 
| 
       107 
     | 
    
         
            -
                    return "" unless header
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 106 
     | 
    
         
            +
                  def document_header(metadata)
         
     | 
| 
       109 
107 
     | 
    
         
             
                    bel = <<-COMMENT.gsub(/^\s+/, '')
         
     | 
| 
       110 
108 
     | 
    
         
             
                      ###############################################
         
     | 
| 
       111 
109 
     | 
    
         
             
                      # Document Properties Section
         
     | 
| 
       112 
110 
     | 
    
         
             
                    COMMENT
         
     | 
| 
       113 
111 
     | 
    
         | 
| 
       114 
     | 
    
         
            -
                     
     | 
| 
       115 
     | 
    
         
            -
                       
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
                         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
                    bel_version =
         
     | 
| 
      
 113 
     | 
    
         
            +
                      metadata.bel_version || BELParser::Language.default_version
         
     | 
| 
      
 114 
     | 
    
         
            +
                    bel << %(SET DOCUMENT BELVersion = "#{bel_version}"\n)
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                    if metadata.document_header
         
     | 
| 
      
 117 
     | 
    
         
            +
                      header = metadata.document_header
         
     | 
| 
      
 118 
     | 
    
         
            +
                      header.each do |name, value|
         
     | 
| 
      
 119 
     | 
    
         
            +
                        name_s  = name.to_s
         
     | 
| 
      
 120 
     | 
    
         
            +
                        value_s =
         
     | 
| 
      
 121 
     | 
    
         
            +
                          if value.respond_to?(:each)
         
     | 
| 
      
 122 
     | 
    
         
            +
                            value.join('|')
         
     | 
| 
      
 123 
     | 
    
         
            +
                          else
         
     | 
| 
      
 124 
     | 
    
         
            +
                            value.to_s
         
     | 
| 
      
 125 
     | 
    
         
            +
                          end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                        # handle casing for document properties (special case, contactinfo)
         
     | 
| 
      
 128 
     | 
    
         
            +
                        name_s = (name_s.downcase == 'contactinfo') ?
         
     | 
| 
      
 129 
     | 
    
         
            +
                          'ContactInfo' :
         
     | 
| 
      
 130 
     | 
    
         
            +
                          name_s.capitalize
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                        bel << %(SET DOCUMENT #{name_s} = "#{value_s}"\n)
         
     | 
| 
      
 133 
     | 
    
         
            +
                      end
         
     | 
| 
      
 134 
     | 
    
         
            +
                    end
         
     | 
| 
       130 
135 
     | 
    
         | 
| 
       131 
136 
     | 
    
         
             
                    bel << "\n"
         
     | 
| 
       132 
137 
     | 
    
         
             
                    bel
         
     | 
| 
         @@ -145,14 +150,14 @@ module BEL::Translator::Plugins 
     | 
|
| 
       145 
150 
     | 
    
         | 
| 
       146 
151 
     | 
    
         
             
                      case ref.type.to_sym
         
     | 
| 
       147 
152 
     | 
    
         
             
                      when :url
         
     | 
| 
       148 
     | 
    
         
            -
                        bel << % 
     | 
| 
      
 153 
     | 
    
         
            +
                        bel << %(URL "#{ref.domain}"\n)
         
     | 
| 
       149 
154 
     | 
    
         
             
                      when :uri
         
     | 
| 
       150 
     | 
    
         
            -
                        bel << % 
     | 
| 
      
 155 
     | 
    
         
            +
                        bel << %(URI "#{ref.domain}"\n)
         
     | 
| 
       151 
156 
     | 
    
         
             
                      when :pattern
         
     | 
| 
       152 
157 
     | 
    
         
             
                        regex = ref.domain.respond_to?(:source) ? ref.domain.source : ref.domain
         
     | 
| 
       153 
     | 
    
         
            -
                        bel << % 
     | 
| 
      
 158 
     | 
    
         
            +
                        bel << %(PATTERN "#{regex}"\n)
         
     | 
| 
       154 
159 
     | 
    
         
             
                      when :list
         
     | 
| 
       155 
     | 
    
         
            -
                        bel << % 
     | 
| 
      
 160 
     | 
    
         
            +
                        bel << %(LIST {#{ref.domain.inspect[1...-1]}}\n)
         
     | 
| 
       156 
161 
     | 
    
         
             
                      end
         
     | 
| 
       157 
162 
     | 
    
         
             
                      bel
         
     | 
| 
       158 
163 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -169,7 +174,13 @@ module BEL::Translator::Plugins 
     | 
|
| 
       169 
174 
     | 
    
         
             
                    return bel unless namespace_references
         
     | 
| 
       170 
175 
     | 
    
         | 
| 
       171 
176 
     | 
    
         
             
                    namespace_references.reduce(bel) { |bel, ref|
         
     | 
| 
       172 
     | 
    
         
            -
                       
     | 
| 
      
 177 
     | 
    
         
            +
                      case
         
     | 
| 
      
 178 
     | 
    
         
            +
                      when ref.uri?
         
     | 
| 
      
 179 
     | 
    
         
            +
                        bel << %(DEFINE NAMESPACE #{ref.keyword} AS URI "#{ref.uri}"\n)
         
     | 
| 
      
 180 
     | 
    
         
            +
                      when ref.url?
         
     | 
| 
      
 181 
     | 
    
         
            +
                        bel << %(DEFINE NAMESPACE #{ref.keyword} AS URL "#{ref.url}"\n)
         
     | 
| 
      
 182 
     | 
    
         
            +
                      end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
       173 
184 
     | 
    
         
             
                      bel
         
     | 
| 
       174 
185 
     | 
    
         
             
                    }
         
     | 
| 
       175 
186 
     | 
    
         
             
                    bel << "\n"
         
     | 
| 
         @@ -20,8 +20,13 @@ module BELParser 
     | 
|
| 
       20 
20 
     | 
    
         
             
                      @type    = type.to_sym
         
     | 
| 
       21 
21 
     | 
    
         
             
                      @domain  = domain
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                       
     | 
| 
       24 
     | 
    
         
            -
                       
     | 
| 
      
 23 
     | 
    
         
            +
                      # configure reader for URIs (RDF).
         
     | 
| 
      
 24 
     | 
    
         
            +
                      @uri_reader = options.fetch(:uri_reader, BELParser::Resource.default_uri_reader)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      BELParser::Resource::Reader.assert_reader(@uri_reader, 'uri_reader')
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                      # configure reader for URLs (Resource files).
         
     | 
| 
      
 28 
     | 
    
         
            +
                      @url_reader = options.fetch(:url_reader, BELParser::Resource.default_url_reader)
         
     | 
| 
      
 29 
     | 
    
         
            +
                      BELParser::Resource::Reader.assert_reader(@url_reader, 'url_reader')
         
     | 
| 
       25 
30 
     | 
    
         
             
                    end
         
     | 
| 
       26 
31 
     | 
    
         | 
| 
       27 
32 
     | 
    
         
             
                    def initialize_copy(original)
         
     | 
| 
         @@ -16,7 +16,7 @@ module BELParser 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  # - SUBJECT RELATIONSHIP OBJECT(Statement)
         
     | 
| 
       17 
17 
     | 
    
         
             
                  #   - +p(HGNC:VHL) -> (p(HGNC:TNF) -> bp(GOBP:"cell death"))+
         
     | 
| 
       18 
18 
     | 
    
         
             
                  class Statement
         
     | 
| 
       19 
     | 
    
         
            -
                     
     | 
| 
      
 19 
     | 
    
         
            +
                    attr_reader :subject, :relationship, :object, :comment, :type
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                    # Creates a {Statement} with +subject+, +relationship+, +object+, and
         
     | 
| 
       22 
22 
     | 
    
         
             
                    # +comment+.
         
     | 
| 
         @@ -33,44 +33,58 @@ module BELParser 
     | 
|
| 
       33 
33 
     | 
    
         
             
                      end
         
     | 
| 
       34 
34 
     | 
    
         
             
                      @subject = subject
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                       
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
                      case relationship
         
     | 
| 
      
 37 
     | 
    
         
            +
                      when nil
         
     | 
| 
      
 38 
     | 
    
         
            +
                        @type         = :observed_term
         
     | 
| 
      
 39 
     | 
    
         
            +
                        @relationship = nil
         
     | 
| 
      
 40 
     | 
    
         
            +
                      when BELParser::Language::Relationship
         
     | 
| 
      
 41 
     | 
    
         
            +
                        @type         = :simple_statement
         
     | 
| 
      
 42 
     | 
    
         
            +
                        @relationship = relationship
         
     | 
| 
      
 43 
     | 
    
         
            +
                      else
         
     | 
| 
      
 44 
     | 
    
         
            +
                        raise(ArgumentError,
         
     | 
| 
       39 
45 
     | 
    
         
             
                          "relationship: expected nil or Relationship, actual #{relationship.class}")
         
     | 
| 
       40 
46 
     | 
    
         
             
                      end
         
     | 
| 
       41 
     | 
    
         
            -
                      @relationship = relationship
         
     | 
| 
       42 
47 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                       
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
                      case object
         
     | 
| 
      
 49 
     | 
    
         
            +
                      when nil
         
     | 
| 
      
 50 
     | 
    
         
            +
                        @type   = :observed_term
         
     | 
| 
      
 51 
     | 
    
         
            +
                        @object = nil
         
     | 
| 
      
 52 
     | 
    
         
            +
                      when BELParser::Expression::Model::Term
         
     | 
| 
      
 53 
     | 
    
         
            +
                        @type   = :simple_statement
         
     | 
| 
      
 54 
     | 
    
         
            +
                        @object = object
         
     | 
| 
      
 55 
     | 
    
         
            +
                      when BELParser::Expression::Model::Statement
         
     | 
| 
      
 56 
     | 
    
         
            +
                        @type   = :nested_statement
         
     | 
| 
      
 57 
     | 
    
         
            +
                        @object = object
         
     | 
| 
      
 58 
     | 
    
         
            +
                      else
         
     | 
| 
      
 59 
     | 
    
         
            +
                        raise(ArgumentError,
         
     | 
| 
       46 
60 
     | 
    
         
             
                          "object: expected nil, Term, or Statement, actual #{object.class}")
         
     | 
| 
       47 
61 
     | 
    
         
             
                      end
         
     | 
| 
       48 
     | 
    
         
            -
                      @object       = object
         
     | 
| 
       49 
     | 
    
         
            -
                      @comment      = comment
         
     | 
| 
       50 
62 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                       
     | 
| 
      
 63 
     | 
    
         
            +
                      @comment = comment
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                      if @relationship && @object.nil?
         
     | 
| 
       52 
66 
     | 
    
         
             
                        raise(
         
     | 
| 
       53 
67 
     | 
    
         
             
                          ArgumentError,
         
     | 
| 
       54 
68 
     | 
    
         
             
                          "object must be set when specifying a relationship")
         
     | 
| 
       55 
69 
     | 
    
         
             
                      end
         
     | 
| 
       56 
70 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                      if @object &&  
     | 
| 
      
 71 
     | 
    
         
            +
                      if @object && @relationship.nil?
         
     | 
| 
       58 
72 
     | 
    
         
             
                        raise(
         
     | 
| 
       59 
73 
     | 
    
         
             
                          ArgumentError,
         
     | 
| 
       60 
     | 
    
         
            -
                          " 
     | 
| 
      
 74 
     | 
    
         
            +
                          "relationship must be set when specifying an object")
         
     | 
| 
       61 
75 
     | 
    
         
             
                      end
         
     | 
| 
       62 
76 
     | 
    
         
             
                    end
         
     | 
| 
       63 
77 
     | 
    
         | 
| 
       64 
78 
     | 
    
         
             
                    def subject_only?
         
     | 
| 
       65 
     | 
    
         
            -
                       
     | 
| 
      
 79 
     | 
    
         
            +
                      @type == :observed_term
         
     | 
| 
       66 
80 
     | 
    
         
             
                    end
         
     | 
| 
       67 
81 
     | 
    
         | 
| 
       68 
82 
     | 
    
         
             
                    def simple?
         
     | 
| 
       69 
     | 
    
         
            -
                      @ 
     | 
| 
      
 83 
     | 
    
         
            +
                      @type == :simple_statement
         
     | 
| 
       70 
84 
     | 
    
         
             
                    end
         
     | 
| 
       71 
85 
     | 
    
         | 
| 
       72 
86 
     | 
    
         
             
                    def nested?
         
     | 
| 
       73 
     | 
    
         
            -
                      @ 
     | 
| 
      
 87 
     | 
    
         
            +
                      @type == :nested_statement
         
     | 
| 
       74 
88 
     | 
    
         
             
                    end
         
     | 
| 
       75 
89 
     | 
    
         | 
| 
       76 
90 
     | 
    
         
             
                    def namespaces
         
     | 
| 
         @@ -60,7 +60,12 @@ module BELParser 
     | 
|
| 
       60 
60 
     | 
    
         
             
                    def self.handle_annotation(name_string, value_node, script_context)
         
     | 
| 
       61 
61 
     | 
    
         
             
                      # add to annotation state
         
     | 
| 
       62 
62 
     | 
    
         
             
                      script_context[:annotations]              ||= Concurrent::Hash.new
         
     | 
| 
       63 
     | 
    
         
            -
                       
     | 
| 
      
 63 
     | 
    
         
            +
                      if value_node.children[0].respond_to?(:string_literal)
         
     | 
| 
      
 64 
     | 
    
         
            +
                          namestr = value_node.children[0].string_literal
         
     | 
| 
      
 65 
     | 
    
         
            +
                      else
         
     | 
| 
      
 66 
     | 
    
         
            +
                          namestr = value_node.children[0].to_s
         
     | 
| 
      
 67 
     | 
    
         
            +
                      end
         
     | 
| 
      
 68 
     | 
    
         
            +
                      script_context[:annotations][name_string]   = namestr
         
     | 
| 
       64 
69 
     | 
    
         
             
                    end
         
     | 
| 
       65 
70 
     | 
    
         
             
                    private_class_method :handle_annotation
         
     | 
| 
       66 
71 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: bel_parser
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: java
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Anthony Bargnesi
         
     | 
| 
         @@ -25,32 +25,18 @@ dependencies: 
     | 
|
| 
       25 
25 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       26 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       27 
27 
     | 
    
         
             
                    version: 2.0.0
         
     | 
| 
       28 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       29 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
     | 
    
         
            -
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       32 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: 0.6.0.beta
         
     | 
| 
       34 
     | 
    
         
            -
              name: dbm-mapdb3
         
     | 
| 
       35 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              type: :runtime
         
     | 
| 
       37 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       38 
     | 
    
         
            -
                requirements:
         
     | 
| 
       39 
     | 
    
         
            -
                - - "~>"
         
     | 
| 
       40 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       41 
     | 
    
         
            -
                    version: 0.6.0.beta
         
     | 
| 
       42 
28 
     | 
    
         
             
            description: Implements language versions 1.0 and 2.0.
         
     | 
| 
       43 
29 
     | 
    
         
             
            email: abargnesi@selventa.com
         
     | 
| 
       44 
30 
     | 
    
         
             
            executables:
         
     | 
| 
       45 
     | 
    
         
            -
            - bel2_upgrade
         
     | 
| 
       46 
     | 
    
         
            -
            - bel2_debug_ast
         
     | 
| 
       47 
     | 
    
         
            -
            - bel2_validator
         
     | 
| 
       48 
     | 
    
         
            -
            - bel_script_reader
         
     | 
| 
       49 
31 
     | 
    
         
             
            - bel2_compatibility
         
     | 
| 
      
 32 
     | 
    
         
            +
            - bel_script_reader
         
     | 
| 
      
 33 
     | 
    
         
            +
            - bel2_validator
         
     | 
| 
      
 34 
     | 
    
         
            +
            - bel2_debug_ast
         
     | 
| 
      
 35 
     | 
    
         
            +
            - bel2_upgrade
         
     | 
| 
       50 
36 
     | 
    
         
             
            extensions: []
         
     | 
| 
       51 
37 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       52 
38 
     | 
    
         
             
            files:
         
     | 
| 
       53 
     | 
    
         
            -
            - ".gemspec 
     | 
| 
      
 39 
     | 
    
         
            +
            - ".gemspec"
         
     | 
| 
       54 
40 
     | 
    
         
             
            - CHANGELOG.md
         
     | 
| 
       55 
41 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       56 
42 
     | 
    
         
             
            - README.md
         
     |