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.
|