shex 0.1.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.
@@ -0,0 +1,106 @@
1
+ require 'ebnf/ll1/lexer'
2
+
3
+ module ShEx
4
+ module Terminals
5
+ # Definitions of token regular expressions used for lexical analysis
6
+
7
+ ##
8
+ # Unicode regular expressions for Ruby 1.9+ with the Oniguruma engine.
9
+ U_CHARS1 = Regexp.compile(<<-EOS.gsub(/\s+/, ''))
10
+ [\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|
11
+ [\\u0370-\\u037D]|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|
12
+ [\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]|
13
+ [\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]|[\\u{10000}-\\u{EFFFF}]
14
+ EOS
15
+ U_CHARS2 = Regexp.compile("\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]").freeze
16
+ IRI_RANGE = Regexp.compile("[[^<>\"{}|^`\\\\]&&[^\\x00-\\x20]]").freeze
17
+
18
+ # 26t
19
+ UCHAR = EBNF::LL1::Lexer::UCHAR
20
+ # 171s
21
+ PERCENT = /%\h\h/.freeze
22
+ # 173s
23
+ PN_LOCAL_ESC = /\\[_~\.\-\!$\&'\(\)\*\+,;=\/\?\#@%]/.freeze
24
+ # 170s
25
+ PLX = /#{PERCENT}|#{PN_LOCAL_ESC}/.freeze.freeze
26
+ # 164s
27
+ PN_CHARS_BASE = /[A-Za-z]|#{U_CHARS1}/.freeze
28
+ # 165s
29
+ PN_CHARS_U = /_|#{PN_CHARS_BASE}/.freeze
30
+ # 167s
31
+ PN_CHARS = /[\d-]|#{PN_CHARS_U}|#{U_CHARS2}/.freeze
32
+ PN_LOCAL_BODY = /(?:(?:\.|:|#{PN_CHARS}|#{PLX})*(?:#{PN_CHARS}|:|#{PLX}))?/.freeze
33
+ PN_CHARS_BODY = /(?:(?:\.|#{PN_CHARS})*#{PN_CHARS})?/.freeze
34
+ # 168s
35
+ PN_PREFIX = /#{PN_CHARS_BASE}#{PN_CHARS_BODY}/.freeze
36
+ # 169s
37
+ PN_LOCAL = /(?:[\d|]|#{PN_CHARS_U}|#{PLX})#{PN_LOCAL_BODY}/.freeze
38
+ # 155s
39
+ EXPONENT = /[eE][+-]?\d+/
40
+ # 160s
41
+ ECHAR = /\\[tbnrf\\"']/
42
+
43
+ WS = /(?:\s|(?:#[^\n\r]*))+/m.freeze
44
+
45
+ # 60
46
+ RDF_TYPE = /a/.freeze
47
+ # 18t
48
+ IRIREF = /<(?:#{IRI_RANGE}|#{UCHAR})*>/.freeze
49
+ # 140s
50
+ PNAME_NS = /#{PN_PREFIX}?:/.freeze
51
+ # 141s
52
+ PNAME_LN = /#{PNAME_NS}#{PN_LOCAL}/.freeze
53
+ # 61
54
+ ATPNAME_NS = /@#{WS}*#{PN_PREFIX}?:/m.freeze
55
+ # 62
56
+ ATPNAME_LN = /@#{WS}*#{PNAME_NS}#{PN_LOCAL}/m.freeze
57
+ # 142s
58
+ BLANK_NODE_LABEL = /_:(?:\d|#{PN_CHARS_U})(?:(?:#{PN_CHARS}|\.)*#{PN_CHARS})?/.freeze
59
+ # 145s
60
+ LANGTAG = /@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*/.freeze
61
+ # 19t
62
+ INTEGER = /[+-]?\d+/.freeze
63
+ # 20t
64
+ DECIMAL = /[+-]?(?:\d*\.\d+)/.freeze
65
+ # 21t
66
+ DOUBLE = /[+-]?(?:\d+\.\d*#{EXPONENT}|\.?\d+#{EXPONENT})/.freeze
67
+ # 156s
68
+ STRING_LITERAL1 = /'(?:[^\'\\\n\r]|#{ECHAR}|#{UCHAR})*'/.freeze
69
+ # 157s
70
+ STRING_LITERAL2 = /"(?:[^\"\\\n\r]|#{ECHAR}|#{UCHAR})*"/.freeze
71
+ # 158s
72
+ STRING_LITERAL_LONG1 = /'''(?:(?:'|'')?(?:[^'\\]|#{ECHAR}|#{UCHAR}))*'''/m.freeze
73
+ # 159s
74
+ STRING_LITERAL_LONG2 = /"""(?:(?:"|"")?(?:[^"\\]|#{ECHAR}|#{UCHAR}))*"""/m.freeze
75
+
76
+ # 29
77
+ CODE = /\{(?:[^%\\]|\\[%\\]|#{UCHAR})*%#{WS}*\}/m.freeze
78
+ # 30
79
+ REPEAT_RANGE = /\{\s*#{INTEGER}(?:,#{WS}*(?:#{INTEGER}|\*)?)?#{WS}*\}/.freeze
80
+
81
+ # String terminals, mixed case sensitivity
82
+ STR_EXPR = %r(true|false
83
+ |\^\^|\/\/
84
+ |[\(\)\{\}\[\],\.;\=\-\~!\|\&\@\$\?\+\*\%\^\/a]|
85
+ (?i:OR|AND|NOT
86
+ |BASE|PREFIX
87
+ |IRI|BNODE|NONLITERAL|PATTERN
88
+ |MINLENGTH|MAXLENGTH|LENGTH
89
+ |MAXINCLUSIVE|MAXEXCLUSIVE
90
+ |MININCLUSIVE|MINEXCLUSIVE
91
+ |TOTALDIGITS|FRACTIONDIGITS
92
+ |START
93
+ |EXTERNAL|CLOSED|EXTRA|LITERAL
94
+ )
95
+ )x.freeze
96
+
97
+ # Map terminals to canonical form
98
+ STR_MAP = %w{OR AND NOT BASE PREFIX IRI BNODE NONLITERAL PATTERN
99
+ MINLENGTH MAXLENGTH LENGTH MININCLUSIVE MAXINCLUSIVE MINEXCLUSIVE MAXEXCLUSIVE
100
+ TOTALDIGITS FRACTIONDIGITS START EXTERNAL CLOSED EXTRA LITERAL}.
101
+ inject({}) do |memo, t|
102
+ memo.merge(t.downcase => t)
103
+ end
104
+
105
+ end
106
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Gregg Kellogg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: ebnf
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sxp
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rdf-xsd
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sparql
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rdf-spec
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rdf-turtle
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.5'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '3.5'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rspec-its
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.2'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.2'
145
+ - !ruby/object:Gem::Dependency
146
+ name: yard
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.9'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.9'
159
+ description: Implements ShExC and ShEx JSON.
160
+ email: public-rdf-ruby@w3.org
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - AUTHORS
166
+ - CREDITS
167
+ - LICENSE
168
+ - README.md
169
+ - VERSION
170
+ - etc/doap.ttl
171
+ - lib/shex.rb
172
+ - lib/shex/algebra.rb
173
+ - lib/shex/algebra/and.rb
174
+ - lib/shex/algebra/annotation.rb
175
+ - lib/shex/algebra/base.rb
176
+ - lib/shex/algebra/each_of.rb
177
+ - lib/shex/algebra/external.rb
178
+ - lib/shex/algebra/inclusion.rb
179
+ - lib/shex/algebra/node_constraint.rb
180
+ - lib/shex/algebra/not.rb
181
+ - lib/shex/algebra/one_of.rb
182
+ - lib/shex/algebra/operator.rb
183
+ - lib/shex/algebra/or.rb
184
+ - lib/shex/algebra/prefix.rb
185
+ - lib/shex/algebra/satisfiable.rb
186
+ - lib/shex/algebra/schema.rb
187
+ - lib/shex/algebra/semact.rb
188
+ - lib/shex/algebra/shape.rb
189
+ - lib/shex/algebra/shape_ref.rb
190
+ - lib/shex/algebra/start.rb
191
+ - lib/shex/algebra/stem.rb
192
+ - lib/shex/algebra/stem_range.rb
193
+ - lib/shex/algebra/triple_constraint.rb
194
+ - lib/shex/algebra/triple_expression.rb
195
+ - lib/shex/algebra/unary_shape.rb
196
+ - lib/shex/algebra/value.rb
197
+ - lib/shex/meta.rb
198
+ - lib/shex/parser.rb
199
+ - lib/shex/terminals.rb
200
+ homepage: http://ruby-rdf.github.com/shex
201
+ licenses:
202
+ - Unlicense
203
+ metadata: {}
204
+ post_install_message:
205
+ rdoc_options: []
206
+ require_paths:
207
+ - lib
208
+ required_ruby_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 2.2.2
213
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ requirements: []
219
+ rubyforge_project: rdf
220
+ rubygems_version: 2.6.8
221
+ signing_key:
222
+ specification_version: 4
223
+ summary: Implementation of Shape Expressions (ShEx) for RDF.rb
224
+ test_files: []