rdf-microdata 2.0 → 2.0.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/etc/doap.html +5 -2
- data/etc/doap.nt +2 -1
- data/etc/doap.ttl +27 -0
- data/lib/rdf/microdata/reader.rb +21 -30
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b1d1b0be6be75b9604495e5571840eae3d760b5c
|
|
4
|
+
data.tar.gz: 72ea12e35779e10447eabd3965238533e892816b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1bb225e865fe2e48b4606d67ccb04f5bce62b4dfa30c5a29d99217e4007ab290f273725eedf1682cb9d8e3e3a9facc2df4de6c1b8f22014d0bab951214a97967
|
|
7
|
+
data.tar.gz: 0f8cad8716484382a1b0286d66245698c37d8e4e81456d2cc3a0018be1e23fe13ff4875e0bf598a9df94359a3ae24547db14913571c69011fc0964cd40f94071
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.0
|
|
1
|
+
2.0.1
|
data/etc/doap.html
CHANGED
|
@@ -22,11 +22,14 @@
|
|
|
22
22
|
http://github.com/ruby-rdf/rdf-microdata/issues
|
|
23
23
|
</a>
|
|
24
24
|
</dd>
|
|
25
|
-
<dt>Category</dt><dd
|
|
26
|
-
<a href="http://dbpedia.org/resource/Resource_Description_Framework">Resource Description Framework</a>
|
|
25
|
+
<dt>Category</dt><dd>
|
|
26
|
+
<a itemprop="category" href="http://dbpedia.org/resource/Resource_Description_Framework">Resource Description Framework</a>
|
|
27
27
|
for
|
|
28
28
|
<a itemprop="programming-language" href="http://dbpedia.org/resource/Ruby_(programming_language)">Ruby</a>
|
|
29
29
|
</dd>
|
|
30
|
+
<dt>Implements</dt><dd>
|
|
31
|
+
<a itemprop="implements" href="http://www.w3.org/TR/microdata-rdf/">Microdata to RDF</a>
|
|
32
|
+
</dd>
|
|
30
33
|
<dt>Download</dt><dd><a href="http://rubygems.org/gems/rdf-microdata" itemprop="download-page">
|
|
31
34
|
http://rubygems.org/gems/rdf-microdata
|
|
32
35
|
</a></dd>
|
data/etc/doap.nt
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#shortdesc> "Microdata reader for Ruby."@en .
|
|
3
3
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#description> "\n RDF::Microdata is an Microdata reader for Ruby using the RDF.rb library suite.\n "@en .
|
|
4
4
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#name> "RDF::Microdata" .
|
|
5
|
-
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#category> "\n Resource Description Framework\n for\n Ruby\n " .
|
|
6
5
|
<http://rubygems.org/gems/rdf-microdata> <http://purl.org/dc/terms/creator> <http://greggkellogg.net/foaf#me> .
|
|
7
6
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#developer> <http://greggkellogg.net/foaf#me> .
|
|
8
7
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#documenter> <http://greggkellogg.net/foaf#me> .
|
|
@@ -11,7 +10,9 @@
|
|
|
11
10
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#created> "2011-08-29"^^<http://www.w3.org/2001/XMLSchema#date> .
|
|
12
11
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#blog> <http://greggkellogg.net/> .
|
|
13
12
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#bug-database> <http://github.com/ruby-rdf/rdf-microdata/issues> .
|
|
13
|
+
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#category> <http://dbpedia.org/resource/Resource_Description_Framework> .
|
|
14
14
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#programming-language> <http://dbpedia.org/resource/Ruby_(programming_language)> .
|
|
15
|
+
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#implements> <http://www.w3.org/TR/microdata-rdf/> .
|
|
15
16
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#download-page> <http://rubygems.org/gems/rdf-microdata> .
|
|
16
17
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#homepage> <http://github.com/ruby-rdf/rdf-microdata> .
|
|
17
18
|
<http://rubygems.org/gems/rdf-microdata> <http://usefulinc.com/ns/doap#license> <http://creativecommons.org/licenses/publicdomain/> .
|
data/etc/doap.ttl
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
@prefix dc: <http://purl.org/dc/terms/> .
|
|
2
|
+
@prefix doap: <http://usefulinc.com/ns/doap#> .
|
|
3
|
+
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
|
4
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
5
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
6
|
+
|
|
7
|
+
<http://rubygems.org/gems/rdf-microdata> a doap:Project;
|
|
8
|
+
dc:creator <http://greggkellogg.net/foaf#me>;
|
|
9
|
+
doap:blog <http://greggkellogg.net/>;
|
|
10
|
+
doap:bug-database <http://github.com/ruby-rdf/rdf-microdata/issues>;
|
|
11
|
+
doap:category <http://dbpedia.org/resource/Resource_Description_Framework>;
|
|
12
|
+
doap:created "2011-08-29"^^xsd:date;
|
|
13
|
+
doap:description """
|
|
14
|
+
RDF::Microdata is an Microdata reader for Ruby using the RDF.rb library suite.
|
|
15
|
+
"""@en;
|
|
16
|
+
doap:developer <http://greggkellogg.net/foaf#me>;
|
|
17
|
+
doap:documenter <http://greggkellogg.net/foaf#me>;
|
|
18
|
+
doap:download-page <http://rubygems.org/gems/rdf-microdata>;
|
|
19
|
+
doap:homepage <http://github.com/ruby-rdf/rdf-microdata>;
|
|
20
|
+
doap:implements <http://www.w3.org/TR/microdata-rdf/>;
|
|
21
|
+
doap:license <http://creativecommons.org/licenses/publicdomain/>;
|
|
22
|
+
doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/>;
|
|
23
|
+
doap:maintainer <http://greggkellogg.net/foaf#me>;
|
|
24
|
+
doap:name "RDF::Microdata";
|
|
25
|
+
doap:programming-language <http://dbpedia.org/resource/Ruby_(programming_language)>;
|
|
26
|
+
doap:shortdesc "Microdata reader for Ruby."@en;
|
|
27
|
+
foaf:creator <http://greggkellogg.net/foaf#me> .
|
data/lib/rdf/microdata/reader.rb
CHANGED
|
@@ -49,7 +49,7 @@ module RDF::Microdata
|
|
|
49
49
|
# @param [String] registry_uri
|
|
50
50
|
def self.load_registry(registry_uri)
|
|
51
51
|
return if @registry_uri == registry_uri
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
json = RDF::Util::File.open_file(registry_uri) { |f| JSON.load(f) }
|
|
54
54
|
|
|
55
55
|
@prefixes = {}
|
|
@@ -187,7 +187,7 @@ module RDF::Microdata
|
|
|
187
187
|
|
|
188
188
|
# Load registry
|
|
189
189
|
begin
|
|
190
|
-
registry_uri = options
|
|
190
|
+
registry_uri = options[:registry] || DEFAULT_REGISTRY
|
|
191
191
|
add_debug(@doc, "registry = #{registry_uri.inspect}")
|
|
192
192
|
Registry.load_registry(registry_uri)
|
|
193
193
|
rescue JSON::ParserError => e
|
|
@@ -391,6 +391,7 @@ module RDF::Microdata
|
|
|
391
391
|
|
|
392
392
|
# 9.1.5) If an entry exists in the registry for name in the vocabulary associated with vocab having the key subPropertyOf or equivalentProperty
|
|
393
393
|
vocab.expand(predicate) do |equiv|
|
|
394
|
+
add_debug(item) {"gentrips(9.1.5): equiv=#{equiv.inspect}"}
|
|
394
395
|
# for each such value equiv, generate the following triple
|
|
395
396
|
add_triple(item, subject, equiv, value)
|
|
396
397
|
end
|
|
@@ -441,11 +442,9 @@ module RDF::Microdata
|
|
|
441
442
|
# List of property elements for an item
|
|
442
443
|
def item_properties(item, reverse = false)
|
|
443
444
|
add_debug(item, "item_properties (#{reverse.inspect})")
|
|
444
|
-
|
|
445
|
-
raise CrawlFailure, "item_props: errors=#{errors}" if errors > 0
|
|
446
|
-
results
|
|
445
|
+
crawl_properties(item, [], reverse)
|
|
447
446
|
rescue CrawlFailure => e
|
|
448
|
-
add_error(
|
|
447
|
+
add_error(item, e.message)
|
|
449
448
|
return []
|
|
450
449
|
end
|
|
451
450
|
|
|
@@ -455,48 +454,42 @@ module RDF::Microdata
|
|
|
455
454
|
# @param [Nokogiri::XML::Element] root
|
|
456
455
|
# @param [Array<Nokokogiri::XML::Element>] memory
|
|
457
456
|
# @param [Boolean] reverse crawl reverse properties
|
|
458
|
-
# @return [Array<
|
|
459
|
-
# Resultant elements
|
|
457
|
+
# @return [Array<Nokogiri::XML::Element>]
|
|
458
|
+
# Resultant elements
|
|
460
459
|
def crawl_properties(root, memory, reverse)
|
|
461
|
-
|
|
462
460
|
# 1. If root is in memory, then the algorithm fails; abort these steps.
|
|
463
461
|
raise CrawlFailure, "crawl_props mem already has #{root.inspect}" if memory.include?(root)
|
|
464
462
|
|
|
465
463
|
# 2. Collect all the elements in the item root; let results be the resulting list of elements, and errors be the resulting count of errors.
|
|
466
|
-
results
|
|
467
|
-
add_debug(root) {"crawl_properties reverse=#{reverse.inspect} results=#{results.map {|e| node_path(e)}.inspect}
|
|
464
|
+
results = elements_in_item(root)
|
|
465
|
+
add_debug(root) {"crawl_properties reverse=#{reverse.inspect} results=#{results.map {|e| node_path(e)}.inspect}"}
|
|
468
466
|
|
|
469
467
|
# 3. Remove any elements from results that do not have an @itemprop (@itemprop-reverse) attribute specified.
|
|
470
468
|
results = results.select {|e| e.has_attribute?(reverse ? 'itemprop-reverse' : 'itemprop')}
|
|
471
469
|
|
|
472
470
|
# 4. Let new memory be a new list consisting of the old list memory with the addition of root.
|
|
471
|
+
raise CrawlFailure, "itemref recursion" if memory.detect {|n| root.node.object_id == n.node.object_id}
|
|
473
472
|
new_memory = memory + [root]
|
|
474
473
|
|
|
475
474
|
# 5. For each element in results that has an @itemscope attribute specified, crawl the properties of the element, with new memory as the memory.
|
|
476
475
|
results.select {|e| e.has_attribute?('itemscope')}.each do |element|
|
|
477
|
-
|
|
478
|
-
crawl_properties(element, new_memory, reverse)
|
|
479
|
-
rescue CrawlFailure => e
|
|
480
|
-
# If this fails, then remove the element from results and increment errors. (If it succeeds, the return value is discarded.)
|
|
481
|
-
memory -= element
|
|
482
|
-
add_error(element, e.message)
|
|
483
|
-
errors += 1
|
|
484
|
-
end
|
|
476
|
+
crawl_properties(element, new_memory, reverse)
|
|
485
477
|
end
|
|
486
478
|
|
|
487
|
-
|
|
479
|
+
results
|
|
488
480
|
end
|
|
489
481
|
|
|
490
482
|
##
|
|
491
|
-
# To collect all the elements in the item root, the user agent must run these steps. They return a list of elements
|
|
483
|
+
# To collect all the elements in the item root, the user agent must run these steps. They return a list of elements.
|
|
492
484
|
#
|
|
493
485
|
# @param [Nokogiri::XML::Element] root
|
|
494
|
-
# @return
|
|
486
|
+
# @return Array<Nokogiri::XML::Element>]
|
|
495
487
|
# Resultant elements and error count
|
|
488
|
+
# @raise CrawlFailure on element recursion
|
|
496
489
|
def elements_in_item(root)
|
|
497
490
|
# Let results and pending be empty lists of elements.
|
|
498
491
|
# Let errors be zero.
|
|
499
|
-
results, errors = [], 0
|
|
492
|
+
results, memory, errors = [], [], 0
|
|
500
493
|
|
|
501
494
|
# Add all the children elements of root to pending.
|
|
502
495
|
pending = root.elements
|
|
@@ -514,20 +507,19 @@ module RDF::Microdata
|
|
|
514
507
|
|
|
515
508
|
# Loop: Remove an element from pending and let current be that element.
|
|
516
509
|
while current = pending.shift
|
|
517
|
-
if
|
|
518
|
-
|
|
519
|
-
add_error(current, "elements_in_item: results already includes #{current.inspect}")
|
|
520
|
-
errors += 1
|
|
510
|
+
if memory.include?(current)
|
|
511
|
+
raise CrawlFailure, "elements_in_item: results already includes #{current.inspect}"
|
|
521
512
|
elsif !current.has_attribute?('itemscope')
|
|
522
513
|
# If current is not already in results and current does not have an itemscope attribute, then: add all the child elements of current to pending.
|
|
523
514
|
pending += current.elements
|
|
524
515
|
end
|
|
516
|
+
memory << current
|
|
525
517
|
|
|
526
518
|
# If current is not already in results, then: add current to results.
|
|
527
519
|
results << current unless results.include?(current)
|
|
528
520
|
end
|
|
529
521
|
|
|
530
|
-
|
|
522
|
+
results
|
|
531
523
|
end
|
|
532
524
|
|
|
533
525
|
##
|
|
@@ -540,8 +532,7 @@ module RDF::Microdata
|
|
|
540
532
|
{}
|
|
541
533
|
when element.name == 'meta'
|
|
542
534
|
RDF::Literal.new(element.attribute('content').to_s, :language => element.language)
|
|
543
|
-
when %w(data meter).include?(element.name)
|
|
544
|
-
RDF::Literal.new(element.attribute('value').to_s, :language => element.language)
|
|
535
|
+
when %w(data meter).include?(element.name) && element.attribute('value')
|
|
545
536
|
# Lexically scan value and assign appropriate type, otherwise, leave untyped
|
|
546
537
|
v = element.attribute('value').to_s
|
|
547
538
|
datatype = %w(Integer Float Double).map {|t| RDF::Literal.const_get(t)}.detect do |dt|
|
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:
|
|
4
|
+
version: 2.0.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:
|
|
12
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rdf
|
|
@@ -247,6 +247,7 @@ files:
|
|
|
247
247
|
- VERSION
|
|
248
248
|
- etc/doap.html
|
|
249
249
|
- etc/doap.nt
|
|
250
|
+
- etc/doap.ttl
|
|
250
251
|
- etc/registry.json
|
|
251
252
|
- lib/rdf/microdata.rb
|
|
252
253
|
- lib/rdf/microdata/expansion.rb
|