rdf-microdata 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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
-