rdf-microdata 2.2.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,109 @@
1
+ require 'json'
2
+ module RDF::Microdata
3
+
4
+ # Interface to registry
5
+ class Registry
6
+ # @return [RDF::URI] Prefix of vocabulary
7
+ attr_reader :uri
8
+
9
+ # @return [Hash] properties
10
+ attr_reader :properties
11
+
12
+ ##
13
+ # Initialize the registry from a URI or file path
14
+ #
15
+ # @param [String] registry_uri
16
+ def self.load_registry(registry_uri)
17
+ return if @registry_uri == registry_uri
18
+
19
+ json = RDF::Util::File.open_file(registry_uri) { |f| ::JSON.load(f) }
20
+
21
+ @prefixes = {}
22
+ json.each do |prefix, elements|
23
+ next unless elements.is_a?(Hash)
24
+ properties = elements.fetch("properties", {})
25
+ @prefixes[prefix] = Registry.new(prefix, properties)
26
+ end
27
+ @registry_uri = registry_uri
28
+ end
29
+
30
+ ##
31
+ # Initialize registry for a particular prefix URI
32
+ #
33
+ # @param [RDF::URI] prefixURI
34
+ # @param [Hash] properties ({})
35
+ def initialize(prefixURI, properties = {})
36
+ @uri = prefixURI
37
+ @properties = properties
38
+ @property_base = prefixURI.to_s
39
+ # Append a '#' for fragment if necessary
40
+ @property_base += '#' unless %w(/ #).include?(@property_base[-1,1])
41
+ end
42
+
43
+ ##
44
+ # Find a registry entry given a type URI
45
+ #
46
+ # @param [RDF::URI] type
47
+ # @return [Registry]
48
+ def self.find(type)
49
+ @prefixes ||= {}
50
+ k = @prefixes.keys.detect {|key| type.to_s.index(key) == 0 }
51
+ @prefixes[k] if k
52
+ end
53
+
54
+ ##
55
+ # Generate a predicateURI given a `name`
56
+ #
57
+ # @param [#to_s] name
58
+ # @param [RDF::URI] base_uri base URI for resolving `name`.
59
+ # @return [RDF::URI]
60
+ def predicateURI(name, base_uri)
61
+ u = RDF::URI(name)
62
+ # 1) If _name_ is an _absolute URL_, return _name_ as a _URI reference_
63
+ return u if u.absolute?
64
+
65
+ n = frag_escape(name)
66
+ if uri.nil?
67
+ # 2) If current vocabulary from context is null, there can be no current vocabulary.
68
+ # Return the URI reference that is the document base with its fragment set to the fragment-escaped value of name
69
+ u = RDF::URI(base_uri.to_s)
70
+ u.fragment = frag_escape(name)
71
+ u
72
+ else
73
+ # 4) If scheme is vocabulary return the URI reference constructed by appending the fragment escaped value of name to current vocabulary, separated by a U+0023 NUMBER SIGN character (#) unless the current vocabulary ends with either a U+0023 NUMBER SIGN character (#) or SOLIDUS U+002F (/).
74
+ RDF::URI(@property_base + n)
75
+ end
76
+ end
77
+
78
+ ##
79
+ # Yield a equivalentProperty or subPropertyOf if appropriate
80
+ #
81
+ # @param [RDF::URI] predicateURI
82
+ # @yield equiv
83
+ # @yieldparam [RDF::URI] equiv
84
+ def expand(predicateURI)
85
+ tok = tokenize(predicateURI)
86
+ if @properties[tok].is_a?(Hash)
87
+ value = @properties[tok].fetch("subPropertyOf", nil)
88
+ value ||= @properties[tok].fetch("equivalentProperty", nil)
89
+
90
+ Array(value).each {|equiv| yield RDF::URI(equiv)}
91
+ end
92
+ end
93
+
94
+ ##
95
+ # Turn a predicateURI into a simple token
96
+ # @param [RDF::URI] predicateURI
97
+ # @return [String]
98
+ def tokenize(predicateURI)
99
+ predicateURI.to_s.sub(@property_base, '')
100
+ end
101
+
102
+ ##
103
+ # Fragment escape a name
104
+ def frag_escape(name)
105
+ name.to_s.gsub(/["#%<>\[\\\]^{|}]/) {|c| '%' + c.unpack('H2' * c.bytesize).join('%').upcase}
106
+ end
107
+ end
108
+
109
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-microdata
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-10 00:00:00.000000000 Z
12
+ date: 2020-07-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '2.2'
20
+ version: '3.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '2.2'
27
+ version: '3.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rdf-xsd
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.1'
34
+ version: '3.1'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.1'
41
+ version: '3.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: htmlentities
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '1.7'
62
+ version: '1.10'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '1.7'
69
+ version: '1.10'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: equivalent-xml
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -87,98 +87,112 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0.9'
90
+ version: 0.9.20
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.9'
97
+ version: 0.9.20
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rspec
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '3.5'
104
+ version: '3.9'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '3.5'
111
+ version: '3.9'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: rspec-its
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: '1.2'
118
+ version: '1.3'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: '1.2'
125
+ version: '1.3'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rdf-spec
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: '2.2'
132
+ version: '3.1'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '2.2'
139
+ version: '3.1'
140
140
  - !ruby/object:Gem::Dependency
141
- name: rdf-rdfa
141
+ name: rdf-turtle
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '3.1'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '3.1'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rdf-isomorphic
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
158
  - - "~>"
145
159
  - !ruby/object:Gem::Version
146
- version: '2.2'
160
+ version: '3.1'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
165
  - - "~>"
152
166
  - !ruby/object:Gem::Version
153
- version: '2.2'
167
+ version: '3.1'
154
168
  - !ruby/object:Gem::Dependency
155
- name: rdf-turtle
169
+ name: json-ld
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
172
  - - "~>"
159
173
  - !ruby/object:Gem::Version
160
- version: '2.2'
174
+ version: '3.1'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
179
  - - "~>"
166
180
  - !ruby/object:Gem::Version
167
- version: '2.2'
181
+ version: '3.1'
168
182
  - !ruby/object:Gem::Dependency
169
- name: rdf-isomorphic
183
+ name: rdf-rdfa
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
186
  - - "~>"
173
187
  - !ruby/object:Gem::Version
174
- version: '2.2'
188
+ version: '3.1'
175
189
  type: :development
176
190
  prerelease: false
177
191
  version_requirements: !ruby/object:Gem::Requirement
178
192
  requirements:
179
193
  - - "~>"
180
194
  - !ruby/object:Gem::Version
181
- version: '2.2'
195
+ version: '3.1'
182
196
  description: Reads HTML Microdata as RDF.
183
197
  email: public-rdf-ruby@w3.org
184
198
  executables: []
@@ -196,11 +210,13 @@ files:
196
210
  - lib/rdf/microdata.rb
197
211
  - lib/rdf/microdata/expansion.rb
198
212
  - lib/rdf/microdata/format.rb
213
+ - lib/rdf/microdata/rdfa_reader.rb
199
214
  - lib/rdf/microdata/reader.rb
200
215
  - lib/rdf/microdata/reader/nokogiri.rb
216
+ - lib/rdf/microdata/registry.rb
201
217
  - lib/rdf/microdata/version.rb
202
218
  - lib/rdf/microdata/vocab.rb
203
- homepage: http://ruby-rdf.github.com/rdf-microdata
219
+ homepage: https://ruby-rdf.github.com/rdf-microdata
204
220
  licenses:
205
221
  - Unlicense
206
222
  metadata: {}
@@ -212,15 +228,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
228
  requirements:
213
229
  - - ">="
214
230
  - !ruby/object:Gem::Version
215
- version: 2.2.2
231
+ version: '2.4'
216
232
  required_rubygems_version: !ruby/object:Gem::Requirement
217
233
  requirements:
218
234
  - - ">="
219
235
  - !ruby/object:Gem::Version
220
236
  version: '0'
221
237
  requirements: []
222
- rubyforge_project: rdf-microdata
223
- rubygems_version: 2.6.11
238
+ rubygems_version: 3.1.3
224
239
  signing_key:
225
240
  specification_version: 4
226
241
  summary: Microdata reader for Ruby.