rdf-kv 0.1.0 → 0.1.3
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/.gitignore +1 -0
- data/.yardopts +7 -0
- data/Gemfile +0 -3
- data/lib/rdf/kv/version.rb +1 -1
- data/lib/rdf/kv.rb +47 -30
- data/lib/rdf-kv.rb +1 -0
- data/rdf-kv.gemspec +6 -4
- metadata +45 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e5e9ee04b73aea9ca848276b9e7c28efe2e42a7617b4c4be587f26a262d1e487
         | 
| 4 | 
            +
              data.tar.gz: 90a5036bbb9d090c1859c7fd1069dba484b4533ee3bcbbfb53751e7c792494e5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 13160ab47776b4fc531de45f341f0d05e7cb5eb04886b541aaf1f6418bf1aeaf5943bd2b9bfca8da0054af2f2cc964a79401757ac3d5482454fb0dd2f1d3dedd
         | 
| 7 | 
            +
              data.tar.gz: 67da241b365cb8d278b0d0588fe3dc5df93984e1734c0c865d0b76a04e8fb34bfddf93f7357bca85119f649441da768ef104fd46a22479202e278b9c05fca932
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.yardopts
    ADDED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/lib/rdf/kv/version.rb
    CHANGED
    
    
    
        data/lib/rdf/kv.rb
    CHANGED
    
    | @@ -35,7 +35,7 @@ class RDF::KV | |
| 35 35 |  | 
| 36 36 | 
             
              GRAMMAR = /#{PARTIAL_STMT}/o
         | 
| 37 37 | 
             
              MAP     = %i[modifier term1 term2 designator term1 designator graph
         | 
| 38 | 
            -
                         term1 term2 designator graph deref]
         | 
| 38 | 
            +
                         term1 term2 designator graph deref].freeze
         | 
| 39 39 |  | 
| 40 40 | 
             
              # these should be instance_exec'd
         | 
| 41 41 | 
             
              SPECIALS = {
         | 
| @@ -47,10 +47,14 @@ class RDF::KV | |
| 47 47 | 
             
                  val.each do |v, _|
         | 
| 48 48 | 
             
                    next unless m = /^\s*(#{NCNAME}):\s+(.*)$/o.match(v)
         | 
| 49 49 | 
             
                    prefix, uri = m.captures
         | 
| 50 | 
            -
                    @ | 
| 50 | 
            +
                    @prefixes[prefix.to_sym] = RDF::Vocabulary.new uri
         | 
| 51 51 | 
             
                  end
         | 
| 52 52 | 
             
                },
         | 
| 53 | 
            -
              }
         | 
| 53 | 
            +
              }.freeze
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def random_uuid_ncname
         | 
| 56 | 
            +
                UUID::NCName.to_ncname_64 UUIDTools::UUID.random_create.to_s, version: 1
         | 
| 57 | 
            +
              end
         | 
| 54 58 |  | 
| 55 59 | 
             
              # macros are initially represented as a pair: the macro value and a
         | 
| 56 60 | 
             
              # flag denoting whether or not the macro itself contains macros and to
         | 
| @@ -58,9 +62,8 @@ class RDF::KV | |
| 58 62 | 
             
              GENERATED = {
         | 
| 59 63 | 
             
                NEW_UUID:     [[-> { UUIDTools::UUID.random_create.to_s   }, false]],
         | 
| 60 64 | 
             
                NEW_UUID_URN: [[-> { UUIDTools::UUID.random_create.to_uri }, false]],
         | 
| 61 | 
            -
                NEW_BNODE:    [[-> { "_:#{ | 
| 62 | 
            -
             | 
| 63 | 
            -
              }
         | 
| 65 | 
            +
                NEW_BNODE:    [[-> { "_:#{random_uuid_ncname}" }, false]],
         | 
| 66 | 
            +
              }.freeze
         | 
| 64 67 |  | 
| 65 68 | 
             
              # just the classics
         | 
| 66 69 | 
             
              DEFAULT_NS = {
         | 
| @@ -70,15 +73,14 @@ class RDF::KV | |
| 70 73 | 
             
                xsd:  RDF::XSD,
         | 
| 71 74 | 
             
              }.freeze
         | 
| 72 75 |  | 
| 76 | 
            +
              # Given a (massaged) set of macros, dereference the given array of
         | 
| 77 | 
            +
              # strings and return it.
         | 
| 73 78 | 
             
              def deref_content strings, macros
         | 
| 74 79 | 
             
                strings = [strings] unless strings.is_a? Array
         | 
| 75 80 | 
             
                # bail out early if there is nothing to do
         | 
| 76 81 | 
             
                return strings unless strings.any? { |s| /#{MACRO}/o.match s }
         | 
| 77 82 | 
             
                out = []
         | 
| 78 83 | 
             
                strings.each do |s|
         | 
| 79 | 
            -
                  # sometimes these are arrays of arrays
         | 
| 80 | 
            -
                  #s = s.first if s.is_a? Array
         | 
| 81 | 
            -
             | 
| 82 84 | 
             
                  # chunks are parallel output; each element is a value
         | 
| 83 85 | 
             
                  chunks = []
         | 
| 84 86 | 
             
                  s.scan(/\G#{MACROS}/o) do |m|
         | 
| @@ -125,6 +127,10 @@ class RDF::KV | |
| 125 127 | 
             
                out
         | 
| 126 128 | 
             
              end
         | 
| 127 129 |  | 
| 130 | 
            +
              # Given the structure of macro declarations, dereference any
         | 
| 131 | 
            +
              # recursively-defined macros, and return a new structure with a key
         | 
| 132 | 
            +
              # and array of _values_, rather than an array of `[value, deref]`
         | 
| 133 | 
            +
              # pairs.
         | 
| 128 134 | 
             
              def massage_macros macros
         | 
| 129 135 | 
             
                seen = {}
         | 
| 130 136 | 
             
                done = GENERATED.transform_values { |v| v.map { |w| w.first } }
         | 
| @@ -147,9 +153,7 @@ class RDF::KV | |
| 147 153 | 
             
                    next unless deref
         | 
| 148 154 |  | 
| 149 155 | 
             
                    if deref.is_a? Array
         | 
| 150 | 
            -
                      deref.each  | 
| 151 | 
            -
                        done[m] ? dm[m] = true : pm[m] = true
         | 
| 152 | 
            -
                      end
         | 
| 156 | 
            +
                      deref.each { |m| done[m] ? dm[m] = true : pm[m] = true }
         | 
| 153 157 | 
             
                    else
         | 
| 154 158 | 
             
                      m = {}
         | 
| 155 159 | 
             
                      val.scan(/#{MACRO}/o).compact.each do |x|
         | 
| @@ -161,7 +165,8 @@ class RDF::KV | |
| 161 165 |  | 
| 162 166 | 
             
                        done[m] ? dm[m] = true : pm[m] = true
         | 
| 163 167 | 
             
                      end
         | 
| 164 | 
            -
             | 
| 168 | 
            +
             | 
| 169 | 
            +
                      # replace the deref flag with the elements to deref with
         | 
| 165 170 | 
             
                      pair[1] = m.empty? ? false : m.keys.sort
         | 
| 166 171 | 
             
                    end
         | 
| 167 172 | 
             
                  end
         | 
| @@ -174,6 +179,7 @@ class RDF::KV | |
| 174 179 | 
             
                      q << m
         | 
| 175 180 | 
             
                    end
         | 
| 176 181 |  | 
| 182 | 
            +
                    # put the current key back on the queue but put the dependencies first
         | 
| 177 183 | 
             
                    queue = q + [k] + queue
         | 
| 178 184 | 
             
                    next
         | 
| 179 185 | 
             
                  end
         | 
| @@ -205,7 +211,7 @@ class RDF::KV | |
| 205 211 | 
             
                # ugh now we gotta do urls
         | 
| 206 212 | 
             
                if m = /^(#{NCNAME}):(\S*)$/o.match(term)
         | 
| 207 213 | 
             
                  prefix, slug = m.captures
         | 
| 208 | 
            -
                  if !slug.start_with?(?/) and vocab =  | 
| 214 | 
            +
                  if !slug.start_with?(?/) and vocab = prefixes[prefix.to_sym]
         | 
| 209 215 | 
             
                    return vocab[slug]
         | 
| 210 216 | 
             
                  end
         | 
| 211 217 | 
             
                end
         | 
| @@ -238,37 +244,39 @@ class RDF::KV | |
| 238 244 |  | 
| 239 245 | 
             
                # call the callback if we have one
         | 
| 240 246 | 
             
                term = callback.call term if callback
         | 
| 241 | 
            -
             | 
| 247 | 
            +
             | 
| 242 248 | 
             
                term
         | 
| 243 249 | 
             
              end
         | 
| 244 250 |  | 
| 245 251 | 
             
              public
         | 
| 246 252 |  | 
| 247 | 
            -
              attr_reader :subject, :graph, : | 
| 253 | 
            +
              attr_reader :subject, :graph, :prefixes, :callback
         | 
| 254 | 
            +
              # why is this :target, :source
         | 
| 255 | 
            +
              alias_method :namespaces, :prefixes
         | 
| 248 256 |  | 
| 249 257 | 
             
              # Initialize the processor.
         | 
| 250 258 | 
             
              #
         | 
| 251 | 
            -
              # @param subject | 
| 252 | 
            -
              # @param graph | 
| 253 | 
            -
              # @param  | 
| 254 | 
            -
              # @param callback | 
| 259 | 
            +
              # @param subject  [RDF::URI] The default subject. Required.
         | 
| 260 | 
            +
              # @param graph    [RDF::URI] The default context. Optional.
         | 
| 261 | 
            +
              # @param prefixes [Hash]     Namespace/prefix mappings. Optional.
         | 
| 262 | 
            +
              # @param callback [#call]    A callback that expects and returns a term.
         | 
| 255 263 | 
             
              #  Optional.
         | 
| 256 264 | 
             
              #
         | 
| 257 | 
            -
              def initialize subject: nil, graph: nil,  | 
| 265 | 
            +
              def initialize subject: nil, graph: nil, prefixes: {}, callback: nil
         | 
| 258 266 | 
             
                # look at all of our pretty assertions
         | 
| 259 267 | 
             
                raise ArgumentError, 'subject must be an RDF::Resource' unless
         | 
| 260 268 | 
             
                  subject.is_a? RDF::Resource
         | 
| 261 269 | 
             
                raise ArgumentError, 'graph must be an RDF::Resource' unless
         | 
| 262 270 | 
             
                  graph.nil? or graph.is_a? RDF::Resource
         | 
| 263 | 
            -
                raise ArgumentError, ' | 
| 264 | 
            -
                   | 
| 271 | 
            +
                raise ArgumentError, 'prefixes must be hashable' unless
         | 
| 272 | 
            +
                  prefixes.respond_to? :to_h
         | 
| 265 273 | 
             
                rase ArgumentError, 'callback must be callable' unless
         | 
| 266 274 | 
             
                  callback.nil? or callback.respond_to? :call
         | 
| 267 275 |  | 
| 268 | 
            -
                @subject | 
| 269 | 
            -
                @graph | 
| 270 | 
            -
                @callback | 
| 271 | 
            -
                @ | 
| 276 | 
            +
                @subject  = subject
         | 
| 277 | 
            +
                @graph    = graph
         | 
| 278 | 
            +
                @callback = callback
         | 
| 279 | 
            +
                @prefixes = DEFAULT_NS.merge(prefixes.to_h.map do |k, v|
         | 
| 272 280 | 
             
                  k = k.to_s.to_sym    unless k.is_a? Symbol
         | 
| 273 281 | 
             
                  # coerce to uri
         | 
| 274 282 | 
             
                  v = RDF::URI(v.to_s) unless v.is_a? RDF::Resource
         | 
| @@ -327,7 +335,7 @@ class RDF::KV | |
| 327 335 | 
             
                  end
         | 
| 328 336 | 
             
                rescue Exception => e
         | 
| 329 337 | 
             
                  # again this should be nicer
         | 
| 330 | 
            -
                  raise e
         | 
| 338 | 
            +
                  raise Error.new e
         | 
| 331 339 | 
             
                end
         | 
| 332 340 |  | 
| 333 341 | 
             
                # this will be our output
         | 
| @@ -384,7 +392,10 @@ class RDF::KV | |
| 384 392 | 
             
                      o = contents[:term2] || subject
         | 
| 385 393 | 
             
                    else
         | 
| 386 394 | 
             
                      s, p = (contents[:term2] ? contents.values_at(:term1, :term2) :
         | 
| 387 | 
            -
                              [subject, contents[:term1]]).map  | 
| 395 | 
            +
                              [subject, contents[:term1]]).map do |t|
         | 
| 396 | 
            +
                          t = resolve_term t
         | 
| 397 | 
            +
                          callback ? callback.call(t) : t
         | 
| 398 | 
            +
                      end
         | 
| 388 399 | 
             
                    end
         | 
| 389 400 |  | 
| 390 401 | 
             
                    # the operation depends on whether the `-` modifier is present
         | 
| @@ -394,9 +405,13 @@ class RDF::KV | |
| 394 405 | 
             
                    # string then we're deleting a wildcard, same if we `=` overwrite
         | 
| 395 406 | 
             
                    if !reverse and op == :delete && values.include?('') ||
         | 
| 396 407 | 
             
                        contents[:modifier][?=]
         | 
| 408 | 
            +
             | 
| 409 | 
            +
                      # create a random variable name so we don't pass in a nil
         | 
| 410 | 
            +
                      var = RDF::Query::Variable.new random_uuid_ncname
         | 
| 411 | 
            +
             | 
| 397 412 | 
             
                      # i can't remember why we don't do this in reverse, probably
         | 
| 398 413 | 
             
                      # because it is too easy to shoot yourself in the foot
         | 
| 399 | 
            -
                      patch.delete RDF::Statement(s, p,  | 
| 414 | 
            +
                      patch.delete RDF::Statement(s, p, var, graph_name: g)
         | 
| 400 415 |  | 
| 401 416 | 
             
                      # nuke these since it will be pointless to evaluate further
         | 
| 402 417 | 
             
                      values.clear if op == :delete
         | 
| @@ -418,4 +433,6 @@ class RDF::KV | |
| 418 433 |  | 
| 419 434 | 
             
                patch
         | 
| 420 435 | 
             
              end
         | 
| 436 | 
            +
             | 
| 437 | 
            +
              class Error < RuntimeError; end
         | 
| 421 438 | 
             
            end
         | 
    
        data/lib/rdf-kv.rb
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            require 'rdf/kv'
         | 
    
        data/rdf-kv.gemspec
    CHANGED
    
    | @@ -29,16 +29,18 @@ RDF::Changeset. | |
| 29 29 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 30 30 | 
             
              spec.require_paths = ['lib']
         | 
| 31 31 |  | 
| 32 | 
            -
              spec.required_ruby_version = Gem::Requirement.new('>= 2. | 
| 32 | 
            +
              spec.required_ruby_version = Gem::Requirement.new('>= 2.7')
         | 
| 33 33 | 
             
              # dev/test dependencies
         | 
| 34 34 | 
             
              spec.add_development_dependency 'bundler',   '~> 2'
         | 
| 35 | 
            -
              spec.add_development_dependency ' | 
| 35 | 
            +
              spec.add_development_dependency 'rake',      '~> 13'
         | 
| 36 | 
            +
              spec.add_development_dependency 'rspec',     '~> 3'
         | 
| 37 | 
            +
              spec.add_development_dependency 'rdf-vocab', '~> 3'
         | 
| 36 38 |  | 
| 37 39 | 
             
              # stuff we use
         | 
| 38 | 
            -
              spec.add_runtime_dependency 'rdf',       ' | 
| 40 | 
            +
              spec.add_runtime_dependency 'rdf',       '~> 3' # include my changes
         | 
| 39 41 | 
             
              spec.add_runtime_dependency 'uuidtools', '~> 2'
         | 
| 40 42 |  | 
| 41 43 | 
             
              # stuff i wrote
         | 
| 42 | 
            -
              spec.add_runtime_dependency 'uuid-ncname', '>= 0. | 
| 44 | 
            +
              spec.add_runtime_dependency 'uuid-ncname', '>= 0.4'
         | 
| 43 45 |  | 
| 44 46 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rdf-kv
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dorian Taylor
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-02-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -24,34 +24,62 @@ dependencies: | |
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '2'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: rake
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '13'
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '13'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rspec
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '3'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '3'
         | 
| 27 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 56 | 
             
              name: rdf-vocab
         | 
| 29 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 58 | 
             
                requirements:
         | 
| 31 59 | 
             
                - - "~>"
         | 
| 32 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '3 | 
| 61 | 
            +
                    version: '3'
         | 
| 34 62 | 
             
              type: :development
         | 
| 35 63 | 
             
              prerelease: false
         | 
| 36 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 65 | 
             
                requirements:
         | 
| 38 66 | 
             
                - - "~>"
         | 
| 39 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '3 | 
| 68 | 
            +
                    version: '3'
         | 
| 41 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 70 | 
             
              name: rdf
         | 
| 43 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 72 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 73 | 
            +
                - - "~>"
         | 
| 46 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 3 | 
| 75 | 
            +
                    version: '3'
         | 
| 48 76 | 
             
              type: :runtime
         | 
| 49 77 | 
             
              prerelease: false
         | 
| 50 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 79 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 80 | 
            +
                - - "~>"
         | 
| 53 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 3 | 
| 82 | 
            +
                    version: '3'
         | 
| 55 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 84 | 
             
              name: uuidtools
         | 
| 57 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -72,14 +100,14 @@ dependencies: | |
| 72 100 | 
             
                requirements:
         | 
| 73 101 | 
             
                - - ">="
         | 
| 74 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: 0. | 
| 103 | 
            +
                    version: '0.4'
         | 
| 76 104 | 
             
              type: :runtime
         | 
| 77 105 | 
             
              prerelease: false
         | 
| 78 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 107 | 
             
                requirements:
         | 
| 80 108 | 
             
                - - ">="
         | 
| 81 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: 0. | 
| 110 | 
            +
                    version: '0.4'
         | 
| 83 111 | 
             
            description: |
         | 
| 84 112 | 
             
              This module implements https://doriantaylor.com/rdf-kv, taking
         | 
| 85 113 | 
             
              key-value input (e.g. from a Web form) and converting it into an
         | 
| @@ -93,12 +121,14 @@ files: | |
| 93 121 | 
             
            - ".gitignore"
         | 
| 94 122 | 
             
            - ".rspec"
         | 
| 95 123 | 
             
            - ".travis.yml"
         | 
| 124 | 
            +
            - ".yardopts"
         | 
| 96 125 | 
             
            - Gemfile
         | 
| 97 126 | 
             
            - LICENSE
         | 
| 98 127 | 
             
            - README.md
         | 
| 99 128 | 
             
            - Rakefile
         | 
| 100 129 | 
             
            - bin/console
         | 
| 101 130 | 
             
            - bin/setup
         | 
| 131 | 
            +
            - lib/rdf-kv.rb
         | 
| 102 132 | 
             
            - lib/rdf/kv.rb
         | 
| 103 133 | 
             
            - lib/rdf/kv/version.rb
         | 
| 104 134 | 
             
            - rdf-kv.gemspec
         | 
| @@ -107,7 +137,7 @@ licenses: | |
| 107 137 | 
             
            - Apache-2.0
         | 
| 108 138 | 
             
            metadata:
         | 
| 109 139 | 
             
              homepage_uri: https://github.com/doriantaylor/rb-rdf-kv
         | 
| 110 | 
            -
            post_install_message: | 
| 140 | 
            +
            post_install_message:
         | 
| 111 141 | 
             
            rdoc_options: []
         | 
| 112 142 | 
             
            require_paths:
         | 
| 113 143 | 
             
            - lib
         | 
| @@ -115,15 +145,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 115 145 | 
             
              requirements:
         | 
| 116 146 | 
             
              - - ">="
         | 
| 117 147 | 
             
                - !ruby/object:Gem::Version
         | 
| 118 | 
            -
                  version: 2. | 
| 148 | 
            +
                  version: '2.7'
         | 
| 119 149 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 120 150 | 
             
              requirements:
         | 
| 121 151 | 
             
              - - ">="
         | 
| 122 152 | 
             
                - !ruby/object:Gem::Version
         | 
| 123 153 | 
             
                  version: '0'
         | 
| 124 154 | 
             
            requirements: []
         | 
| 125 | 
            -
            rubygems_version: 3. | 
| 126 | 
            -
            signing_key: | 
| 155 | 
            +
            rubygems_version: 3.3.15
         | 
| 156 | 
            +
            signing_key:
         | 
| 127 157 | 
             
            specification_version: 4
         | 
| 128 158 | 
             
            summary: Ruby implementation of the RDF-KV protocol
         | 
| 129 159 | 
             
            test_files: []
         |