Sha256: 0debb1b9dba147952dac57a929aa7dcf9afa18c596bb5920cd10a91559589281

Contents?: true

Size: 1.01 KB

Versions: 25

Compression:

Stored size: 1.01 KB

Contents

module SPARQL; module Algebra
  class Operator
    ##
    # The SPARQL `sample` set function.
    #
    # @example
    #   (prefix ((: <http://www.example.org/>))
    #     (filter (|| (|| (= ?sample 1.0) (= ?sample 2.2)) (= ?sample 3.5))
    #       (project (?sample)
    #         (extend ((?sample ?.0))
    #           (group () ((?.0 (sample ?o)))
    #             (bgp (triple ?s :dec ?o)))))))
    #
    # @see http://www.w3.org/TR/sparql11-query/#defn_aggSample
    class Sample < Operator::Unary
      include Aggregate

      NAME = :sample

      ##
      # Sample is a set function which returns an arbitrary value from the multiset passed to it.
      #
      # @param  [Enumerable<Array<RDF::Term>>] enum
      #   enum of evaluated operand
      # @return [RDF::Term] An arbitrary term
      # @raise  [TypeError] If enum is empty
      def apply(enum)
        enum.detect(lambda {raise TypeError, "Sampling an empty multiset"}) {|e| e.first}.first
      end
    end # LCase
  end # Operator
end; end # SPARQL::Algebra

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
sparql-3.0.2 lib/sparql/algebra/operator/sample.rb
sparql-3.0.1 lib/sparql/algebra/operator/sample.rb
sparql-3.0.0 lib/sparql/algebra/operator/sample.rb
sparql-2.2.2 lib/sparql/algebra/operator/sample.rb
sparql-2.2.1 lib/sparql/algebra/operator/sample.rb
sparql-2.2.0 lib/sparql/algebra/operator/sample.rb
sparql-2.1.0 lib/sparql/algebra/operator/sample.rb
sparql-2.0.0 lib/sparql/algebra/operator/sample.rb
sparql-2.0.0.beta2 lib/sparql/algebra/operator/sample.rb
sparql-1.99.1 lib/sparql/algebra/operator/sample.rb
sparql-2.0.0.beta1 lib/sparql/algebra/operator/sample.rb
sparql-1.1.9.1 lib/sparql/algebra/operator/sample.rb
sparql-1.99.0 lib/sparql/algebra/operator/sample.rb
sparql-1.1.9 lib/sparql/algebra/operator/sample.rb
sparql-1.1.8 lib/sparql/algebra/operator/sample.rb
sparql-1.1.7 lib/sparql/algebra/operator/sample.rb
sparql-1.1.6 lib/sparql/algebra/operator/sample.rb
sparql-1.1.5 lib/sparql/algebra/operator/sample.rb
sparql-1.1.4 lib/sparql/algebra/operator/sample.rb
sparql-1.1.3 lib/sparql/algebra/operator/sample.rb