sparql 3.1.5 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|