rdf-microdata 0.1.1 → 0.1.2

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.
Files changed (4) hide show
  1. data/README +30 -1
  2. data/VERSION +1 -1
  3. data/lib/rdf/microdata/reader.rb +8 -3
  4. metadata +67 -74
data/README CHANGED
@@ -15,10 +15,39 @@ Install with 'gem install rdf-microdata'
15
15
 
16
16
  ## Usage
17
17
 
18
- ### Reading RDF data in the RDFa format
18
+ ### Reading RDF data in the Microdata format
19
19
 
20
20
  graph = RDF::Graph.load("etc/foaf.html", :format => :microdata)
21
21
 
22
+ ### Generating RDF friendly URIs from terms
23
+ As defined, Microdata creates ugly (and even illegal) URIs for `@itemprop` entries that are a simple
24
+ term, and not already a URI. {RDF::RDFa::Reader} implements a `:rdf\_terms` option which uses an alternative
25
+ process for creating URIs from terms: If the `@itemprop` is included within an item having an `@itemtype`,
26
+ the URI of the `@itemtype` will be used for generating a term URI. The type URI will be trimmed following
27
+ the last '#' or '/' character, and the term will be appended to the resulting URI. This is in keeping
28
+ with standard convention for defining properties and classes within an RDFS or OWL vocabulary.
29
+
30
+ For example:
31
+
32
+ <div itemscope itemtype="http://schema.org/Person">
33
+ My name is <span itemprop="name">Gregg</span>
34
+ </div>
35
+
36
+ Without the `:rdf\_terms` option, this would create the following statements:
37
+
38
+ @prefix md: <http://www.w3.org/1999/xhtml/microdata#> .
39
+ @prefix schema: <http://schema.org/> .
40
+ <> md:item [
41
+ a schema:Person;
42
+ <http://www.w3.org/1999/xhtml/microdata#http://schema.org/Person%23:name> "Gregg"
43
+ ] .
44
+
45
+ With the `:rdf\_terms` option, this becomes:
46
+
47
+ @prefix md: <http://www.w3.org/1999/xhtml/microdata#> .
48
+ @prefix schema: <http://schema.org/> .
49
+ <> md:item [ a schema:Person; schema:name "Gregg" ] .
50
+
22
51
  ## Dependencies
23
52
  * [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.3.3)
24
53
  * [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.3.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -39,6 +39,8 @@ module RDF::Microdata
39
39
  # whether to intern all parsed URIs
40
40
  # @option options [#to_s] :base_uri (nil)
41
41
  # the base URI to use when resolving relative URIs
42
+ # @option options [Boolean] :rdf_terms (false)
43
+ # Generate URIs for itemprop terms based on namespace of itemtype
42
44
  # @option options [Array] :debug
43
45
  # Array to place debug messages
44
46
  # @return [reader]
@@ -238,7 +240,6 @@ module RDF::Microdata
238
240
  add_triple(el, base, RDF::DC.source, object)
239
241
  end
240
242
 
241
-
242
243
  # 5. Let memory be a mapping of items to subjects, initially empty.
243
244
  # 6. For each element that is also a top-level microdata item, run the following steps:
244
245
  # * Generate the triples for the item. Pass a reference to memory as the item/subject list.
@@ -287,7 +288,7 @@ module RDF::Microdata
287
288
 
288
289
  # 3. If item has an item type and that item type is an absolute URL, let type be that item type.
289
290
  # Otherwise, let type be the empty string.
290
- type = uri(item.attribute('itemtype'))
291
+ rdf_type = type = uri(item.attribute('itemtype'))
291
292
  type = '' unless type.absolute?
292
293
 
293
294
  if type != ''
@@ -298,7 +299,7 @@ module RDF::Microdata
298
299
  type += ':' unless type.to_s.match(/\#:/)
299
300
  elsif fallback_type
300
301
  add_debug(item, "gentrips(5.2): fallback_type=#{fallback_type}, fallback_name=#{fallback_name}")
301
- type = fallback_type
302
+ rdf_type = type = fallback_type
302
303
  # 5.2. If type does not contain a U+0023 NUMBER SIGN character (#), then append a # to type.
303
304
  type += '#' unless type.to_s.include?('#')
304
305
  # 5.3. If type does not have a : after its #, append a : to type.
@@ -335,6 +336,10 @@ module RDF::Microdata
335
336
 
336
337
  predicate = if name_uri.absolute?
337
338
  name_uri
339
+ elsif @options[:rdf_terms]
340
+ # Use the URI of the type to create URIs for @itemprop terms
341
+ add_debug(element, "gentrips: rdf_type=#{rdf_type}")
342
+ predicate = RDF::URI(rdf_type.to_s.sub(/(?<=[\/\#])[^\/\#]*$/, name))
338
343
  elsif !name.include?(':')
339
344
  s = type.to_s
340
345
  s += '%20' unless s[-1,1] == ':'
metadata CHANGED
@@ -1,104 +1,100 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rdf-microdata
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Gregg Kellogg
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-13 00:00:00 -07:00
12
+ date: 2011-07-23 00:00:00.000000000 -07:00
14
13
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: rdf
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2168962420 !ruby/object:Gem::Requirement
20
18
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
24
22
  version: 0.3.3
25
23
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: nokogiri
29
24
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2168962420
26
+ - !ruby/object:Gem::Dependency
27
+ name: nokogiri
28
+ requirement: &2168961960 !ruby/object:Gem::Requirement
31
29
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
35
33
  version: 1.4.4
36
34
  type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: yard
40
35
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2168961960
37
+ - !ruby/object:Gem::Dependency
38
+ name: yard
39
+ requirement: &2168988620 !ruby/object:Gem::Requirement
42
40
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
46
44
  version: 0.6.0
47
45
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
46
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2168988620
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &2168988160 !ruby/object:Gem::Requirement
53
51
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
57
55
  version: 2.5.0
58
56
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: rdf-spec
62
57
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
58
+ version_requirements: *2168988160
59
+ - !ruby/object:Gem::Dependency
60
+ name: rdf-spec
61
+ requirement: &2168987700 !ruby/object:Gem::Requirement
64
62
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
68
66
  version: 0.3.2
69
67
  type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: rdf-n3
73
68
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
69
+ version_requirements: *2168987700
70
+ - !ruby/object:Gem::Dependency
71
+ name: rdf-n3
72
+ requirement: &2168987240 !ruby/object:Gem::Requirement
75
73
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
79
77
  version: 0.3.3
80
78
  type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: rdf-isomorphic
84
79
  prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
80
+ version_requirements: *2168987240
81
+ - !ruby/object:Gem::Dependency
82
+ name: rdf-isomorphic
83
+ requirement: &2168986780 !ruby/object:Gem::Requirement
86
84
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
90
88
  version: 0.3.4
91
89
  type: :development
92
- version_requirements: *id007
90
+ prerelease: false
91
+ version_requirements: *2168986780
93
92
  description: Microdata reader for Ruby.
94
93
  email: public-rdf-ruby@w3.org
95
94
  executables: []
96
-
97
95
  extensions: []
98
-
99
96
  extra_rdoc_files: []
100
-
101
- files:
97
+ files:
102
98
  - AUTHORS
103
99
  - README
104
100
  - UNLICENSE
@@ -111,31 +107,28 @@ files:
111
107
  - lib/rdf/microdata.rb
112
108
  has_rdoc: false
113
109
  homepage: http://github.com/gkellogg/rdf-microdata
114
- licenses:
110
+ licenses:
115
111
  - Public Domain
116
112
  post_install_message:
117
113
  rdoc_options: []
118
-
119
- require_paths:
114
+ require_paths:
120
115
  - lib
121
- required_ruby_version: !ruby/object:Gem::Requirement
116
+ required_ruby_version: !ruby/object:Gem::Requirement
122
117
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
126
121
  version: 1.8.1
127
- required_rubygems_version: !ruby/object:Gem::Requirement
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
123
  none: false
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: "0"
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
133
128
  requirements: []
134
-
135
129
  rubyforge_project: rdf-microdata
136
130
  rubygems_version: 1.6.2
137
131
  signing_key:
138
132
  specification_version: 3
139
133
  summary: Microdata reader for Ruby.
140
134
  test_files: []
141
-