sparql 3.1.5 → 3.1.6

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.
@@ -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' '(' (Expression || EmbTP) 'AS' Var ')'
706
+ # [60] Bind ::= 'BIND' '(' Expression 'AS' Var ')'
705
707
  production(:Bind) do |input, data, callback|
706
- add_prod_datum :extend, [(data[:Expression] || data[:pattern]).unshift(data[:Var].first)]
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 ::= EmbTD | 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 ::= VarOrTerm PropertyListNotEmpty
836
+ # [75] TriplesSameSubject ::= VarOrTermOrEmbTP 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[:VarOrTerm] || input[:TriplesNode] || input[:GraphNode]
844
- error(nil, "Expected VarOrTerm or TriplesNode or GraphNode", production: :PropertyListNotEmpty) if validate? && !subject
845
+ subject = input[:VarOrTermOrEmbTP] || input[:TriplesNode] || input[:GraphNode]
846
+ error(nil, "Expected VarOrTermOrEmbTP 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
- # [177] AnnotationPattern ::= '{|' PropertyListNotEmpty '|}'
871
- start_production(:AnnotationPattern) do |input, data, callback|
872
- data[:TriplesNode] = prod_data[:pattern].first
873
- end
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] || data[:EmbTP]
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 ::= VarOrTerm PropertyListPathNotEmpty | TriplesNode PropertyListPath
902
+ # [81] TriplesSameSubjectPath ::= VarOrTermOrEmbTP 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[:VarOrTerm] || input[:TriplesNode] || input[:GraphNode]
904
- error(nil, "Expected VarOrTerm, got nothing", production: :PropertyListPathNotEmpty) if validate? && !subject
910
+ subject = input[:VarOrTermOrEmbTP] || input[:TriplesNode] || input[:GraphNode]
911
+ error(nil, "Expected VarOrTermOrEmbTP, 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[:VarOrTerm] || data[:TriplesNode] || data[:GraphNode]
957
+ object = data[:VarOrTermOrEmbTP] || 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 ::= VarOrTerm | TriplesNode
1119
+ # [104] GraphNode ::= VarOrTermOrEmbTP | TriplesNode
1096
1120
  production(:GraphNode) do |input, data, callback|
1097
- term = data[:VarOrTerm] || data[:TriplesNode]
1121
+ term = data[:VarOrTermOrEmbTP] || 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 ::= VarOrTerm | TriplesNodePath
1126
+ # [105] GraphNodePath ::= VarOrTermOrEmbTP | TriplesNodePath
1103
1127
  production(:GraphNodePath) do |input, data, callback|
1104
- term = data[:VarOrTerm] || data[:TriplesNode]
1128
+ term = data[:VarOrTermOrEmbTP] || 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
- # [106] VarOrTerm ::= Var | GraphTerm
1111
- production(:VarOrTerm) do |input, data, callback|
1112
- data.values.each {|v| add_prod_datum(:VarOrTerm, v)}
1113
- end
1114
-
1115
1134
  # [106s] VarOrTermOrEmbTP ::= Var | GraphTerm | EmbTP
1116
1135
  production(:VarOrTermOrEmbTP) do |input, data, callback|
1117
- data.values.each {|v| add_prod_datum(:VarOrTerm, v)}
1136
+ data.values.each {|v| add_prod_datum(:VarOrTermOrEmbTP, v)}
1118
1137
  end
1119
1138
 
1120
1139
  # [107] VarOrIri ::= Var | iri
@@ -1287,6 +1306,7 @@ module SPARQL::Grammar
1287
1306
  # | iriOrFunction | RDFLiteral
1288
1307
  # | NumericLiteral | BooleanLiteral
1289
1308
  # | Var
1309
+ # | EmbTP
1290
1310
  production(:PrimaryExpression) do |input, data, callback|
1291
1311
  if data[:Expression]
1292
1312
  add_prod_datum(:Expression, data[:Expression])
@@ -1300,6 +1320,8 @@ module SPARQL::Grammar
1300
1320
  add_prod_datum(:Expression, data[:literal])
1301
1321
  elsif data[:Var]
1302
1322
  add_prod_datum(:Expression, data[:Var])
1323
+ elsif data[:pattern]
1324
+ add_prod_datum(:Expression, data[:pattern])
1303
1325
  end
1304
1326
 
1305
1327
  # Keep track of this for parent UnaryExpression production
@@ -1470,6 +1492,43 @@ module SPARQL::Grammar
1470
1492
  add_prod_datum(:UnaryExpression, data[:UnaryExpression])
1471
1493
  end
1472
1494
 
1495
+ # [177] AnnotationPattern ::= '{|' PropertyListNotEmpty '|}'
1496
+ #start_production(:AnnotationPattern) do |input, data, callback|
1497
+ # data[:TriplesNode] = prod_data[:TriplesNode].first
1498
+ #end
1499
+ #production(:AnnotationPattern) do |input, data, callback|
1500
+ # add_prod_datum(:pattern, data[:pattern])
1501
+ #end
1502
+
1503
+ # [178] AnnotationPatternPath ::= '{|' PropertyListPathNotEmpty '|}'
1504
+ start_production(:AnnotationPatternPath) do |input, data, callback|
1505
+ data[:TriplesNode] = input[:TriplesNode]
1506
+ end
1507
+ production(:AnnotationPatternPath) do |input, data, callback|
1508
+ if data[:pattern]
1509
+ add_prod_datum(:pattern, data[:pattern])
1510
+ elsif data[:path]
1511
+ # Replace the subject in the path with the node being annotated.
1512
+ data[:path].first.operands[0] = data[:TriplesNode]
1513
+ add_prod_datum(:path, data[:path])
1514
+ end
1515
+ end
1516
+
1517
+ # [179] EmbTD ::= '<<' DataValueTerm ( iri | 'a' ) DataValueTerm '>>'
1518
+ production(:EmbTD) do |input, data, callback|
1519
+ subject, object = data[:DataValueTerm]
1520
+ predicate = data[:iri]
1521
+ add_pattern(:EmbTD,
1522
+ subject: subject,
1523
+ predicate: predicate,
1524
+ object: object)
1525
+ end
1526
+
1527
+ # [180] DataValueTerm ::= EmbTD | iri | RDFLiteral | NumericLiteral | BooleanLiteral
1528
+ production(:DataValueTerm) do |input, data, callback|
1529
+ add_prod_datum :DataValueTerm, data.values.first
1530
+ end
1531
+
1473
1532
  ##
1474
1533
  # Initializes a new parser instance.
1475
1534
  #
@@ -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",
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.1.5
4
+ version: 3.1.6
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-01-18 00:00:00.000000000 Z
12
+ date: 2021-03-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -20,7 +20,7 @@ dependencies:
20
20
  version: '3.1'
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 3.1.8
23
+ version: 3.1.12
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
@@ -30,7 +30,7 @@ dependencies:
30
30
  version: '3.1'
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.8
33
+ version: 3.1.12
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdf-aggregate-repo
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -312,6 +312,7 @@ files:
312
312
  - lib/sparql/algebra/operator/is_iri.rb
313
313
  - lib/sparql/algebra/operator/is_literal.rb
314
314
  - lib/sparql/algebra/operator/is_numeric.rb
315
+ - lib/sparql/algebra/operator/is_triple.rb
315
316
  - lib/sparql/algebra/operator/join.rb
316
317
  - lib/sparql/algebra/operator/lang.rb
317
318
  - lib/sparql/algebra/operator/lang_matches.rb
@@ -336,6 +337,7 @@ files:
336
337
  - lib/sparql/algebra/operator/notin.rb
337
338
  - lib/sparql/algebra/operator/notoneof.rb
338
339
  - lib/sparql/algebra/operator/now.rb
340
+ - lib/sparql/algebra/operator/object.rb
339
341
  - lib/sparql/algebra/operator/or.rb
340
342
  - lib/sparql/algebra/operator/order.rb
341
343
  - lib/sparql/algebra/operator/path.rb
@@ -343,6 +345,7 @@ files:
343
345
  - lib/sparql/algebra/operator/path_plus.rb
344
346
  - lib/sparql/algebra/operator/path_star.rb
345
347
  - lib/sparql/algebra/operator/plus.rb
348
+ - lib/sparql/algebra/operator/predicate.rb
346
349
  - lib/sparql/algebra/operator/prefix.rb
347
350
  - lib/sparql/algebra/operator/project.rb
348
351
  - lib/sparql/algebra/operator/rand.rb
@@ -370,11 +373,13 @@ files:
370
373
  - lib/sparql/algebra/operator/strlen.rb
371
374
  - lib/sparql/algebra/operator/strstarts.rb
372
375
  - lib/sparql/algebra/operator/struuid.rb
376
+ - lib/sparql/algebra/operator/subject.rb
373
377
  - lib/sparql/algebra/operator/substr.rb
374
378
  - lib/sparql/algebra/operator/subtract.rb
375
379
  - lib/sparql/algebra/operator/sum.rb
376
380
  - lib/sparql/algebra/operator/table.rb
377
381
  - lib/sparql/algebra/operator/timezone.rb
382
+ - lib/sparql/algebra/operator/triple.rb
378
383
  - lib/sparql/algebra/operator/tz.rb
379
384
  - lib/sparql/algebra/operator/ucase.rb
380
385
  - lib/sparql/algebra/operator/union.rb
@@ -413,7 +418,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
418
  - !ruby/object:Gem::Version
414
419
  version: '0'
415
420
  requirements: []
416
- rubygems_version: 3.0.8
421
+ rubygems_version: 3.2.3
417
422
  signing_key:
418
423
  specification_version: 4
419
424
  summary: SPARQL Query and Update library for Ruby.