redlander 0.3.6 → 0.4.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/.gitignore +20 -0
- data/ChangeLog +19 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +30 -0
- data/LICENSE +7 -0
- data/README.rdoc +85 -12
- data/Rakefile +5 -4
- data/lib/redland.rb +6 -2
- data/lib/redlander.rb +5 -3
- data/lib/redlander/model.rb +98 -16
- data/lib/redlander/model_proxy.rb +115 -58
- data/lib/redlander/node.rb +62 -59
- data/lib/redlander/parsing.rb +123 -0
- data/lib/redlander/serializing.rb +89 -0
- data/lib/redlander/statement.rb +61 -60
- data/lib/redlander/uri.rb +20 -13
- data/lib/redlander/version.rb +2 -1
- data/redlander.gemspec +28 -0
- data/spec/fixtures/doap.nt +62 -0
- data/spec/fixtures/doap.rdf +189 -0
- data/spec/fixtures/doap.ttl +53 -0
- data/spec/lib/redlander/model_spec.rb +304 -0
- data/spec/{redlander → lib/redlander}/node_spec.rb +26 -12
- data/spec/lib/redlander/statement_spec.rb +56 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +15 -4
- metadata +49 -37
- data/lib/redlander/error_container.rb +0 -42
- data/lib/redlander/parser.rb +0 -92
- data/lib/redlander/parser_proxy.rb +0 -22
- data/lib/redlander/serializer.rb +0 -85
- data/lib/redlander/storage.rb +0 -56
- data/lib/redlander/stream.rb +0 -57
- data/lib/redlander/stream_enumerator.rb +0 -17
- data/spec/redlander/model_spec.rb +0 -255
- data/spec/redlander/parser_spec.rb +0 -96
- data/spec/redlander/serializer_spec.rb +0 -52
- data/spec/redlander/statement_spec.rb +0 -77
@@ -1,96 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Parser do
|
4
|
-
|
5
|
-
it "should be created with default values" do
|
6
|
-
lambda {
|
7
|
-
Parser.new
|
8
|
-
}.should_not raise_exception
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "string source" do
|
12
|
-
|
13
|
-
it "should be parsed into the model" do
|
14
|
-
parser = Parser.new
|
15
|
-
model = Model.new
|
16
|
-
lambda {
|
17
|
-
parser.from_string(model, content[:rdfxml], :base_uri => base_uri[:rdfxml])
|
18
|
-
}.should change(model.statements, :size).by(1)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "file source" do
|
24
|
-
|
25
|
-
before :each do
|
26
|
-
reference_model = Model.new
|
27
|
-
reference_model.from_rdfxml(content[:rdfxml], :base_uri => base_uri[:rdfxml])
|
28
|
-
reference_model.to_file(filename)
|
29
|
-
end
|
30
|
-
|
31
|
-
after :each do
|
32
|
-
cleanup
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should be parsed into the model" do
|
36
|
-
parser = Parser.new
|
37
|
-
model = Model.new
|
38
|
-
lambda {
|
39
|
-
parser.from_file(model, filename, :base_uri => base_uri[:rdfxml])
|
40
|
-
}.should change(model.statements, :size).by(1)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
describe "statements" do
|
47
|
-
|
48
|
-
it do
|
49
|
-
Parser.new(:ntriples).statements(content[:ntriples]).should be_an_instance_of(ParserProxy)
|
50
|
-
end
|
51
|
-
|
52
|
-
[:rdfxml, :turtle, :ntriples].each do |format|
|
53
|
-
it "should parse #{format} content" do
|
54
|
-
parser = Parser.new(format)
|
55
|
-
statements = []
|
56
|
-
lambda {
|
57
|
-
parser.statements(content[format], :base_uri => base_uri[format]).each do |st|
|
58
|
-
statements << st
|
59
|
-
end
|
60
|
-
}.should change(statements, :size).by(1)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def cleanup
|
70
|
-
File.delete(filename) if File.exists?(filename)
|
71
|
-
end
|
72
|
-
|
73
|
-
def filename
|
74
|
-
"test_model.rdf"
|
75
|
-
end
|
76
|
-
|
77
|
-
def content
|
78
|
-
{
|
79
|
-
:ntriples => '<http://example.org/ns/a2> <http://example.org/ns/b2> <http://example.org/ns/c2> .',
|
80
|
-
:turtle => '# this is a complete turtle document
|
81
|
-
@prefix foo: <http://example.org/ns#> .
|
82
|
-
@prefix : <http://other.example.org/ns#> .
|
83
|
-
foo:bar foo: : .',
|
84
|
-
:rdfxml => '<?xml version="1.0" encoding="utf-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="http://example.com/concepts#two-dimensional_seismic_imaging"><ns0:label xmlns:ns0="http://www.w3.org/2000/01/rdf-schema#" xml:lang="en">2-D seismic imaging</ns0:label></rdf:Description></rdf:RDF>'
|
85
|
-
}
|
86
|
-
end
|
87
|
-
|
88
|
-
def base_uri
|
89
|
-
{
|
90
|
-
:ntriples => nil,
|
91
|
-
:turtle => 'http://example.com/concepts',
|
92
|
-
:rdfxml => 'http://example.com/concepts'
|
93
|
-
}
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Serializer do
|
4
|
-
|
5
|
-
it "should be created with default values" do
|
6
|
-
lambda {
|
7
|
-
Serializer.new
|
8
|
-
}.should_not raise_exception
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "model" do
|
12
|
-
|
13
|
-
before :each do
|
14
|
-
@model = Model.new
|
15
|
-
s = URI.parse("http://example.com/concepts#two-dimensional_seismic_imaging")
|
16
|
-
p = URI.parse("http://www.w3.org/2000/01/rdf-schema#label")
|
17
|
-
o = "2-D seismic imaging@en"
|
18
|
-
@model.statements.create(:subject => s, :predicate => p, :object => o)
|
19
|
-
end
|
20
|
-
|
21
|
-
[:rdfxml, :ntriples, :turtle, :dot, :json].each do |format|
|
22
|
-
it "should be serialized into a #{format} string" do
|
23
|
-
serializer = Serializer.new(format)
|
24
|
-
output = serializer.to_string(@model)
|
25
|
-
output.should be_an_instance_of(String)
|
26
|
-
output.should_not be_empty
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should be serialized into a file" do
|
31
|
-
cleanup
|
32
|
-
serializer = Serializer.new(:ntriples)
|
33
|
-
serializer.to_file(@model, filename)
|
34
|
-
File.should be_exists(filename)
|
35
|
-
File.size(filename).should_not be_zero
|
36
|
-
cleanup
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def cleanup
|
43
|
-
File.delete(filename) if File.exists?(filename)
|
44
|
-
end
|
45
|
-
|
46
|
-
def filename
|
47
|
-
"test_model.nt"
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Statement do
|
4
|
-
|
5
|
-
it "should be created with default values" do
|
6
|
-
statement = nil
|
7
|
-
lambda { statement = Statement.new }.should_not raise_exception
|
8
|
-
statement.subject.should be_nil
|
9
|
-
statement.predicate.should be_nil
|
10
|
-
statement.object.should be_nil
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should be created with the given values" do
|
14
|
-
statement = create_statement
|
15
|
-
statement.subject.should be_an_instance_of(Node)
|
16
|
-
statement.predicate.should be_an_instance_of(Node)
|
17
|
-
statement.object.should be_an_instance_of(Node)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should have proper attributes" do
|
21
|
-
statement = create_statement
|
22
|
-
statement.subject.value.to_s.should eql('http://example.com/concepts#subject')
|
23
|
-
statement.predicate.value.to_s.should eql('http://example.com/concepts#label')
|
24
|
-
statement.object.value.should eql('subject!')
|
25
|
-
end
|
26
|
-
|
27
|
-
it do
|
28
|
-
statement = Statement.new
|
29
|
-
lambda {
|
30
|
-
statement.should_not be_valid
|
31
|
-
}.should change(statement.errors, :size).by(1)
|
32
|
-
end
|
33
|
-
|
34
|
-
it do
|
35
|
-
create_statement.should be_valid
|
36
|
-
end
|
37
|
-
|
38
|
-
[:subject, :predicate, :object].each do |attribute|
|
39
|
-
it "should be assigned a #{attribute}" do
|
40
|
-
statement = Statement.new
|
41
|
-
attr = Node.new(statement_attributes[attribute])
|
42
|
-
lambda {
|
43
|
-
statement.send("#{attribute}=", attr)
|
44
|
-
}.should change(statement, attribute).from(nil).to(attr)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should not be assigned the same attribute twice" do
|
49
|
-
statement = Statement.new
|
50
|
-
object = "object!"
|
51
|
-
lambda {
|
52
|
-
2.times do
|
53
|
-
statement.object = object
|
54
|
-
end
|
55
|
-
}.should raise_exception
|
56
|
-
object.should be_frozen
|
57
|
-
end
|
58
|
-
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def create_statement
|
63
|
-
Statement.new(statement_attributes)
|
64
|
-
end
|
65
|
-
|
66
|
-
def statement_attributes
|
67
|
-
s = URI.parse('http://example.com/concepts#subject')
|
68
|
-
p = URI.parse('http://example.com/concepts#label')
|
69
|
-
o = "subject!"
|
70
|
-
{
|
71
|
-
:subject => s,
|
72
|
-
:predicate => p,
|
73
|
-
:object => o
|
74
|
-
}
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|