rdfa_parser 0.1.0 → 0.1.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.
- data/History.txt +5 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/earl-xhtml1-approved.txt +1510 -0
- data/lib/rdfa_parser.rb +1 -0
- data/lib/rdfa_parser/rdfa_parser.rb +3 -2
- data/spec/html4-testcases/0011.html +13 -0
- data/spec/html5-testcases/0011.html +13 -0
- data/spec/matchers.rb +11 -6
- data/spec/rdfa_helper.rb +13 -8
- data/spec/rdfa_parser_spec.rb +8 -8
- data/spec/xhtml1-testcases/9998.nt +1 -0
- data/spec/xhtml1-testcases/9998.xhtml +8 -0
- data/spec/xhtml1-testcases/9999.nt +0 -3
- data/spec/xhtml1-testcases/9999.xhtml +3 -9
- metadata +7 -2
data/lib/rdfa_parser.rb
CHANGED
@@ -17,6 +17,7 @@ rescue LoadError
|
|
17
17
|
end
|
18
18
|
|
19
19
|
module RdfaParser
|
20
|
+
VERSION = File.read(File.join(File.dirname(__FILE__), "..", "VERSION")).chop # Version in parent directory
|
20
21
|
LINK_TYPES = %w(
|
21
22
|
alternate appendix bookmark cite chapter contents copyright first glossary
|
22
23
|
help icon index last license meta next p3pv1 prev role section stylesheet subsection
|
@@ -392,8 +392,9 @@ module RdfaParser
|
|
392
392
|
BNode.new(suffix || "")
|
393
393
|
elsif curie.to_s.empty?
|
394
394
|
@debug << "curie_to_resource_or_bnode #{URIRef.new(subject)}"
|
395
|
-
# Empty curie resolves to current subject
|
396
|
-
URIRef.new(subject)
|
395
|
+
# Empty curie resolves to current subject (No, an empty curie should be ignored)
|
396
|
+
# URIRef.new(subject)
|
397
|
+
nil
|
397
398
|
else
|
398
399
|
ns = uri_mappings[prefix.to_s]
|
399
400
|
raise ParserException, "No namespace mapping for #{prefix}" unless ns
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html version="XHTML+RDFa 1.0"
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
4
|
+
<head>
|
5
|
+
<title>Test 0011</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div about="">
|
9
|
+
Author: <span property="dc:creator">Albert Einstein</span>
|
10
|
+
<h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
|
11
|
+
</div>
|
12
|
+
</body>
|
13
|
+
</html>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
4
|
+
<head>
|
5
|
+
<title>Test 0011</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div about="">
|
9
|
+
Author: <span property="dc:creator">Albert Einstein</span>
|
10
|
+
<h2 property="dc:title">E = mc<sup>2</sup>: The Most Urgent Problem of Our Time</h2>
|
11
|
+
</div>
|
12
|
+
</body>
|
13
|
+
</html>
|
data/spec/matchers.rb
CHANGED
@@ -18,6 +18,7 @@ module Matchers
|
|
18
18
|
@sorted_actual.length == @sorted_expected.length
|
19
19
|
end
|
20
20
|
def failure_message_for_should
|
21
|
+
info = @info.respond_to?(:information) ? @info.information : ""
|
21
22
|
if @last_line < @sorted_actual.length && @sorted_expected[@last_line]
|
22
23
|
"Graph differs at entry #{@last_line}:\nexpected: #{@sorted_expected[@last_line].to_ntriples}\nactual: #{@sorted_actual[@last_line].to_ntriples}"
|
23
24
|
elsif @last_line < @actual.triples.length
|
@@ -25,7 +26,7 @@ module Matchers
|
|
25
26
|
else
|
26
27
|
"Graph entry count differs:\nexpected: #{@sorted_expected.length}\nactual: #{@sorted_actual.length}"
|
27
28
|
end +
|
28
|
-
"\n\n#{
|
29
|
+
"\n\n#{info + "\n" unless info.empty?}" +
|
29
30
|
"Unsorted Expected:\n#{@expected.to_ntriples}" +
|
30
31
|
"Unsorted Results:\n#{@actual.to_ntriples}"
|
31
32
|
end
|
@@ -44,25 +45,29 @@ module Matchers
|
|
44
45
|
end
|
45
46
|
def matches?(actual)
|
46
47
|
@actual = actual
|
48
|
+
@expected_results = @info.respond_to?(:expectedResults) ? @info.expectedResults : true
|
47
49
|
model = Redland::Model.new
|
48
50
|
ntriples_parser = Redland::Parser.ntriples
|
49
51
|
ntriples_parser.parse_string_into_model(model, actual.to_ntriples, "http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/")
|
50
52
|
|
51
53
|
@results = @query.execute(model)
|
52
|
-
if @
|
53
|
-
@results.nil? || (@results.is_boolean? && !@results.get_boolean?)
|
54
|
-
else
|
54
|
+
if @expected_results
|
55
55
|
@results.is_boolean? && @results.get_boolean?
|
56
|
+
else
|
57
|
+
@results.nil? || @results.is_boolean? && !@results.get_boolean?
|
56
58
|
end
|
57
59
|
end
|
58
60
|
def failure_message_for_should
|
59
|
-
|
61
|
+
info = @info.respond_to?(:information) ? @info.information : ""
|
62
|
+
"#{info + "\n" unless info.empty?}" +
|
60
63
|
if @results.nil?
|
61
64
|
"Query failed to return results"
|
62
65
|
elsif !@results.is_boolean?
|
63
66
|
"Query returned non-boolean results"
|
64
|
-
|
67
|
+
elsif @expected_results
|
65
68
|
"Query returned false"
|
69
|
+
else
|
70
|
+
"Query returned true (expected false)"
|
66
71
|
end +
|
67
72
|
"\n#{@expected}" +
|
68
73
|
"\nResults:\n#{@actual.to_ntriples}"
|
data/spec/rdfa_helper.rb
CHANGED
@@ -16,14 +16,15 @@ module RdfaHelper
|
|
16
16
|
attr_accessor :purpose
|
17
17
|
attr_accessor :reviewStatus
|
18
18
|
attr_accessor :specificationReference
|
19
|
-
attr_accessor :
|
19
|
+
attr_accessor :expectedResults
|
20
20
|
|
21
21
|
@@test_cases = []
|
22
22
|
|
23
23
|
def initialize(statements)
|
24
|
-
|
24
|
+
self.expectedResults = true
|
25
25
|
statements.each do |statement|
|
26
26
|
next if statement.subject.is_a?(Redland::BNode)
|
27
|
+
#next unless statement.subject.uri.short_name == "Test0122"
|
27
28
|
unless self.about
|
28
29
|
self.about = URI.parse(statement.subject.uri.to_s)
|
29
30
|
self.name = statement.subject.uri.short_name
|
@@ -35,6 +36,9 @@ module RdfaHelper
|
|
35
36
|
elsif statement.predicate.uri.short_name == "informationResourceResults"
|
36
37
|
self.informationResourceResults = statement.object.uri.to_s.sub!(/^.*xhtml1-testcases/, TEST_DIR)
|
37
38
|
self.originalInformationResourceResults = statement.object.uri.to_s
|
39
|
+
elsif statement.predicate.uri.short_name == "expectedResults"
|
40
|
+
self.expectedResults = statement.object.literal.value == "true"
|
41
|
+
#puts "expectedResults = #{statement.object.literal.value}"
|
38
42
|
elsif self.respond_to?("#{statement.predicate.uri.short_name}=")
|
39
43
|
s = case
|
40
44
|
when statement.object.literal? then statement.object.literal
|
@@ -47,12 +51,16 @@ module RdfaHelper
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
54
|
+
def status
|
55
|
+
reviewStatus.to_s.split("#").last
|
56
|
+
end
|
57
|
+
|
50
58
|
def information
|
51
59
|
%w(purpose specificationReference).map {|a| v = self.send(a); "#{a}: #{v}" if v}.compact.join("\n")
|
52
60
|
end
|
53
61
|
|
54
|
-
def self.
|
55
|
-
return unless @@test_cases.empty?
|
62
|
+
def self.test_cases
|
63
|
+
return @@test_cases unless @@test_cases.empty?
|
56
64
|
|
57
65
|
manifest = File.read(File.join(TEST_DIR, "rdfa-xhtml1-test-manifest.rdf"))
|
58
66
|
rdfxml_parser = Redland::Parser.new
|
@@ -64,11 +72,9 @@ module RdfaHelper
|
|
64
72
|
|
65
73
|
@@test_cases = test_hash.values.map {|statements| TestCase.new(statements)}.
|
66
74
|
compact.
|
67
|
-
select{|t| t.
|
75
|
+
select{|t| t.status != "rejected"}.
|
68
76
|
sort_by{|t| t.about.is_a?(URI) ? t.about.to_s : "zzz"}
|
69
77
|
end
|
70
|
-
|
71
|
-
def self.test_cases; parse_test_cases; @@test_cases; end
|
72
78
|
end
|
73
79
|
end
|
74
80
|
|
@@ -104,7 +110,6 @@ class NTriplesParser
|
|
104
110
|
end
|
105
111
|
|
106
112
|
def redland_to_native(resource)
|
107
|
-
# puts resource.inspect
|
108
113
|
case
|
109
114
|
when resource.literal?
|
110
115
|
node_type = Redland.librdf_node_get_literal_value_datatype_uri(resource.literal.node)
|
data/spec/rdfa_parser_spec.rb
CHANGED
@@ -88,15 +88,15 @@ describe "RDFa parser" do
|
|
88
88
|
xml.should include("Manu Sporny")
|
89
89
|
end
|
90
90
|
|
91
|
+
def self.test_cases
|
92
|
+
RdfaHelper::TestCase.test_cases
|
93
|
+
end
|
94
|
+
|
91
95
|
# W3C Test suite from http://www.w3.org/2006/07/SWD/RDFa/testsuite/
|
92
96
|
describe "w3c xhtml1 testcases" do
|
93
|
-
def self.test_cases
|
94
|
-
RdfaHelper::TestCase.test_cases
|
95
|
-
end
|
96
|
-
|
97
97
|
test_cases.each do |t|
|
98
|
-
#next unless t.name == "
|
99
|
-
specify "test #{t.name}: #{t.title}" do
|
98
|
+
#next unless t.name == "Test0122"
|
99
|
+
specify "#{t.status} test #{t.name}: #{t.title}" do
|
100
100
|
rdfa_string = File.read(t.informationResourceInput)
|
101
101
|
rdfa_parser = RdfaParser::RdfaParser.new
|
102
102
|
rdfa_parser.parse(rdfa_string, t.originalInformationResourceInput)
|
@@ -107,9 +107,9 @@ describe "RDFa parser" do
|
|
107
107
|
# Check triples, as Rasql doesn't implement UNION
|
108
108
|
ntriples = File.read(t.informationResourceResults.sub("sparql", "nt"))
|
109
109
|
parser = NTriplesParser.new(ntriples)
|
110
|
-
rdfa_parser.graph.should be_equivalent_graph(parser.graph, t
|
110
|
+
rdfa_parser.graph.should be_equivalent_graph(parser.graph, t)
|
111
111
|
else
|
112
|
-
rdfa_parser.graph.should pass_query(query_string, t
|
112
|
+
rdfa_parser.graph.should pass_query(query_string, t)
|
113
113
|
end
|
114
114
|
|
115
115
|
rdfa_parser.graph.to_rdfxml.should be_valid_xml
|
@@ -0,0 +1 @@
|
|
1
|
+
<http://example.com/9999.xhtml> <http://example.com/ex#script> <http://example.com/javascripts/jrails.js> .
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
3
|
+
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.com/ex#">
|
5
|
+
<head about="http://example.com/9998.xhtml">
|
6
|
+
<script src="/javascripts/jrails.js" rev="ex:script" resource="http://example.com/9998.xhtml" type="text/javascript"></script>
|
7
|
+
</head>
|
8
|
+
</html>
|
@@ -1,3 +0,0 @@
|
|
1
|
-
<http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js> <http://cmx.org/spec/cmxterms#script> "" .
|
2
|
-
<http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/9999.xhtml> <http://cmx.org/spec/cmxterms#script> "foo"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .
|
3
|
-
<http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/9999.xhtml> <http://www.w3.org/1999/xhtml/vocab#stylesheet> <http://www.w3.org/stylesheets/cmx.css?1249860775> .
|
@@ -1,14 +1,8 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
3
3
|
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
4
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
5
|
-
<head>
|
6
|
-
<
|
7
|
-
<link href="/stylesheets/cmx.css?1249860775" media="screen" rel="stylesheet" type="text/css">
|
8
|
-
<link rel="profile" href="http://purl.org/uF/hCard/1.0/">
|
9
|
-
<script xmlns:cmxterms="http://cmx.org/spec/cmxterms#" property="cmxterms:script" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
|
10
|
-
<script xmlns:cmxterms="http://cmx.org/spec/cmxterms#" property="cmxterms:script" type="text/javascript">foo</script>
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://example.com/ex#">
|
5
|
+
<head about="http://example.com/9999.xhtml">
|
6
|
+
<script src="/javascripts/jrails.js" rev="ex:script" resource="[]" type="text/javascript"></script>
|
11
7
|
</head>
|
12
|
-
<body>
|
13
|
-
</body>
|
14
8
|
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdfa_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-25 00:00:00 -07:00
|
13
13
|
default_executable: rdfa_parser
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- Rakefile
|
79
79
|
- VERSION
|
80
80
|
- bin/rdfa_parser
|
81
|
+
- earl-xhtml1-approved.txt
|
81
82
|
- lib/rdfa_parser.rb
|
82
83
|
- lib/rdfa_parser/bnode.rb
|
83
84
|
- lib/rdfa_parser/exceptions.rb
|
@@ -92,6 +93,8 @@ files:
|
|
92
93
|
- script/generate
|
93
94
|
- spec/bnode_spec.rb
|
94
95
|
- spec/graph_spec.rb
|
96
|
+
- spec/html4-testcases/0011.html
|
97
|
+
- spec/html5-testcases/0011.html
|
95
98
|
- spec/literal_spec.rb
|
96
99
|
- spec/matchers.rb
|
97
100
|
- spec/namespace_spec.rb
|
@@ -440,6 +443,8 @@ files:
|
|
440
443
|
- spec/xhtml1-testcases/1001.nt
|
441
444
|
- spec/xhtml1-testcases/1001.sparql
|
442
445
|
- spec/xhtml1-testcases/1001.xhtml
|
446
|
+
- spec/xhtml1-testcases/9998.nt
|
447
|
+
- spec/xhtml1-testcases/9998.xhtml
|
443
448
|
- spec/xhtml1-testcases/9999.nt
|
444
449
|
- spec/xhtml1-testcases/9999.xhtml
|
445
450
|
- spec/xhtml1-testcases/rdfa-xhtml1-test-manifest.rdf
|