rdf-rdfxml 0.2.3 → 0.3.0
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/.yardopts +2 -0
- data/{History.txt → History.rdoc} +21 -0
- data/README.rdoc +11 -12
- data/Rakefile +11 -19
- data/VERSION +1 -1
- data/lib/rdf/rdfxml.rb +3 -2
- data/lib/rdf/rdfxml/patches/literal_hacks.rb +15 -17
- data/lib/rdf/rdfxml/reader.rb +115 -79
- data/lib/rdf/rdfxml/version.rb +4 -7
- data/lib/rdf/rdfxml/writer.rb +239 -190
- data/rdf-rdfxml.gemspec +14 -20
- data/script/parse +16 -10
- data/script/tc +10 -9
- data/spec/graph_spec.rb +0 -16
- data/spec/literal_spec.rb +2 -3
- data/spec/rdf_helper.rb +6 -6
- data/spec/reader_spec.rb +17 -17
- data/spec/spec_helper.rb +11 -4
- data/spec/writer_spec.rb +384 -331
- metadata +22 -18
- data/lib/rdf/rdfxml/patches/qname_hacks.rb +0 -57
- data/lib/rdf/rdfxml/patches/seq.rb +0 -34
- data/lib/rdf/rdfxml/patches/uri_hacks.rb +0 -24
- data/spec/uri_spec.rb +0 -115
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-rdfxml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
- 2
|
8
8
|
- 3
|
9
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Gregg Kellogg
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-12-27 00:00:00 -08:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,11 +26,12 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 19
|
28
30
|
segments:
|
29
31
|
- 0
|
30
|
-
-
|
31
|
-
-
|
32
|
-
version: 0.
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
version: 0.3.0
|
33
35
|
type: :runtime
|
34
36
|
version_requirements: *id001
|
35
37
|
- !ruby/object:Gem::Dependency
|
@@ -40,6 +42,7 @@ dependencies:
|
|
40
42
|
requirements:
|
41
43
|
- - ">="
|
42
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 29
|
43
46
|
segments:
|
44
47
|
- 1
|
45
48
|
- 3
|
@@ -55,9 +58,12 @@ dependencies:
|
|
55
58
|
requirements:
|
56
59
|
- - ">="
|
57
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 11
|
58
62
|
segments:
|
63
|
+
- 2
|
64
|
+
- 1
|
59
65
|
- 0
|
60
|
-
version:
|
66
|
+
version: 2.1.0
|
61
67
|
type: :development
|
62
68
|
version_requirements: *id003
|
63
69
|
- !ruby/object:Gem::Dependency
|
@@ -68,11 +74,10 @@ dependencies:
|
|
68
74
|
requirements:
|
69
75
|
- - ">="
|
70
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
71
78
|
segments:
|
72
79
|
- 0
|
73
|
-
|
74
|
-
- 2
|
75
|
-
version: 0.2.2
|
80
|
+
version: "0"
|
76
81
|
type: :development
|
77
82
|
version_requirements: *id004
|
78
83
|
- !ruby/object:Gem::Dependency
|
@@ -83,6 +88,7 @@ dependencies:
|
|
83
88
|
requirements:
|
84
89
|
- - ">="
|
85
90
|
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
86
92
|
segments:
|
87
93
|
- 0
|
88
94
|
version: "0"
|
@@ -96,12 +102,13 @@ dependencies:
|
|
96
102
|
requirements:
|
97
103
|
- - ">="
|
98
104
|
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
99
106
|
segments:
|
100
107
|
- 0
|
101
108
|
version: "0"
|
102
109
|
type: :development
|
103
110
|
version_requirements: *id006
|
104
|
-
description:
|
111
|
+
description: RDF::RDFXML is an RDF/XML reader and writer for Ruby using the RDF.rb library suite.
|
105
112
|
email: gregg@kellogg-assoc.com
|
106
113
|
executables: []
|
107
114
|
|
@@ -110,14 +117,14 @@ extensions: []
|
|
110
117
|
extra_rdoc_files:
|
111
118
|
- AUTHORS
|
112
119
|
- CONTRIBUTORS
|
113
|
-
- History.
|
120
|
+
- History.rdoc
|
114
121
|
- README.rdoc
|
115
122
|
files:
|
116
123
|
- .gitignore
|
117
124
|
- .yardopts
|
118
125
|
- AUTHORS
|
119
126
|
- CONTRIBUTORS
|
120
|
-
- History.
|
127
|
+
- History.rdoc
|
121
128
|
- README.rdoc
|
122
129
|
- Rakefile
|
123
130
|
- VERSION
|
@@ -130,9 +137,6 @@ files:
|
|
130
137
|
- lib/rdf/rdfxml/patches/graph_properties.rb
|
131
138
|
- lib/rdf/rdfxml/patches/literal_hacks.rb
|
132
139
|
- lib/rdf/rdfxml/patches/nokogiri_hacks.rb
|
133
|
-
- lib/rdf/rdfxml/patches/qname_hacks.rb
|
134
|
-
- lib/rdf/rdfxml/patches/seq.rb
|
135
|
-
- lib/rdf/rdfxml/patches/uri_hacks.rb
|
136
140
|
- lib/rdf/rdfxml/reader.rb
|
137
141
|
- lib/rdf/rdfxml/version.rb
|
138
142
|
- lib/rdf/rdfxml/vocab.rb
|
@@ -508,7 +512,6 @@ files:
|
|
508
512
|
- spec/reader_spec.rb
|
509
513
|
- spec/spec.opts
|
510
514
|
- spec/spec_helper.rb
|
511
|
-
- spec/uri_spec.rb
|
512
515
|
- spec/writer_spec.rb
|
513
516
|
has_rdoc: true
|
514
517
|
homepage: http://github.com/gkellogg/rdf-rdfxml
|
@@ -524,6 +527,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
524
527
|
requirements:
|
525
528
|
- - ">="
|
526
529
|
- !ruby/object:Gem::Version
|
530
|
+
hash: 3
|
527
531
|
segments:
|
528
532
|
- 0
|
529
533
|
version: "0"
|
@@ -532,6 +536,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
532
536
|
requirements:
|
533
537
|
- - ">="
|
534
538
|
- !ruby/object:Gem::Version
|
539
|
+
hash: 3
|
535
540
|
segments:
|
536
541
|
- 0
|
537
542
|
version: "0"
|
@@ -550,5 +555,4 @@ test_files:
|
|
550
555
|
- spec/rdf_helper.rb
|
551
556
|
- spec/reader_spec.rb
|
552
557
|
- spec/spec_helper.rb
|
553
|
-
- spec/uri_spec.rb
|
554
558
|
- spec/writer_spec.rb
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module RDF
|
2
|
-
class URI
|
3
|
-
#unless defined?(:vocab)
|
4
|
-
def vocab
|
5
|
-
# Find vocabulary if not assigned
|
6
|
-
return @vocab if @vocab
|
7
|
-
|
8
|
-
Vocabulary.each do |vocab|
|
9
|
-
return self.vocab = vocab if to_s.index(vocab.to_uri.to_s) == 0
|
10
|
-
end
|
11
|
-
nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def vocab=(value)
|
15
|
-
raise "Vocab #{value.inspect} is not a Vocabulary!" if value.is_a?(Array)
|
16
|
-
@vocab = value
|
17
|
-
end
|
18
|
-
|
19
|
-
def qname
|
20
|
-
@qname ||= if vocab
|
21
|
-
raise "Vocab #{vocab.inspect} is not a Vocabulary!" if vocab.is_a?(Array)
|
22
|
-
vocab_name = vocab.__name__.to_s.split('::').last.downcase
|
23
|
-
local_name = to_s[vocab.to_uri.to_s.size..-1]
|
24
|
-
vocab_name && local_name && [vocab_name.to_sym, local_name.empty? ? nil : local_name.to_sym]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
#end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Vocabulary
|
31
|
-
def self.[](property)
|
32
|
-
@prop_uri ||= {}
|
33
|
-
@prop_uri[property] ||= begin
|
34
|
-
uri = RDF::URI.intern([to_s, property.to_s].join(''))
|
35
|
-
uri.vocab = self
|
36
|
-
uri
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def [](property)
|
41
|
-
@prop_uri ||= {}
|
42
|
-
@prop_uri[property] ||= begin
|
43
|
-
uri = RDF::URI.intern([to_s, property.to_s].join(''))
|
44
|
-
uri.vocab = self
|
45
|
-
uri
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def to_uri
|
50
|
-
@uri ||= begin
|
51
|
-
uri = RDF::URI.intern(to_s)
|
52
|
-
uri.vocab = self
|
53
|
-
uri
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'rdf/rdfxml/patches/graph_properties'
|
2
|
-
module RDF
|
3
|
-
class Graph
|
4
|
-
# Returns ordered rdf:_n objects or rdf:first, rdf:rest for a given subject
|
5
|
-
def seq(subject)
|
6
|
-
props = properties(subject)
|
7
|
-
rdf_type = (props[RDF.type.to_s] || []).map {|t| t.to_s}
|
8
|
-
|
9
|
-
#puts "seq; #{rdf_type} #{rdf_type - [RDF.Seq, RDF.Bag, RDF.Alt]}"
|
10
|
-
if !(rdf_type - [RDF.Seq, RDF.Bag, RDF.Alt]).empty?
|
11
|
-
props.keys.select {|k| k.match(/#{RDF._}(\d)$/)}.
|
12
|
-
sort_by {|i| i.sub(RDF._.to_s, "").to_i}.
|
13
|
-
map {|key| props[key]}.
|
14
|
-
flatten
|
15
|
-
elsif !self.query(:subject => subject, :predicate => RDF.first).empty?
|
16
|
-
# N3-style first/rest chain
|
17
|
-
list = []
|
18
|
-
while subject != RDF.nil
|
19
|
-
props = properties(subject)
|
20
|
-
f = props[RDF.first.to_s]
|
21
|
-
if f.to_s.empty? || f.first == RDF.nil
|
22
|
-
subject = RDF.nil
|
23
|
-
else
|
24
|
-
list += f
|
25
|
-
subject = props[RDF.rest.to_s].first
|
26
|
-
end
|
27
|
-
end
|
28
|
-
list
|
29
|
-
else
|
30
|
-
[]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module RDF
|
2
|
-
class URI
|
3
|
-
##
|
4
|
-
# Joins several URIs together.
|
5
|
-
#
|
6
|
-
# @param [Array<String, URI, #to_str>] uris
|
7
|
-
# @return [URI]
|
8
|
-
#
|
9
|
-
# GK -- don't add a "/" at the end of URIs, due to rdfcore/xmlbase/test002.rdf
|
10
|
-
def join(*uris)
|
11
|
-
result = @uri
|
12
|
-
uris.each do |uri|
|
13
|
-
result = result.join(uri)
|
14
|
-
end
|
15
|
-
self.class.new(result)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class NTriples::Writer
|
20
|
-
def format_uri(uri, options = {})
|
21
|
-
"<%s>" % escaped(uri_for(uri))
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/spec/uri_spec.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
$:.unshift "."
|
3
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
4
|
-
|
5
|
-
describe RDF::URI do
|
6
|
-
class EXa < RDF::Vocabulary("http://example.org/foo/"); end
|
7
|
-
class EXb < RDF::Vocabulary("http://example.org/foo#"); end
|
8
|
-
class EXc < RDF::Vocabulary("http://example.org/foo"); end
|
9
|
-
|
10
|
-
subject { RDF::URI.new("http://example.org")}
|
11
|
-
|
12
|
-
context "join" do
|
13
|
-
it "should append fragment to uri" do
|
14
|
-
subject.join("foo").to_s.should == "http://example.org/foo"
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should append another fragment" do
|
18
|
-
subject.join("foo#bar").to_s.should == "http://example.org/foo#bar"
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should append another URI" do
|
22
|
-
subject.join(RDF::URI.new("foo#bar")).to_s.should == "http://example.org/foo#bar"
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "utf-8 escaped" do
|
26
|
-
{
|
27
|
-
%(http://a/D%C3%BCrst) => %(<http://a/D%C3%BCrst>),
|
28
|
-
%(http://a/D\u00FCrst) => %(<http://a/D\\u00FCrst>),
|
29
|
-
%(http://b/Dürst) => %(<http://b/D\\u00FCrst>),
|
30
|
-
%(http://a/\u{15678}another) => %(<http://a/\\U00015678another>),
|
31
|
-
}.each_pair do |uri, dump|
|
32
|
-
it "should dump #{uri} as #{dump}" do
|
33
|
-
RDF::URI.new(uri).to_ntriples.should == dump
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end if defined?(::Encoding) # Only works properly in Ruby 1.9
|
37
|
-
|
38
|
-
describe "join" do
|
39
|
-
{
|
40
|
-
%w(http://foo ) => "<http://foo>",
|
41
|
-
%w(http://foo a) => "<http://foo/a>",
|
42
|
-
%w(http://foo /a) => "<http://foo/a>",
|
43
|
-
%w(http://foo #a) => "<http://foo#a>",
|
44
|
-
|
45
|
-
%w(http://foo/ ) => "<http://foo/>",
|
46
|
-
%w(http://foo/ a) => "<http://foo/a>",
|
47
|
-
%w(http://foo/ /a) => "<http://foo/a>",
|
48
|
-
%w(http://foo/ #a) => "<http://foo/#a>",
|
49
|
-
|
50
|
-
%w(http://foo# ) => "<http://foo#>",
|
51
|
-
%w(http://foo# a) => "<http://foo/a>",
|
52
|
-
%w(http://foo# /a) => "<http://foo/a>",
|
53
|
-
%w(http://foo# #a) => "<http://foo#a>",
|
54
|
-
|
55
|
-
%w(http://foo/bar ) => "<http://foo/bar>",
|
56
|
-
%w(http://foo/bar a) => "<http://foo/a>",
|
57
|
-
%w(http://foo/bar /a) => "<http://foo/a>",
|
58
|
-
%w(http://foo/bar #a) => "<http://foo/bar#a>",
|
59
|
-
|
60
|
-
%w(http://foo/bar/ ) => "<http://foo/bar/>",
|
61
|
-
%w(http://foo/bar/ a) => "<http://foo/bar/a>",
|
62
|
-
%w(http://foo/bar/ /a) => "<http://foo/a>",
|
63
|
-
%w(http://foo/bar/ #a) => "<http://foo/bar/#a>",
|
64
|
-
|
65
|
-
%w(http://foo/bar# ) => "<http://foo/bar#>",
|
66
|
-
%w(http://foo/bar# a) => "<http://foo/a>",
|
67
|
-
%w(http://foo/bar# /a) => "<http://foo/a>",
|
68
|
-
%w(http://foo/bar# #a) => "<http://foo/bar#a>",
|
69
|
-
|
70
|
-
%w(http://foo/bar# #D%C3%BCrst) => "<http://foo/bar#D%C3%BCrst>",
|
71
|
-
%w(http://foo/bar# #Dürst) => "<http://foo/bar#D\\u00FCrst>",
|
72
|
-
}.each_pair do |input, result|
|
73
|
-
it "should create <#{result}> from <#{input[0]}> and '#{input[1]}'" do
|
74
|
-
RDF::URI.new(input[0]).join(input[1].to_s).to_ntriples.should == result
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context "qname" do
|
81
|
-
it "should create [:rdf, :foo]" do
|
82
|
-
RDF.foo.qname.should == [:rdf, :foo]
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should create [:rdfs, nil]" do
|
86
|
-
RDF::RDFS.to_uri.qname.should == [:rdfs, nil]
|
87
|
-
end
|
88
|
-
|
89
|
-
it "should find with trailing /" do
|
90
|
-
EXa.bar.qname.should == [:exa, :bar]
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should find with trailing #" do
|
94
|
-
EXb.bar.qname.should == [:exb, :bar]
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should find with trailing word" do
|
98
|
-
EXc.bar.qname.should == [:exc, :bar]
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context "Invalid Formats" do
|
103
|
-
it "should detect invalid URI formats" do
|
104
|
-
lambda {Addressable::URI.parse("_:test")}.should raise_error(Addressable::URI::InvalidURIError)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context "vocab" do
|
109
|
-
RDF::Vocabulary.each do |v|
|
110
|
-
specify {v.foo.vocab.should == v}
|
111
|
-
specify {v.foo.vocab.to_uri.to_s.should == v.to_uri.to_s}
|
112
|
-
specify {v.to_s.should == v.to_uri.to_s} unless v == RDF
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|