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