sparql 3.1.5 → 3.2.0
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/README.md +35 -28
 - data/VERSION +1 -1
 - data/bin/sparql +14 -4
 - data/lib/sparql/algebra/aggregate.rb +1 -1
 - data/lib/sparql/algebra/evaluatable.rb +4 -4
 - data/lib/sparql/algebra/expression.rb +4 -1
 - data/lib/sparql/algebra/extensions.rb +96 -29
 - data/lib/sparql/algebra/operator/abs.rb +23 -3
 - data/lib/sparql/algebra/operator/add.rb +21 -2
 - data/lib/sparql/algebra/operator/alt.rb +26 -2
 - data/lib/sparql/algebra/operator/and.rb +25 -3
 - data/lib/sparql/algebra/operator/asc.rb +20 -1
 - data/lib/sparql/algebra/operator/ask.rb +17 -1
 - data/lib/sparql/algebra/operator/avg.rb +18 -2
 - data/lib/sparql/algebra/operator/base.rb +18 -1
 - data/lib/sparql/algebra/operator/bgp.rb +5 -1
 - data/lib/sparql/algebra/operator/bnode.rb +34 -11
 - data/lib/sparql/algebra/operator/bound.rb +22 -1
 - data/lib/sparql/algebra/operator/ceil.rb +26 -3
 - data/lib/sparql/algebra/operator/clear.rb +16 -2
 - data/lib/sparql/algebra/operator/coalesce.rb +33 -11
 - data/lib/sparql/algebra/operator/compare.rb +48 -33
 - data/lib/sparql/algebra/operator/concat.rb +26 -2
 - data/lib/sparql/algebra/operator/construct.rb +31 -7
 - data/lib/sparql/algebra/operator/contains.rb +25 -3
 - data/lib/sparql/algebra/operator/copy.rb +19 -2
 - data/lib/sparql/algebra/operator/count.rb +18 -2
 - data/lib/sparql/algebra/operator/create.rb +19 -2
 - data/lib/sparql/algebra/operator/dataset.rb +17 -0
 - data/lib/sparql/algebra/operator/datatype.rb +26 -7
 - data/lib/sparql/algebra/operator/day.rb +24 -6
 - data/lib/sparql/algebra/operator/delete.rb +27 -2
 - data/lib/sparql/algebra/operator/delete_data.rb +23 -2
 - data/lib/sparql/algebra/operator/delete_where.rb +24 -2
 - data/lib/sparql/algebra/operator/desc.rb +20 -1
 - data/lib/sparql/algebra/operator/describe.rb +27 -4
 - data/lib/sparql/algebra/operator/distinct.rb +18 -1
 - data/lib/sparql/algebra/operator/divide.rb +27 -3
 - data/lib/sparql/algebra/operator/drop.rb +17 -2
 - data/lib/sparql/algebra/operator/encode_for_uri.rb +25 -3
 - data/lib/sparql/algebra/operator/equal.rb +13 -3
 - data/lib/sparql/algebra/operator/exists.rb +28 -4
 - data/lib/sparql/algebra/operator/exprlist.rb +12 -1
 - data/lib/sparql/algebra/operator/extend.rb +33 -18
 - data/lib/sparql/algebra/operator/filter.rb +27 -5
 - data/lib/sparql/algebra/operator/floor.rb +26 -3
 - data/lib/sparql/algebra/operator/graph.rb +13 -0
 - data/lib/sparql/algebra/operator/greater_than.rb +14 -4
 - data/lib/sparql/algebra/operator/greater_than_or_equal.rb +14 -4
 - data/lib/sparql/algebra/operator/group.rb +34 -8
 - data/lib/sparql/algebra/operator/group_concat.rb +20 -8
 - data/lib/sparql/algebra/operator/hours.rb +24 -6
 - data/lib/sparql/algebra/operator/if.rb +21 -4
 - data/lib/sparql/algebra/operator/in.rb +18 -1
 - data/lib/sparql/algebra/operator/insert.rb +22 -2
 - data/lib/sparql/algebra/operator/insert_data.rb +23 -2
 - data/lib/sparql/algebra/operator/iri.rb +22 -5
 - data/lib/sparql/algebra/operator/is_blank.rb +20 -2
 - data/lib/sparql/algebra/operator/is_iri.rb +20 -2
 - data/lib/sparql/algebra/operator/is_literal.rb +20 -2
 - data/lib/sparql/algebra/operator/is_numeric.rb +22 -4
 - data/lib/sparql/algebra/operator/is_triple.rb +62 -0
 - data/lib/sparql/algebra/operator/join.rb +22 -1
 - data/lib/sparql/algebra/operator/lang.rb +26 -1
 - data/lib/sparql/algebra/operator/lang_matches.rb +23 -2
 - data/lib/sparql/algebra/operator/lcase.rb +24 -3
 - data/lib/sparql/algebra/operator/left_join.rb +29 -1
 - data/lib/sparql/algebra/operator/less_than.rb +14 -4
 - data/lib/sparql/algebra/operator/less_than_or_equal.rb +14 -4
 - data/lib/sparql/algebra/operator/load.rb +25 -2
 - data/lib/sparql/algebra/operator/max.rb +18 -2
 - data/lib/sparql/algebra/operator/md5.rb +23 -6
 - data/lib/sparql/algebra/operator/min.rb +19 -3
 - data/lib/sparql/algebra/operator/minus.rb +25 -7
 - data/lib/sparql/algebra/operator/minutes.rb +24 -6
 - data/lib/sparql/algebra/operator/modify.rb +41 -5
 - data/lib/sparql/algebra/operator/month.rb +24 -6
 - data/lib/sparql/algebra/operator/move.rb +20 -2
 - data/lib/sparql/algebra/operator/multiply.rb +27 -4
 - data/lib/sparql/algebra/operator/negate.rb +24 -4
 - data/lib/sparql/algebra/operator/not.rb +25 -4
 - data/lib/sparql/algebra/operator/not_equal.rb +16 -1
 - data/lib/sparql/algebra/operator/notexists.rb +30 -6
 - data/lib/sparql/algebra/operator/notin.rb +20 -3
 - data/lib/sparql/algebra/operator/notoneof.rb +12 -2
 - data/lib/sparql/algebra/operator/now.rb +25 -6
 - data/lib/sparql/algebra/operator/object.rb +59 -0
 - data/lib/sparql/algebra/operator/or.rb +26 -3
 - data/lib/sparql/algebra/operator/order.rb +27 -2
 - data/lib/sparql/algebra/operator/path.rb +29 -2
 - data/lib/sparql/algebra/operator/path_opt.rb +21 -2
 - data/lib/sparql/algebra/operator/path_plus.rb +21 -2
 - data/lib/sparql/algebra/operator/path_star.rb +20 -2
 - data/lib/sparql/algebra/operator/plus.rb +43 -4
 - data/lib/sparql/algebra/operator/predicate.rb +59 -0
 - data/lib/sparql/algebra/operator/prefix.rb +24 -3
 - data/lib/sparql/algebra/operator/project.rb +51 -5
 - data/lib/sparql/algebra/operator/rand.rb +31 -3
 - data/lib/sparql/algebra/operator/reduced.rb +18 -1
 - data/lib/sparql/algebra/operator/regex.rb +27 -19
 - data/lib/sparql/algebra/operator/replace.rb +27 -7
 - data/lib/sparql/algebra/operator/reverse.rb +20 -2
 - data/lib/sparql/algebra/operator/round.rb +26 -3
 - data/lib/sparql/algebra/operator/same_term.rb +25 -7
 - data/lib/sparql/algebra/operator/sample.rb +31 -9
 - data/lib/sparql/algebra/operator/seconds.rb +24 -6
 - data/lib/sparql/algebra/operator/seq.rb +20 -2
 - data/lib/sparql/algebra/operator/sequence.rb +0 -10
 - data/lib/sparql/algebra/operator/sha1.rb +19 -2
 - data/lib/sparql/algebra/operator/sha256.rb +19 -2
 - data/lib/sparql/algebra/operator/sha384.rb +19 -2
 - data/lib/sparql/algebra/operator/sha512.rb +19 -2
 - data/lib/sparql/algebra/operator/slice.rb +27 -5
 - data/lib/sparql/algebra/operator/str.rb +22 -2
 - data/lib/sparql/algebra/operator/strafter.rb +26 -3
 - data/lib/sparql/algebra/operator/strbefore.rb +26 -3
 - data/lib/sparql/algebra/operator/strdt.rb +23 -2
 - data/lib/sparql/algebra/operator/strends.rb +26 -4
 - data/lib/sparql/algebra/operator/strlang.rb +26 -7
 - data/lib/sparql/algebra/operator/strlen.rb +24 -3
 - data/lib/sparql/algebra/operator/strstarts.rb +26 -3
 - data/lib/sparql/algebra/operator/struuid.rb +30 -10
 - data/lib/sparql/algebra/operator/subject.rb +61 -0
 - data/lib/sparql/algebra/operator/substr.rb +24 -3
 - data/lib/sparql/algebra/operator/subtract.rb +29 -3
 - data/lib/sparql/algebra/operator/sum.rb +18 -2
 - data/lib/sparql/algebra/operator/table.rb +42 -4
 - data/lib/sparql/algebra/operator/timezone.rb +24 -6
 - data/lib/sparql/algebra/operator/tz.rb +23 -6
 - data/lib/sparql/algebra/operator/ucase.rb +24 -3
 - data/lib/sparql/algebra/operator/union.rb +29 -6
 - data/lib/sparql/algebra/operator/update.rb +25 -4
 - data/lib/sparql/algebra/operator/using.rb +32 -2
 - data/lib/sparql/algebra/operator/uuid.rb +28 -9
 - data/lib/sparql/algebra/operator/with.rb +38 -4
 - data/lib/sparql/algebra/operator/year.rb +24 -6
 - data/lib/sparql/algebra/operator.rb +112 -7
 - data/lib/sparql/algebra/sxp_extensions.rb +3 -3
 - data/lib/sparql/grammar/meta.rb +5390 -2410
 - data/lib/sparql/grammar/parser11.rb +119 -53
 - data/lib/sparql/grammar/terminals11.rb +2 -0
 - data/lib/sparql/grammar.rb +0 -25
 - metadata +40 -34
 
| 
         @@ -23,6 +23,7 @@ module SPARQL::Grammar 
     | 
|
| 
       23 
23 
     | 
    
         
             
                  STRAFTER STRBEFORE STRDT STRENDS STRLANG STRLEN STRSTARTS STRUUID STR
         
     | 
| 
       24 
24 
     | 
    
         
             
                  TIMEZONE TZ UCASE URI UUID YEAR
         
     | 
| 
       25 
25 
     | 
    
         
             
                  isBLANK isIRI isURI isLITERAL isNUMERIC sameTerm
         
     | 
| 
      
 26 
     | 
    
         
            +
                  isTRIPLE TRIPLE SUBJECT PREDICATE OBJECT
         
     | 
| 
       26 
27 
     | 
    
         
             
                }.map {|s| s.downcase.to_sym}.freeze
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
       28 
29 
     | 
    
         
             
                BUILTIN_RULES = [:aggregate, :regex, :substr, :replace, :exists, :notexists].freeze
         
     | 
| 
         @@ -184,6 +185,7 @@ module SPARQL::Grammar 
     | 
|
| 
       184 
185 
     | 
    
         
             
                     |STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|STRUUID|SUBSTR|STR|SUM
         
     | 
| 
       185 
186 
     | 
    
         
             
                     |TIMEZONE|TZ|UCASE|UNDEF|URI|UUID|YEAR
         
     | 
| 
       186 
187 
     | 
    
         
             
                     |isBLANK|isIRI|isURI|isLITERAL|isNUMERIC|sameTerm
         
     | 
| 
      
 188 
     | 
    
         
            +
                     |isTRIPLE|TRIPLE|SUBJECT|PREDICATE|OBJECT
         
     | 
| 
       187 
189 
     | 
    
         
             
                    }x
         
     | 
| 
       188 
190 
     | 
    
         
             
                    add_prod_datum(token.value.downcase.to_sym, token.value.downcase.to_sym)
         
     | 
| 
       189 
191 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -647,7 +649,7 @@ module SPARQL::Grammar 
     | 
|
| 
       647 
649 
     | 
    
         
             
                  data[:input_query] = input.delete(:query) || [SPARQL::Algebra::Operator::BGP.new]
         
     | 
| 
       648 
650 
     | 
    
         
             
                end
         
     | 
| 
       649 
651 
     | 
    
         
             
                production(:GraphPatternNotTriples) do |input, data, callback|
         
     | 
| 
       650 
     | 
    
         
            -
                  lhs = data[:input_query].first
         
     | 
| 
      
 652 
     | 
    
         
            +
                  lhs = Array(data[:input_query]).first
         
     | 
| 
       651 
653 
     | 
    
         | 
| 
       652 
654 
     | 
    
         
             
                  # Filter trickls up to GroupGraphPatternSub
         
     | 
| 
       653 
655 
     | 
    
         
             
                  add_prod_datum(:filter, data[:filter])
         
     | 
| 
         @@ -701,9 +703,9 @@ module SPARQL::Grammar 
     | 
|
| 
       701 
703 
     | 
    
         
             
                  end
         
     | 
| 
       702 
704 
     | 
    
         
             
                end
         
     | 
| 
       703 
705 
     | 
    
         | 
| 
       704 
     | 
    
         
            -
                # [60]  Bind                    ::= 'BIND' '('  
     | 
| 
      
 706 
     | 
    
         
            +
                # [60]  Bind                    ::= 'BIND' '(' Expression 'AS' Var ')'
         
     | 
| 
       705 
707 
     | 
    
         
             
                production(:Bind) do |input, data, callback|
         
     | 
| 
       706 
     | 
    
         
            -
                  add_prod_datum :extend, [ 
     | 
| 
      
 708 
     | 
    
         
            +
                  add_prod_datum :extend, [data[:Expression].unshift(data[:Var].first)]
         
     | 
| 
       707 
709 
     | 
    
         
             
                end
         
     | 
| 
       708 
710 
     | 
    
         | 
| 
       709 
711 
     | 
    
         
             
                # [61]  InlineData	            ::= 'VALUES' DataBlock
         
     | 
| 
         @@ -752,7 +754,7 @@ module SPARQL::Grammar 
     | 
|
| 
       752 
754 
     | 
    
         
             
                  end
         
     | 
| 
       753 
755 
     | 
    
         
             
                end
         
     | 
| 
       754 
756 
     | 
    
         | 
| 
       755 
     | 
    
         
            -
                # [65]  DataBlockValue	        ::= iri | RDFLiteral | NumericLiteral | BooleanLiteral | 'UNDEF'
         
     | 
| 
      
 757 
     | 
    
         
            +
                # [65]  DataBlockValue	        ::= QuotedTriple | iri | RDFLiteral | NumericLiteral | BooleanLiteral | 'UNDEF'
         
     | 
| 
       756 
758 
     | 
    
         
             
                production(:DataBlockValue) do |input, data, callback|
         
     | 
| 
       757 
759 
     | 
    
         
             
                  add_prod_datum :DataBlockValue, data.values.first
         
     | 
| 
       758 
760 
     | 
    
         
             
                end
         
     | 
| 
         @@ -831,7 +833,7 @@ module SPARQL::Grammar 
     | 
|
| 
       831 
833 
     | 
    
         
             
                  add_prod_datum(:ConstructTemplate, data[:ConstructTemplate])
         
     | 
| 
       832 
834 
     | 
    
         
             
                end
         
     | 
| 
       833 
835 
     | 
    
         | 
| 
       834 
     | 
    
         
            -
                # [75]  	TriplesSameSubject	  ::=  	 
     | 
| 
      
 836 
     | 
    
         
            +
                # [75]  	TriplesSameSubject	  ::=  	VarOrTermOrQuotedTP PropertyListNotEmpty
         
     | 
| 
       835 
837 
     | 
    
         
             
                #                                 |	TriplesNode PropertyList
         
     | 
| 
       836 
838 
     | 
    
         
             
                production(:TriplesSameSubject) do |input, data, callback|
         
     | 
| 
       837 
839 
     | 
    
         
             
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
         @@ -840,8 +842,8 @@ module SPARQL::Grammar 
     | 
|
| 
       840 
842 
     | 
    
         
             
                # [77]  	PropertyListNotEmpty	  ::=  	Verb ObjectList
         
     | 
| 
       841 
843 
     | 
    
         
             
                #                                       ( ';' ( Verb ObjectList )? )*
         
     | 
| 
       842 
844 
     | 
    
         
             
                start_production(:PropertyListNotEmpty) do |input, data, callback|
         
     | 
| 
       843 
     | 
    
         
            -
                  subject = input[: 
     | 
| 
       844 
     | 
    
         
            -
                  error(nil, "Expected  
     | 
| 
      
 845 
     | 
    
         
            +
                  subject = input[:VarOrTermOrQuotedTP] || input[:TriplesNode] || input[:GraphNode]
         
     | 
| 
      
 846 
     | 
    
         
            +
                  error(nil, "Expected VarOrTermOrQuotedTP or TriplesNode or GraphNode", production: :PropertyListNotEmpty) if validate? && !subject
         
     | 
| 
       845 
847 
     | 
    
         
             
                  data[:Subject] = subject
         
     | 
| 
       846 
848 
     | 
    
         
             
                end
         
     | 
| 
       847 
849 
     | 
    
         
             
                production(:PropertyListNotEmpty) do |input, data, callback|
         
     | 
| 
         @@ -867,17 +869,13 @@ module SPARQL::Grammar 
     | 
|
| 
       867 
869 
     | 
    
         
             
                  add_prod_datum(:path, data[:path])
         
     | 
| 
       868 
870 
     | 
    
         
             
                end
         
     | 
| 
       869 
871 
     | 
    
         | 
| 
       870 
     | 
    
         
            -
                # [ 
     | 
| 
       871 
     | 
    
         
            -
                start_production(: 
     | 
| 
       872 
     | 
    
         
            -
                  data[: 
     | 
| 
       873 
     | 
    
         
            -
             
     | 
| 
       874 
     | 
    
         
            -
                production(:AnnotationPattern) do |input, data, callback|
         
     | 
| 
       875 
     | 
    
         
            -
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
      
 872 
     | 
    
         
            +
                # [80]  	Object	  ::=  	GraphNode AnnotationPattern?
         
     | 
| 
      
 873 
     | 
    
         
            +
                start_production(:Object) do |input, data, callback|
         
     | 
| 
      
 874 
     | 
    
         
            +
                  data[:Subject] = Array(input[:Subject]).first
         
     | 
| 
      
 875 
     | 
    
         
            +
                  data[:Verb] = Array(input[:Verb]).first
         
     | 
| 
       876 
876 
     | 
    
         
             
                end
         
     | 
| 
       877 
     | 
    
         
            -
             
     | 
| 
       878 
     | 
    
         
            -
                # [80]  	Object	  ::=  	GraphNode | EmbTP
         
     | 
| 
       879 
877 
     | 
    
         
             
                production(:Object) do |input, data, callback|
         
     | 
| 
       880 
     | 
    
         
            -
                  object = data[:GraphNode] 
     | 
| 
      
 878 
     | 
    
         
            +
                  object = data[:GraphNode]
         
     | 
| 
       881 
879 
     | 
    
         
             
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
       882 
880 
     | 
    
         
             
                  if object
         
     | 
| 
       883 
881 
     | 
    
         
             
                    if prod_data[:Verb]
         
     | 
| 
         @@ -891,8 +889,17 @@ module SPARQL::Grammar 
     | 
|
| 
       891 
889 
     | 
    
         
             
                    end
         
     | 
| 
       892 
890 
     | 
    
         
             
                  end
         
     | 
| 
       893 
891 
     | 
    
         
             
                end
         
     | 
| 
      
 892 
     | 
    
         
            +
                start_production(:_Object_1) do |input, data, callback|
         
     | 
| 
      
 893 
     | 
    
         
            +
                  pattern = RDF::Query::Pattern.new(input[:Subject], input[:Verb], input[:GraphNode].first)
         
     | 
| 
      
 894 
     | 
    
         
            +
                  error("ObjectPath", "Expected Verb",
         
     | 
| 
      
 895 
     | 
    
         
            +
                    production: :_Object_1) unless input[:Verb]
         
     | 
| 
      
 896 
     | 
    
         
            +
                  data[:TriplesNode] = [pattern]
         
     | 
| 
      
 897 
     | 
    
         
            +
                end
         
     | 
| 
      
 898 
     | 
    
         
            +
                production(:_Object_1) do |input, data, callback|
         
     | 
| 
      
 899 
     | 
    
         
            +
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
      
 900 
     | 
    
         
            +
                end
         
     | 
| 
       894 
901 
     | 
    
         | 
| 
       895 
     | 
    
         
            -
                # [81]	TriplesSameSubjectPath	::=	 
     | 
| 
      
 902 
     | 
    
         
            +
                # [81]	TriplesSameSubjectPath	::=	VarOrTermOrQuotedTP PropertyListPathNotEmpty | TriplesNode PropertyListPath
         
     | 
| 
       896 
903 
     | 
    
         
             
                production(:TriplesSameSubjectPath) do |input, data, callback|
         
     | 
| 
       897 
904 
     | 
    
         
             
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
       898 
905 
     | 
    
         
             
                  add_prod_datum(:path, data[:path])
         
     | 
| 
         @@ -900,8 +907,8 @@ module SPARQL::Grammar 
     | 
|
| 
       900 
907 
     | 
    
         | 
| 
       901 
908 
     | 
    
         
             
                # [83]  	PropertyListPathNotEmpty	  ::=  	( VerbPath | VerbSimple ) ObjectList ( ';' ( ( VerbPath | VerbSimple ) ObjectList )? )*
         
     | 
| 
       902 
909 
     | 
    
         
             
                start_production(:PropertyListPathNotEmpty) do |input, data, callback|
         
     | 
| 
       903 
     | 
    
         
            -
                  subject = input[: 
     | 
| 
       904 
     | 
    
         
            -
                  error(nil, "Expected  
     | 
| 
      
 910 
     | 
    
         
            +
                  subject = input[:VarOrTermOrQuotedTP] || input[:TriplesNode] || input[:GraphNode]
         
     | 
| 
      
 911 
     | 
    
         
            +
                  error(nil, "Expected VarOrTermOrQuotedTP, got nothing", production: :PropertyListPathNotEmpty) if validate? && !subject
         
     | 
| 
       905 
912 
     | 
    
         
             
                  data[:Subject] = subject
         
     | 
| 
       906 
913 
     | 
    
         
             
                end
         
     | 
| 
       907 
914 
     | 
    
         
             
                production(:PropertyListPathNotEmpty) do |input, data, callback|
         
     | 
| 
         @@ -941,9 +948,13 @@ module SPARQL::Grammar 
     | 
|
| 
       941 
948 
     | 
    
         
             
                  add_prod_datum(:path, data[:path])
         
     | 
| 
       942 
949 
     | 
    
         
             
                end
         
     | 
| 
       943 
950 
     | 
    
         | 
| 
       944 
     | 
    
         
            -
                # [87]  	ObjectPath	  ::=  	GraphNodePath
         
     | 
| 
      
 951 
     | 
    
         
            +
                # [87]  	ObjectPath	  ::=  	GraphNodePath AnnotationPatternPath?
         
     | 
| 
      
 952 
     | 
    
         
            +
                start_production(:ObjectPath) do |input, data, callback|
         
     | 
| 
      
 953 
     | 
    
         
            +
                  data[:Subject] = Array(input[:Subject]).first
         
     | 
| 
      
 954 
     | 
    
         
            +
                  data[:Verb] = Array(input[:Verb]).first
         
     | 
| 
      
 955 
     | 
    
         
            +
                end
         
     | 
| 
       945 
956 
     | 
    
         
             
                production(:ObjectPath) do |input, data, callback|
         
     | 
| 
       946 
     | 
    
         
            -
                  object = data[: 
     | 
| 
      
 957 
     | 
    
         
            +
                  object = data[:VarOrTermOrQuotedTP] || data[:TriplesNode] || data[:GraphNode]
         
     | 
| 
       947 
958 
     | 
    
         
             
                  if object
         
     | 
| 
       948 
959 
     | 
    
         
             
                    if prod_data[:Verb]
         
     | 
| 
       949 
960 
     | 
    
         
             
                      if data[:pattern] && data[:path]
         
     | 
| 
         @@ -951,6 +962,9 @@ module SPARQL::Grammar 
     | 
|
| 
       951 
962 
     | 
    
         
             
                        data[:pattern].unshift(RDF::Query::Pattern.new(prod_data[:Subject].first, prod_data[:Verb], object.first))
         
     | 
| 
       952 
963 
     | 
    
         
             
                        bgp = SPARQL::Algebra::Expression[:bgp, data[:pattern]]
         
     | 
| 
       953 
964 
     | 
    
         
             
                        add_prod_datum(:path, SPARQL::Algebra::Expression[:sequence, bgp, *data[:path]])
         
     | 
| 
      
 965 
     | 
    
         
            +
                      elsif data[:path]
         
     | 
| 
      
 966 
     | 
    
         
            +
                        # AnnotationPatternPath case
         
     | 
| 
      
 967 
     | 
    
         
            +
                        add_prod_datum(:path, data[:path])
         
     | 
| 
       954 
968 
     | 
    
         
             
                      else
         
     | 
| 
       955 
969 
     | 
    
         
             
                        add_pattern(:Object, subject: prod_data[:Subject], predicate: prod_data[:Verb], object: object)
         
     | 
| 
       956 
970 
     | 
    
         
             
                        add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
         @@ -964,6 +978,16 @@ module SPARQL::Grammar 
     | 
|
| 
       964 
978 
     | 
    
         
             
                    end
         
     | 
| 
       965 
979 
     | 
    
         
             
                  end
         
     | 
| 
       966 
980 
     | 
    
         
             
                end
         
     | 
| 
      
 981 
     | 
    
         
            +
                start_production(:_ObjectPath_1) do |input, data, callback|
         
     | 
| 
      
 982 
     | 
    
         
            +
                  pattern = RDF::Query::Pattern.new(input[:Subject], input[:Verb], input[:GraphNode].first)
         
     | 
| 
      
 983 
     | 
    
         
            +
                  error("ObjectPath", "Expected Verb",
         
     | 
| 
      
 984 
     | 
    
         
            +
                    production: :_ObjectPath_1) unless input[:Verb]
         
     | 
| 
      
 985 
     | 
    
         
            +
                  data[:TriplesNode] = [pattern]
         
     | 
| 
      
 986 
     | 
    
         
            +
                end
         
     | 
| 
      
 987 
     | 
    
         
            +
                production(:_ObjectPath_1) do |input, data, callback|
         
     | 
| 
      
 988 
     | 
    
         
            +
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
      
 989 
     | 
    
         
            +
                end
         
     | 
| 
      
 990 
     | 
    
         
            +
             
     | 
| 
       967 
991 
     | 
    
         
             
                # [88]  	Path	  ::=  	PathAlternative
         
     | 
| 
       968 
992 
     | 
    
         
             
                # output is a :Path or :iri
         
     | 
| 
       969 
993 
     | 
    
         
             
                production(:Path) do |input, data, callback|
         
     | 
| 
         @@ -1092,29 +1116,24 @@ module SPARQL::Grammar 
     | 
|
| 
       1092 
1116 
     | 
    
         
             
                  add_prod_datum(:path, data[:path])
         
     | 
| 
       1093 
1117 
     | 
    
         
             
                end
         
     | 
| 
       1094 
1118 
     | 
    
         | 
| 
       1095 
     | 
    
         
            -
                # [104]  	GraphNode	  ::=  	 
     | 
| 
      
 1119 
     | 
    
         
            +
                # [104]  	GraphNode	  ::=  	VarOrTermOrQuotedTP |	TriplesNode
         
     | 
| 
       1096 
1120 
     | 
    
         
             
                production(:GraphNode) do |input, data, callback|
         
     | 
| 
       1097 
     | 
    
         
            -
                  term = data[: 
     | 
| 
      
 1121 
     | 
    
         
            +
                  term = data[:VarOrTermOrQuotedTP] || data[:TriplesNode]
         
     | 
| 
       1098 
1122 
     | 
    
         
             
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
       1099 
1123 
     | 
    
         
             
                  add_prod_datum(:GraphNode, term)
         
     | 
| 
       1100 
1124 
     | 
    
         
             
                end
         
     | 
| 
       1101 
1125 
     | 
    
         | 
| 
       1102 
     | 
    
         
            -
                # [105]	GraphNodePath	::=	 
     | 
| 
      
 1126 
     | 
    
         
            +
                # [105]	GraphNodePath	::=	VarOrTermOrQuotedTP | TriplesNodePath
         
     | 
| 
       1103 
1127 
     | 
    
         
             
                production(:GraphNodePath) do |input, data, callback|
         
     | 
| 
       1104 
     | 
    
         
            -
                  term = data[: 
     | 
| 
      
 1128 
     | 
    
         
            +
                  term = data[:VarOrTermOrQuotedTP] || data[:TriplesNode]
         
     | 
| 
       1105 
1129 
     | 
    
         
             
                  add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
       1106 
1130 
     | 
    
         
             
                  add_prod_datum(:path, data[:path])
         
     | 
| 
       1107 
1131 
     | 
    
         
             
                  add_prod_datum(:GraphNode, term)
         
     | 
| 
       1108 
1132 
     | 
    
         
             
                end
         
     | 
| 
       1109 
1133 
     | 
    
         | 
| 
       1110 
     | 
    
         
            -
                # [ 
     | 
| 
       1111 
     | 
    
         
            -
                production(: 
     | 
| 
       1112 
     | 
    
         
            -
                  data.values.each {|v| add_prod_datum(: 
     | 
| 
       1113 
     | 
    
         
            -
                end
         
     | 
| 
       1114 
     | 
    
         
            -
             
     | 
| 
       1115 
     | 
    
         
            -
                # [106s]  	VarOrTermOrEmbTP        ::= Var | GraphTerm | EmbTP
         
     | 
| 
       1116 
     | 
    
         
            -
                production(:VarOrTermOrEmbTP) do |input, data, callback|
         
     | 
| 
       1117 
     | 
    
         
            -
                  data.values.each {|v| add_prod_datum(:VarOrTerm, v)}
         
     | 
| 
      
 1134 
     | 
    
         
            +
                # [106s]  	VarOrTermOrQuotedTP        ::= Var | GraphTerm | EmbTP
         
     | 
| 
      
 1135 
     | 
    
         
            +
                production(:VarOrTermOrQuotedTP) do |input, data, callback|
         
     | 
| 
      
 1136 
     | 
    
         
            +
                  data.values.each {|v| add_prod_datum(:VarOrTermOrQuotedTP, v)}
         
     | 
| 
       1118 
1137 
     | 
    
         
             
                end
         
     | 
| 
       1119 
1138 
     | 
    
         | 
| 
       1120 
1139 
     | 
    
         
             
                # [107]  	VarOrIri	  ::=  	Var | iri
         
     | 
| 
         @@ -1132,22 +1151,6 @@ module SPARQL::Grammar 
     | 
|
| 
       1132 
1151 
     | 
    
         
             
                                  data[:NIL])
         
     | 
| 
       1133 
1152 
     | 
    
         
             
                end
         
     | 
| 
       1134 
1153 
     | 
    
         | 
| 
       1135 
     | 
    
         
            -
                # [174] EmbTP ::= '<<' EmbSubjectOrObject Verb EmbSubjectOrObject '>>'
         
     | 
| 
       1136 
     | 
    
         
            -
                production(:EmbTP) do |input, data, callback|
         
     | 
| 
       1137 
     | 
    
         
            -
                  subject, object = data[:EmbSubjectOrObject]
         
     | 
| 
       1138 
     | 
    
         
            -
                  predicate = data[:Verb]
         
     | 
| 
       1139 
     | 
    
         
            -
                  add_pattern(:EmbTP,
         
     | 
| 
       1140 
     | 
    
         
            -
                              subject: subject,
         
     | 
| 
       1141 
     | 
    
         
            -
                              predicate: predicate,
         
     | 
| 
       1142 
     | 
    
         
            -
                              object: object)
         
     | 
| 
       1143 
     | 
    
         
            -
                end
         
     | 
| 
       1144 
     | 
    
         
            -
             
     | 
| 
       1145 
     | 
    
         
            -
                # [175] EmbSubjectOrObject ::=	Var | BlankNode | iri | RDFLiteral
         
     | 
| 
       1146 
     | 
    
         
            -
                #                            | NumericLiteral | BooleanLiteral | EmbTP
         
     | 
| 
       1147 
     | 
    
         
            -
                production(:EmbSubjectOrObject) do |input, data, callback|
         
     | 
| 
       1148 
     | 
    
         
            -
                  data.values.each {|v| add_prod_datum(:EmbSubjectOrObject, v)}
         
     | 
| 
       1149 
     | 
    
         
            -
                end
         
     | 
| 
       1150 
     | 
    
         
            -
             
     | 
| 
       1151 
1154 
     | 
    
         
             
                # [110]  	Expression	  ::=  	ConditionalOrExpression
         
     | 
| 
       1152 
1155 
     | 
    
         
             
                production(:Expression) do |input, data, callback|
         
     | 
| 
       1153 
1156 
     | 
    
         
             
                  add_prod_datum(:Expression, data[:Expression])
         
     | 
| 
         @@ -1287,6 +1290,7 @@ module SPARQL::Grammar 
     | 
|
| 
       1287 
1290 
     | 
    
         
             
                #                                 | iriOrFunction | RDFLiteral
         
     | 
| 
       1288 
1291 
     | 
    
         
             
                #                                 | NumericLiteral | BooleanLiteral
         
     | 
| 
       1289 
1292 
     | 
    
         
             
                #                                 | Var
         
     | 
| 
      
 1293 
     | 
    
         
            +
                #                                 | ExprQuotedTP
         
     | 
| 
       1290 
1294 
     | 
    
         
             
                production(:PrimaryExpression) do |input, data, callback|
         
     | 
| 
       1291 
1295 
     | 
    
         
             
                  if data[:Expression]
         
     | 
| 
       1292 
1296 
     | 
    
         
             
                    add_prod_datum(:Expression, data[:Expression])
         
     | 
| 
         @@ -1300,6 +1304,8 @@ module SPARQL::Grammar 
     | 
|
| 
       1300 
1304 
     | 
    
         
             
                    add_prod_datum(:Expression, data[:literal])
         
     | 
| 
       1301 
1305 
     | 
    
         
             
                  elsif data[:Var]
         
     | 
| 
       1302 
1306 
     | 
    
         
             
                    add_prod_datum(:Expression, data[:Var])
         
     | 
| 
      
 1307 
     | 
    
         
            +
                  elsif data[:pattern]
         
     | 
| 
      
 1308 
     | 
    
         
            +
                    add_prod_datum(:Expression, data[:pattern])
         
     | 
| 
       1303 
1309 
     | 
    
         
             
                  end
         
     | 
| 
       1304 
1310 
     | 
    
         | 
| 
       1305 
1311 
     | 
    
         
             
                  # Keep track of this for parent UnaryExpression production
         
     | 
| 
         @@ -1470,6 +1476,66 @@ module SPARQL::Grammar 
     | 
|
| 
       1470 
1476 
     | 
    
         
             
                  add_prod_datum(:UnaryExpression, data[:UnaryExpression])
         
     | 
| 
       1471 
1477 
     | 
    
         
             
                end
         
     | 
| 
       1472 
1478 
     | 
    
         | 
| 
      
 1479 
     | 
    
         
            +
                # [174] QuotedTP ::= '<<' qtSubjectOrObject Verb qtSubjectOrObject '>>'
         
     | 
| 
      
 1480 
     | 
    
         
            +
                production(:QuotedTP) do |input, data, callback|
         
     | 
| 
      
 1481 
     | 
    
         
            +
                  subject, object = data[:qtSubjectOrObject]
         
     | 
| 
      
 1482 
     | 
    
         
            +
                  predicate = data[:Verb]
         
     | 
| 
      
 1483 
     | 
    
         
            +
                  add_pattern(:QuotedTP,
         
     | 
| 
      
 1484 
     | 
    
         
            +
                              subject: subject,
         
     | 
| 
      
 1485 
     | 
    
         
            +
                              predicate: predicate,
         
     | 
| 
      
 1486 
     | 
    
         
            +
                              object: object)
         
     | 
| 
      
 1487 
     | 
    
         
            +
                end
         
     | 
| 
      
 1488 
     | 
    
         
            +
             
     | 
| 
      
 1489 
     | 
    
         
            +
                # [175] QuotedTriple ::= '<<' DataValueTerm (iri | 'a') DataValueTerm '>>'
         
     | 
| 
      
 1490 
     | 
    
         
            +
                production(:QuotedTriple) do |input, data, callback|
         
     | 
| 
      
 1491 
     | 
    
         
            +
                  subject, object = data[:DataValueTerm]
         
     | 
| 
      
 1492 
     | 
    
         
            +
                  predicate = data[:iri]
         
     | 
| 
      
 1493 
     | 
    
         
            +
                  add_pattern(:QuotedTriple,
         
     | 
| 
      
 1494 
     | 
    
         
            +
                              subject: subject,
         
     | 
| 
      
 1495 
     | 
    
         
            +
                              predicate: predicate,
         
     | 
| 
      
 1496 
     | 
    
         
            +
                              object: object)
         
     | 
| 
      
 1497 
     | 
    
         
            +
                end
         
     | 
| 
      
 1498 
     | 
    
         
            +
             
     | 
| 
      
 1499 
     | 
    
         
            +
                # [176] qtSubjectOrObject ::=	Var | BlankNode | iri | RDFLiteral
         
     | 
| 
      
 1500 
     | 
    
         
            +
                #                            | NumericLiteral | BooleanLiteral | QuotedTP
         
     | 
| 
      
 1501 
     | 
    
         
            +
                production(:qtSubjectOrObject) do |input, data, callback|
         
     | 
| 
      
 1502 
     | 
    
         
            +
                  data.values.each {|v| add_prod_datum(:qtSubjectOrObject, v)}
         
     | 
| 
      
 1503 
     | 
    
         
            +
                end
         
     | 
| 
      
 1504 
     | 
    
         
            +
             
     | 
| 
      
 1505 
     | 
    
         
            +
                # [177] DataValueTerm           ::= iri | RDFLiteral | NumericLiteral | BooleanLiteral | QuotedTriple
         
     | 
| 
      
 1506 
     | 
    
         
            +
                production(:DataValueTerm) do |input, data, callback|
         
     | 
| 
      
 1507 
     | 
    
         
            +
                  add_prod_datum :DataValueTerm, data.values.first
         
     | 
| 
      
 1508 
     | 
    
         
            +
                end
         
     | 
| 
      
 1509 
     | 
    
         
            +
             
     | 
| 
      
 1510 
     | 
    
         
            +
                # [180]	AnnotationPatternPath	      ::=	'{|' PropertyListPathNotEmpty '|}'
         
     | 
| 
      
 1511 
     | 
    
         
            +
                start_production(:AnnotationPatternPath) do |input, data, callback|
         
     | 
| 
      
 1512 
     | 
    
         
            +
                  data[:TriplesNode] = input[:TriplesNode]
         
     | 
| 
      
 1513 
     | 
    
         
            +
                end
         
     | 
| 
      
 1514 
     | 
    
         
            +
                production(:AnnotationPatternPath) do |input, data, callback|
         
     | 
| 
      
 1515 
     | 
    
         
            +
                  if data[:pattern]
         
     | 
| 
      
 1516 
     | 
    
         
            +
                    add_prod_datum(:pattern, data[:pattern])
         
     | 
| 
      
 1517 
     | 
    
         
            +
                  elsif data[:path]
         
     | 
| 
      
 1518 
     | 
    
         
            +
                    # Replace the subject in the path with the node being annotated.
         
     | 
| 
      
 1519 
     | 
    
         
            +
                    data[:path].first.operands[0] = data[:TriplesNode]
         
     | 
| 
      
 1520 
     | 
    
         
            +
                    add_prod_datum(:path, data[:path])
         
     | 
| 
      
 1521 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1522 
     | 
    
         
            +
                end
         
     | 
| 
      
 1523 
     | 
    
         
            +
             
     | 
| 
      
 1524 
     | 
    
         
            +
                # [181] ExprQuotedTP ::= '<<' ExprVarOrTerm Verb ExprVarOrTerm '>>'
         
     | 
| 
      
 1525 
     | 
    
         
            +
                production(:ExprQuotedTP) do |input, data, callback|
         
     | 
| 
      
 1526 
     | 
    
         
            +
                  subject, object = data[:ExprVarOrTerm]
         
     | 
| 
      
 1527 
     | 
    
         
            +
                  predicate = data[:Verb]
         
     | 
| 
      
 1528 
     | 
    
         
            +
                  add_pattern(:ExprQuotedTP,
         
     | 
| 
      
 1529 
     | 
    
         
            +
                              subject: subject,
         
     | 
| 
      
 1530 
     | 
    
         
            +
                              predicate: predicate,
         
     | 
| 
      
 1531 
     | 
    
         
            +
                              object: object)
         
     | 
| 
      
 1532 
     | 
    
         
            +
                end
         
     | 
| 
      
 1533 
     | 
    
         
            +
             
     | 
| 
      
 1534 
     | 
    
         
            +
                # [182] ExprVarOrTerm ::=	iri | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprQuotedTP
         
     | 
| 
      
 1535 
     | 
    
         
            +
                production(:ExprVarOrTerm) do |input, data, callback|
         
     | 
| 
      
 1536 
     | 
    
         
            +
                  data.values.each {|v| add_prod_datum(:ExprVarOrTerm, v)}
         
     | 
| 
      
 1537 
     | 
    
         
            +
                end
         
     | 
| 
      
 1538 
     | 
    
         
            +
             
     | 
| 
       1473 
1539 
     | 
    
         
             
                ##
         
     | 
| 
       1474 
1540 
     | 
    
         
             
                # Initializes a new parser instance.
         
     | 
| 
       1475 
1541 
     | 
    
         
             
                #
         
     | 
| 
         @@ -1746,8 +1812,8 @@ module SPARQL::Grammar 
     | 
|
| 
       1746 
1812 
     | 
    
         
             
                  value = RDF::URI(value)
         
     | 
| 
       1747 
1813 
     | 
    
         
             
                  if base_uri && value.relative?
         
     | 
| 
       1748 
1814 
     | 
    
         
             
                    u = base_uri.join(value)
         
     | 
| 
       1749 
     | 
    
         
            -
                    u.lexical = "<#{value}>" unless resolve_iris?
         
     | 
| 
       1750 
     | 
    
         
            -
                    u
         
     | 
| 
      
 1815 
     | 
    
         
            +
                    #u.lexical = "<#{value}>" unless resolve_iris?
         
     | 
| 
      
 1816 
     | 
    
         
            +
                    #u
         
     | 
| 
       1751 
1817 
     | 
    
         
             
                  else
         
     | 
| 
       1752 
1818 
     | 
    
         
             
                    value
         
     | 
| 
       1753 
1819 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1759,8 +1825,8 @@ module SPARQL::Grammar 
     | 
|
| 
       1759 
1825 
     | 
    
         
             
                  debug {"ns(#{prefix.inspect}): base: '#{base}', suffix: '#{suffix}'"}
         
     | 
| 
       1760 
1826 
     | 
    
         
             
                  iri = iri(base + suffix.to_s)
         
     | 
| 
       1761 
1827 
     | 
    
         
             
                  # Cause URI to be serialized as a lexical
         
     | 
| 
       1762 
     | 
    
         
            -
                  iri.lexical = "#{prefix}:#{suffix}" unless resolve_iris?
         
     | 
| 
       1763 
     | 
    
         
            -
                  iri
         
     | 
| 
      
 1828 
     | 
    
         
            +
                  #iri.lexical = "#{prefix}:#{suffix}" unless resolve_iris?
         
     | 
| 
      
 1829 
     | 
    
         
            +
                  #iri
         
     | 
| 
       1764 
1830 
     | 
    
         
             
                end
         
     | 
| 
       1765 
1831 
     | 
    
         | 
| 
       1766 
1832 
     | 
    
         
             
                # Create a literal
         
     | 
| 
         @@ -108,6 +108,7 @@ module SPARQL::Grammar 
     | 
|
| 
       108 
108 
     | 
    
         
             
                             |TIMEZONE|TO|TZ|UCASE|UNDEF|UNION|URI|USING|UUID|VALUES
         
     | 
| 
       109 
109 
     | 
    
         
             
                             |WHERE|WITH|YEAR
         
     | 
| 
       110 
110 
     | 
    
         
             
                             |isBLANK|isIRI|isURI|isLITERAL|isNUMERIC|sameTerm
         
     | 
| 
      
 111 
     | 
    
         
            +
                             |isTRIPLE|TRIPLE|SUBJECT|PREDICATE|OBJECT
         
     | 
| 
       111 
112 
     | 
    
         
             
                             |true
         
     | 
| 
       112 
113 
     | 
    
         
             
                             |false
         
     | 
| 
       113 
114 
     | 
    
         
             
                             |<<|>>
         
     | 
| 
         @@ -133,6 +134,7 @@ module SPARQL::Grammar 
     | 
|
| 
       133 
134 
     | 
    
         
             
                  TIMEZONE TO TZ UCASE UNDEF UNION URI USING UUID
         
     | 
| 
       134 
135 
     | 
    
         
             
                  VALUES WHERE WITH YEAR
         
     | 
| 
       135 
136 
     | 
    
         
             
                  isBLANK isIRI isURI isLITERAL isNUMERIC sameTerm
         
     | 
| 
      
 137 
     | 
    
         
            +
                  isTRIPLE TRIPLE SUBJECT PREDICATE OBJECT
         
     | 
| 
       136 
138 
     | 
    
         
             
                  true false
         
     | 
| 
       137 
139 
     | 
    
         
             
                } + [
         
     | 
| 
       138 
140 
     | 
    
         
             
                  "DELETE DATA",
         
     | 
    
        data/lib/sparql/grammar.rb
    CHANGED
    
    | 
         @@ -192,31 +192,6 @@ module SPARQL 
     | 
|
| 
       192 
192 
     | 
    
         
             
              #     PREFIX foaf: <http://xmlns.com/foaf/0.1/>
         
     | 
| 
       193 
193 
     | 
    
         
             
              #     PREFIX dct:  <http://purl.org/dc/elements/1.1/>
         
     | 
| 
       194 
194 
     | 
    
         
             
              #     
         
     | 
| 
       195 
     | 
    
         
            -
              #     SELECT ?age ?src WHERE {
         
     | 
| 
       196 
     | 
    
         
            -
              #        ?bob foaf:name "Bob" .
         
     | 
| 
       197 
     | 
    
         
            -
              #        BIND( <<?bob foaf:age ?age>> AS ?t ) .
         
     | 
| 
       198 
     | 
    
         
            -
              #        ?t dct:source ?src .
         
     | 
| 
       199 
     | 
    
         
            -
              #     }
         
     | 
| 
       200 
     | 
    
         
            -
              #
         
     | 
| 
       201 
     | 
    
         
            -
              # SXP:
         
     | 
| 
       202 
     | 
    
         
            -
              #
         
     | 
| 
       203 
     | 
    
         
            -
              #     (prefix
         
     | 
| 
       204 
     | 
    
         
            -
              #      (
         
     | 
| 
       205 
     | 
    
         
            -
              #       (: <http://bigdata.com>)
         
     | 
| 
       206 
     | 
    
         
            -
              #       (foaf: <http://xmlns.com/foaf/0.1/>)
         
     | 
| 
       207 
     | 
    
         
            -
              #       (dct: <http://purl.org/dc/elements/1.1/>))
         
     | 
| 
       208 
     | 
    
         
            -
              #      (project
         
     | 
| 
       209 
     | 
    
         
            -
              #       (?age ?src)
         
     | 
| 
       210 
     | 
    
         
            -
              #       (join
         
     | 
| 
       211 
     | 
    
         
            -
              #        (extend ((?t (triple ?bob foaf:age ?age))) (bgp (triple ?bob foaf:name "Bob")))
         
     | 
| 
       212 
     | 
    
         
            -
              #        (bgp (triple ?t dct:source ?src))) ))
         
     | 
| 
       213 
     | 
    
         
            -
              #
         
     | 
| 
       214 
     | 
    
         
            -
              # SPARQL:
         
     | 
| 
       215 
     | 
    
         
            -
              #
         
     | 
| 
       216 
     | 
    
         
            -
              #     PREFIX : <http://bigdata.com>
         
     | 
| 
       217 
     | 
    
         
            -
              #     PREFIX foaf: <http://xmlns.com/foaf/0.1/>
         
     | 
| 
       218 
     | 
    
         
            -
              #     PREFIX dct:  <http://purl.org/dc/elements/1.1/>
         
     | 
| 
       219 
     | 
    
         
            -
              #     
         
     | 
| 
       220 
195 
     | 
    
         
             
              #     CONSTRUCT {
         
     | 
| 
       221 
196 
     | 
    
         
             
              #       ?bob foaf:name "Bob" .
         
     | 
| 
       222 
197 
     | 
    
         
             
              #       <<?bob foaf:age ?age>> dct:creator <http://example.com/crawlers#c1>;
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sparql
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Gregg Kellogg
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire:
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2021- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2021-12-13 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rdf
         
     | 
| 
         @@ -17,48 +17,42 @@ dependencies: 
     | 
|
| 
       17 
17 
     | 
    
         
             
                requirements:
         
     | 
| 
       18 
18 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       19 
19 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       20 
     | 
    
         
            -
                    version: '3. 
     | 
| 
       21 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       22 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       23 
     | 
    
         
            -
                    version: 3.1.8
         
     | 
| 
      
 20 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       24 
21 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       25 
22 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       26 
23 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       27 
24 
     | 
    
         
             
                requirements:
         
     | 
| 
       28 
25 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       29 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       30 
     | 
    
         
            -
                    version: '3. 
     | 
| 
       31 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       32 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: 3.1.8
         
     | 
| 
      
 27 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       34 
28 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       35 
29 
     | 
    
         
             
              name: rdf-aggregate-repo
         
     | 
| 
       36 
30 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
31 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
32 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       39 
33 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 34 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       41 
35 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       42 
36 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       43 
37 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
38 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
39 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       46 
40 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 41 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       48 
42 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       49 
43 
     | 
    
         
             
              name: ebnf
         
     | 
| 
       50 
44 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
45 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
46 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       53 
47 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 48 
     | 
    
         
            +
                    version: '2.2'
         
     | 
| 
       55 
49 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       56 
50 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
51 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
52 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
53 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       60 
54 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 55 
     | 
    
         
            +
                    version: '2.2'
         
     | 
| 
       62 
56 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       63 
57 
     | 
    
         
             
              name: builder
         
     | 
| 
       64 
58 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -73,82 +67,90 @@ dependencies: 
     | 
|
| 
       73 
67 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       74 
68 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
69 
     | 
    
         
             
                    version: '3.2'
         
     | 
| 
      
 70 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 71 
     | 
    
         
            +
              name: logger
         
     | 
| 
      
 72 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 74 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 75 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 76 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
      
 77 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 78 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 79 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 80 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 81 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 82 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 83 
     | 
    
         
            +
                    version: '1.4'
         
     | 
| 
       76 
84 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       77 
85 
     | 
    
         
             
              name: sxp
         
     | 
| 
       78 
86 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
87 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
88 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       81 
89 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 90 
     | 
    
         
            +
                    version: '1.2'
         
     | 
| 
       83 
91 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       84 
92 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       85 
93 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
94 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
95 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       88 
96 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 97 
     | 
    
         
            +
                    version: '1.2'
         
     | 
| 
       90 
98 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       91 
99 
     | 
    
         
             
              name: sparql-client
         
     | 
| 
       92 
100 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
101 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
102 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       95 
103 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
     | 
    
         
            -
                    version: '3. 
     | 
| 
       97 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       98 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       99 
     | 
    
         
            -
                    version: 3.1.2
         
     | 
| 
      
 104 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       100 
105 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       101 
106 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       102 
107 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       103 
108 
     | 
    
         
             
                requirements:
         
     | 
| 
       104 
109 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       105 
110 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       106 
     | 
    
         
            -
                    version: '3. 
     | 
| 
       107 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       108 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       109 
     | 
    
         
            -
                    version: 3.1.2
         
     | 
| 
      
 111 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       110 
112 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       111 
113 
     | 
    
         
             
              name: rdf-xsd
         
     | 
| 
       112 
114 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       113 
115 
     | 
    
         
             
                requirements:
         
     | 
| 
       114 
116 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       115 
117 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       116 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 118 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       117 
119 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       118 
120 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       119 
121 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       120 
122 
     | 
    
         
             
                requirements:
         
     | 
| 
       121 
123 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       122 
124 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       123 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 125 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       124 
126 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       125 
127 
     | 
    
         
             
              name: sinatra
         
     | 
| 
       126 
128 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       127 
129 
     | 
    
         
             
                requirements:
         
     | 
| 
       128 
130 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       129 
131 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       130 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 132 
     | 
    
         
            +
                    version: '2.1'
         
     | 
| 
       131 
133 
     | 
    
         
             
              type: :development
         
     | 
| 
       132 
134 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       133 
135 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       134 
136 
     | 
    
         
             
                requirements:
         
     | 
| 
       135 
137 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       136 
138 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       137 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 139 
     | 
    
         
            +
                    version: '2.1'
         
     | 
| 
       138 
140 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       139 
141 
     | 
    
         
             
              name: rack
         
     | 
| 
       140 
142 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       141 
143 
     | 
    
         
             
                requirements:
         
     | 
| 
       142 
144 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       143 
145 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       144 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 146 
     | 
    
         
            +
                    version: '2.2'
         
     | 
| 
       145 
147 
     | 
    
         
             
              type: :development
         
     | 
| 
       146 
148 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       147 
149 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       148 
150 
     | 
    
         
             
                requirements:
         
     | 
| 
       149 
151 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       150 
152 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       151 
     | 
    
         
            -
                    version: '2. 
     | 
| 
      
 153 
     | 
    
         
            +
                    version: '2.2'
         
     | 
| 
       152 
154 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       153 
155 
     | 
    
         
             
              name: rack-test
         
     | 
| 
       154 
156 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -169,14 +171,14 @@ dependencies: 
     | 
|
| 
       169 
171 
     | 
    
         
             
                requirements:
         
     | 
| 
       170 
172 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       171 
173 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       172 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 174 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       173 
175 
     | 
    
         
             
              type: :development
         
     | 
| 
       174 
176 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       175 
177 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       176 
178 
     | 
    
         
             
                requirements:
         
     | 
| 
       177 
179 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       178 
180 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       179 
     | 
    
         
            -
                    version: '3. 
     | 
| 
      
 181 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
       180 
182 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       181 
183 
     | 
    
         
             
              name: linkeddata
         
     | 
| 
       182 
184 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -312,6 +314,7 @@ files: 
     | 
|
| 
       312 
314 
     | 
    
         
             
            - lib/sparql/algebra/operator/is_iri.rb
         
     | 
| 
       313 
315 
     | 
    
         
             
            - lib/sparql/algebra/operator/is_literal.rb
         
     | 
| 
       314 
316 
     | 
    
         
             
            - lib/sparql/algebra/operator/is_numeric.rb
         
     | 
| 
      
 317 
     | 
    
         
            +
            - lib/sparql/algebra/operator/is_triple.rb
         
     | 
| 
       315 
318 
     | 
    
         
             
            - lib/sparql/algebra/operator/join.rb
         
     | 
| 
       316 
319 
     | 
    
         
             
            - lib/sparql/algebra/operator/lang.rb
         
     | 
| 
       317 
320 
     | 
    
         
             
            - lib/sparql/algebra/operator/lang_matches.rb
         
     | 
| 
         @@ -336,6 +339,7 @@ files: 
     | 
|
| 
       336 
339 
     | 
    
         
             
            - lib/sparql/algebra/operator/notin.rb
         
     | 
| 
       337 
340 
     | 
    
         
             
            - lib/sparql/algebra/operator/notoneof.rb
         
     | 
| 
       338 
341 
     | 
    
         
             
            - lib/sparql/algebra/operator/now.rb
         
     | 
| 
      
 342 
     | 
    
         
            +
            - lib/sparql/algebra/operator/object.rb
         
     | 
| 
       339 
343 
     | 
    
         
             
            - lib/sparql/algebra/operator/or.rb
         
     | 
| 
       340 
344 
     | 
    
         
             
            - lib/sparql/algebra/operator/order.rb
         
     | 
| 
       341 
345 
     | 
    
         
             
            - lib/sparql/algebra/operator/path.rb
         
     | 
| 
         @@ -343,6 +347,7 @@ files: 
     | 
|
| 
       343 
347 
     | 
    
         
             
            - lib/sparql/algebra/operator/path_plus.rb
         
     | 
| 
       344 
348 
     | 
    
         
             
            - lib/sparql/algebra/operator/path_star.rb
         
     | 
| 
       345 
349 
     | 
    
         
             
            - lib/sparql/algebra/operator/plus.rb
         
     | 
| 
      
 350 
     | 
    
         
            +
            - lib/sparql/algebra/operator/predicate.rb
         
     | 
| 
       346 
351 
     | 
    
         
             
            - lib/sparql/algebra/operator/prefix.rb
         
     | 
| 
       347 
352 
     | 
    
         
             
            - lib/sparql/algebra/operator/project.rb
         
     | 
| 
       348 
353 
     | 
    
         
             
            - lib/sparql/algebra/operator/rand.rb
         
     | 
| 
         @@ -370,6 +375,7 @@ files: 
     | 
|
| 
       370 
375 
     | 
    
         
             
            - lib/sparql/algebra/operator/strlen.rb
         
     | 
| 
       371 
376 
     | 
    
         
             
            - lib/sparql/algebra/operator/strstarts.rb
         
     | 
| 
       372 
377 
     | 
    
         
             
            - lib/sparql/algebra/operator/struuid.rb
         
     | 
| 
      
 378 
     | 
    
         
            +
            - lib/sparql/algebra/operator/subject.rb
         
     | 
| 
       373 
379 
     | 
    
         
             
            - lib/sparql/algebra/operator/substr.rb
         
     | 
| 
       374 
380 
     | 
    
         
             
            - lib/sparql/algebra/operator/subtract.rb
         
     | 
| 
       375 
381 
     | 
    
         
             
            - lib/sparql/algebra/operator/sum.rb
         
     | 
| 
         @@ -406,14 +412,14 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       406 
412 
     | 
    
         
             
              requirements:
         
     | 
| 
       407 
413 
     | 
    
         
             
              - - ">="
         
     | 
| 
       408 
414 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       409 
     | 
    
         
            -
                  version: '2. 
     | 
| 
      
 415 
     | 
    
         
            +
                  version: '2.6'
         
     | 
| 
       410 
416 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       411 
417 
     | 
    
         
             
              requirements:
         
     | 
| 
       412 
418 
     | 
    
         
             
              - - ">="
         
     | 
| 
       413 
419 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       414 
420 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       415 
421 
     | 
    
         
             
            requirements: []
         
     | 
| 
       416 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 422 
     | 
    
         
            +
            rubygems_version: 3.3.3
         
     | 
| 
       417 
423 
     | 
    
         
             
            signing_key:
         
     | 
| 
       418 
424 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       419 
425 
     | 
    
         
             
            summary: SPARQL Query and Update library for Ruby.
         
     |