rdf-microdata 2.2.0 → 3.1.1

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