rdf-microdata 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +15 -3
- data/VERSION +1 -1
- data/lib/rdf/microdata/reader.rb +12 -24
- metadata +5 -5
data/README
CHANGED
@@ -19,10 +19,13 @@ Install with 'gem install rdf-microdata'
|
|
19
19
|
|
20
20
|
graph = RDF::Graph.load("etc/foaf.html", :format => :microdata)
|
21
21
|
|
22
|
+
## Note
|
23
|
+
The Microdata editor has recently [dropped support for RDF
|
24
|
+
conversion](http://html5.org/tools/web-apps-tracker?from=6426&to=6427), as a result, this gem is being used to
|
25
|
+
investigate ways in which Microdata might have more satisfactory RDF generation.
|
26
|
+
|
22
27
|
### Generating RDF friendly URIs from terms
|
23
|
-
|
24
|
-
term, and not already a URI. {RDF::Microdata::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`,
|
28
|
+
If the `@itemprop` is included within an item having an `@itemtype`,
|
26
29
|
the URI of the `@itemtype` will be used for generating a term URI. The type URI will be trimmed following
|
27
30
|
the last '#' or '/' character, and the term will be appended to the resulting URI. This is in keeping
|
28
31
|
with standard convention for defining properties and classes within an RDFS or OWL vocabulary.
|
@@ -48,6 +51,15 @@ With the `:rdf\_terms` option, this becomes:
|
|
48
51
|
@prefix schema: <http://schema.org/> .
|
49
52
|
<> md:item [ a schema:Person; schema:name "Gregg" ] .
|
50
53
|
|
54
|
+
### Improve xsd:date, xsd:time, xsd:dateTime and xsd:duration generation from _time_ element
|
55
|
+
|
56
|
+
Use the lexical form of the @datetime attribute of the _time_ element to determine the specific type
|
57
|
+
of the generated literal.
|
58
|
+
|
59
|
+
### Remove implicit RDF triple generation
|
60
|
+
|
61
|
+
html>head>title and anchor (_a_) elements no longer generate triples without @item* properties
|
62
|
+
|
51
63
|
## Dependencies
|
52
64
|
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.3.3)
|
53
65
|
* [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.3.3)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/rdf/microdata/reader.rb
CHANGED
@@ -4,9 +4,12 @@ module RDF::Microdata
|
|
4
4
|
##
|
5
5
|
# An Microdata parser in Ruby
|
6
6
|
#
|
7
|
-
# Based on processing rules
|
8
|
-
# @
|
7
|
+
# Based on processing rules, amended with the following:
|
8
|
+
# * property generation from tokens now uses the associated @itemtype as the basis for generation
|
9
|
+
# * implicit triples are not generated, only those with @item*
|
10
|
+
# * @datetime values are scanned lexically to find appropriate datatype
|
9
11
|
#
|
12
|
+
# @see http://dev.w3.org/html5/md/
|
10
13
|
# @author [Gregg Kellogg](http://kellogg-assoc.com/)
|
11
14
|
class Reader < RDF::Reader
|
12
15
|
format Format
|
@@ -39,8 +42,6 @@ module RDF::Microdata
|
|
39
42
|
# whether to intern all parsed URIs
|
40
43
|
# @option options [#to_s] :base_uri (nil)
|
41
44
|
# 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
|
44
45
|
# @option options [Array] :debug
|
45
46
|
# Array to place debug messages
|
46
47
|
# @return [reader]
|
@@ -163,19 +164,6 @@ module RDF::Microdata
|
|
163
164
|
base = RDF::URI("")
|
164
165
|
end
|
165
166
|
|
166
|
-
##
|
167
|
-
# 1. If the title element is not null, then generate the following triple:
|
168
|
-
#
|
169
|
-
# subject: the document's current address
|
170
|
-
# predicate: http://purl.org/dc/terms/title
|
171
|
-
# object: the concatenation of the data of all the child text nodes of the title element,
|
172
|
-
# in tree order, as a plain literal, with the language information set from
|
173
|
-
# the language of the title element, if it is not unknown.
|
174
|
-
doc.css('html>head>title').each do |title|
|
175
|
-
lang = title.attribute('language')
|
176
|
-
add_triple(title, base, RDF::DC.title, title.inner_text)
|
177
|
-
end
|
178
|
-
|
179
167
|
# 2. For each a, area, and link element in the Document, run these substeps:
|
180
168
|
#
|
181
169
|
# * If the element does not have a rel attribute, then skip this element.
|
@@ -338,15 +326,10 @@ module RDF::Microdata
|
|
338
326
|
|
339
327
|
predicate = if name_uri.absolute?
|
340
328
|
name_uri
|
341
|
-
|
329
|
+
else
|
342
330
|
# Use the URI of the type to create URIs for @itemprop terms
|
343
331
|
add_debug(element, "gentrips: rdf_type=#{rdf_type}")
|
344
332
|
predicate = RDF::URI(rdf_type.to_s.sub(/([\/\#])[^\/\#]*$/, '\1' + name))
|
345
|
-
elsif !name.include?(':')
|
346
|
-
s = type.to_s
|
347
|
-
s += '%20' unless s[-1,1] == ':'
|
348
|
-
s += name
|
349
|
-
RDF::MD[s.gsub('#', '%23')]
|
350
333
|
end
|
351
334
|
add_debug(element, "gentrips(6.1.5): predicate=#{predicate}")
|
352
335
|
|
@@ -478,7 +461,12 @@ module RDF::Microdata
|
|
478
461
|
when %w(object).include?(element.name)
|
479
462
|
uri(element.attribute('data'), element.base)
|
480
463
|
when %w(time).include?(element.name) && element.has_attribute?('datetime')
|
481
|
-
|
464
|
+
# Lexically scan value and assign appropriate type, otherwise, leave untyped
|
465
|
+
v = element.attribute('datetime').to_s
|
466
|
+
datatype = %w(Date Time DateTime).map {|t| RDF::Literal.const_get(t)}.detect do |dt|
|
467
|
+
v.match(dt::GRAMMAR)
|
468
|
+
end || RDF::Literal
|
469
|
+
datatype.new(v)
|
482
470
|
else
|
483
471
|
RDF::Literal.new(element.text, :language => element.language)
|
484
472
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-microdata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gregg Kellogg
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-12 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|