pjstadig-rubyrdf 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/Manifest.txt +12 -2
- data/TODO.txt +1 -1
- data/config/hoe.rb +73 -0
- data/config/requirements.rb +15 -0
- data/lib/rdf/sesame.rb +187 -0
- data/lib/rdf/sparql_result.rb +2 -0
- data/lib/rdf/version.rb +1 -1
- data/lib/rubyrdf.rb +1 -1
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/gemspec.rake +4 -0
- data/test/rdf/sesame_test.rb +155 -0
- metadata +39 -12
- data/lib/rdf/sesame/base.rb +0 -109
- data/test/rdf/sesame/base_test.rb +0 -76
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/tasks/gemspec.rake
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class RDF::SesameTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@graph = RDF::Sesame.new('http://localhost:8180/openrdf-sesame', 'test')
|
6
|
+
@graph.delete_all
|
7
|
+
RDF::unregister_all!
|
8
|
+
RDF::register(:ex => 'http://example.org/')
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_should_initialize_address_port_path_and_repository
|
12
|
+
assert_equal 'localhost', @graph.address
|
13
|
+
assert_equal 8180, @graph.port
|
14
|
+
assert_equal '/openrdf-sesame', @graph.path
|
15
|
+
assert_equal 'test', @graph.repository
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_should_be_empty
|
19
|
+
assert @graph.empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_should_add_statement
|
23
|
+
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
24
|
+
assert_equal 1, @graph.size
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_import_data
|
28
|
+
@graph.import(<<-ENDL, :ntriples)
|
29
|
+
#{[RDF[:ex]::a, RDF[:ex]::b, RDF[:ex]::c].to_statement.to_ntriples}
|
30
|
+
#{[RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e].to_statement.to_ntriples}
|
31
|
+
ENDL
|
32
|
+
assert_equal 2, @graph.size
|
33
|
+
assert @graph.include?([RDF[:ex]::a, RDF[:ex]::b, RDF[:ex]::c])
|
34
|
+
assert @graph.include?([RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e])
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_delete_statement
|
38
|
+
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
39
|
+
@graph.delete(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
40
|
+
assert @graph.empty?
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_execute_select_query
|
44
|
+
assert @graph.select("SELECT ?x WHERE {?x #{RDF[:ex]::nothing} _:bn2 . }").empty?
|
45
|
+
|
46
|
+
@graph.add(RDF[:ex]::a, RDF[:ex]::b, RDF::PlainLiteralNode.new('test'))
|
47
|
+
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::PlainLiteralNode.new('test', 'en'))
|
48
|
+
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::TypedLiteralNode.new('test', RDF[:ex]::a.uri))
|
49
|
+
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e)
|
50
|
+
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::BlankNode.new)
|
51
|
+
result = @graph.select("SELECT ?y WHERE {?x #{RDF[:ex]::b} ?y . }")
|
52
|
+
assert_equal 5, result.size
|
53
|
+
assert result.any?{|r| r['y'] == RDF::PlainLiteralNode.new('test')}
|
54
|
+
assert result.any?{|r| r['y'] == RDF::PlainLiteralNode.new('test', 'en')}
|
55
|
+
assert result.any?{|r| r['y'] == RDF::TypedLiteralNode.new('test', RDF[:ex]::a.uri)}
|
56
|
+
assert result.any?{|r| r['y'] == RDF[:ex]::e}
|
57
|
+
assert result.any?{|r| r['y'].blank_node?}
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_should_execute_ask_query
|
61
|
+
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
62
|
+
assert @graph.ask("ask { #{[RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj].to_statement.to_ntriples} }")
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_should_include_statement
|
66
|
+
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
67
|
+
assert @graph.include?(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_should_clear_graph
|
71
|
+
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
72
|
+
@graph.delete_all
|
73
|
+
|
74
|
+
assert @graph.empty?
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_should_commit_transaction
|
78
|
+
stmt1 = RDF::Statement.new(RDF[:ex]::sub, RDF[:ex]::pred1, RDF::PlainLiteralNode.new('plainLiteral', 'en'))
|
79
|
+
stmt2 = RDF::Statement.new(RDF::BlankNode.new("test2"), RDF[:ex]::pred2, RDF::TypedLiteralNode.new('plainLiteral', RDF[:ex]::datatype))
|
80
|
+
@graph.add(stmt1)
|
81
|
+
@graph.transaction do |t|
|
82
|
+
t.add(stmt2)
|
83
|
+
t.delete(stmt1)
|
84
|
+
end
|
85
|
+
|
86
|
+
assert @graph.include?(stmt2)
|
87
|
+
assert !@graph.include?(stmt1)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_should_commit_in_middle_of_transaction
|
91
|
+
stmt1 = RDF::Statement.new(RDF[:ex]::sub, RDF[:ex]::pred1, RDF::PlainLiteralNode.new('plainLiteral', 'en'))
|
92
|
+
stmt2 = RDF::Statement.new(RDF::BlankNode.new("test2"), RDF[:ex]::pred2, RDF::TypedLiteralNode.new('plainLiteral', RDF[:ex]::datatype))
|
93
|
+
@graph.add(stmt1)
|
94
|
+
@graph.transaction do |t|
|
95
|
+
t.add(stmt2)
|
96
|
+
t.commit
|
97
|
+
t.delete(stmt1)
|
98
|
+
t.rollback
|
99
|
+
end
|
100
|
+
|
101
|
+
assert @graph.include?(stmt1)
|
102
|
+
assert @graph.include?(stmt2)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_should_accept_empty_transaction
|
106
|
+
@graph.transaction do |t|
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_should_rollback_transaction
|
111
|
+
stmt1 = RDF::Statement.new(RDF[:ex]::sub, RDF[:ex]::pred1, RDF::PlainLiteralNode.new('plainLiteral', 'en'))
|
112
|
+
stmt2 = RDF::Statement.new(RDF::BlankNode.new("test2"), RDF[:ex]::pred2, RDF::TypedLiteralNode.new('plainLiteral', RDF[:ex]::datatype))
|
113
|
+
@graph.add(stmt1)
|
114
|
+
@graph.transaction do |t|
|
115
|
+
t.add(stmt2)
|
116
|
+
t.delete(stmt1)
|
117
|
+
t.rollback
|
118
|
+
end
|
119
|
+
|
120
|
+
assert @graph.include?(stmt1)
|
121
|
+
assert !@graph.include?(stmt2)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_should_rollback_transaction_on_exception
|
125
|
+
stmt1 = RDF::Statement.new(RDF[:ex]::sub, RDF[:ex]::pred1, RDF::PlainLiteralNode.new('plainLiteral', 'en'))
|
126
|
+
stmt2 = RDF::Statement.new(RDF::BlankNode.new("test2"), RDF[:ex]::pred2, RDF::TypedLiteralNode.new('plainLiteral', RDF[:ex]::datatype))
|
127
|
+
@graph.add(stmt1)
|
128
|
+
begin
|
129
|
+
@graph.transaction do |t|
|
130
|
+
t.add(stmt2)
|
131
|
+
t.delete(stmt1)
|
132
|
+
throw "test"
|
133
|
+
end
|
134
|
+
fail "Should rethrow exception"
|
135
|
+
rescue
|
136
|
+
end
|
137
|
+
|
138
|
+
assert @graph.include?(stmt1)
|
139
|
+
assert !@graph.include?(stmt2)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_should_rollback_in_middle_of_transaction
|
143
|
+
stmt1 = RDF::Statement.new(RDF[:ex]::sub, RDF[:ex]::pred1, RDF::PlainLiteralNode.new('plainLiteral', 'en'))
|
144
|
+
stmt2 = RDF::Statement.new(RDF::BlankNode.new("test2"), RDF[:ex]::pred2, RDF::TypedLiteralNode.new('plainLiteral', RDF[:ex]::datatype))
|
145
|
+
@graph.add(stmt1)
|
146
|
+
@graph.transaction do |t|
|
147
|
+
t.add(stmt2)
|
148
|
+
t.rollback
|
149
|
+
t.delete(stmt1)
|
150
|
+
end
|
151
|
+
|
152
|
+
assert !@graph.include?(stmt1)
|
153
|
+
assert !@graph.include?(stmt2)
|
154
|
+
end
|
155
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pjstadig-rubyrdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Stadig
|
@@ -9,10 +9,27 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-21 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.3.1
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: hoe
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.8.0
|
32
|
+
version:
|
16
33
|
description: A Resource Description Framework (RDF) library for Ruby.
|
17
34
|
email:
|
18
35
|
- paul@stadig.name
|
@@ -35,21 +52,31 @@ files:
|
|
35
52
|
- README.txt
|
36
53
|
- Rakefile
|
37
54
|
- TODO.txt
|
55
|
+
- config/hoe.rb
|
56
|
+
- config/requirements.rb
|
38
57
|
- lib/rdf.rb
|
39
58
|
- lib/rdf/blank_node.rb
|
40
59
|
- lib/rdf/error.rb
|
41
60
|
- lib/rdf/node.rb
|
42
61
|
- lib/rdf/plain_literal_node.rb
|
43
|
-
- lib/rdf/sesame
|
62
|
+
- lib/rdf/sesame.rb
|
44
63
|
- lib/rdf/sparql_result.rb
|
45
64
|
- lib/rdf/statement.rb
|
46
65
|
- lib/rdf/typed_literal_node.rb
|
47
66
|
- lib/rdf/uri_node.rb
|
48
67
|
- lib/rdf/version.rb
|
49
68
|
- lib/rubyrdf.rb
|
69
|
+
- script/console
|
70
|
+
- script/destroy
|
71
|
+
- script/generate
|
72
|
+
- script/txt2html
|
73
|
+
- setup.rb
|
74
|
+
- tasks/deployment.rake
|
75
|
+
- tasks/environment.rake
|
76
|
+
- tasks/gemspec.rake
|
50
77
|
- test/rdf/blank_node_test.rb
|
51
78
|
- test/rdf/plain_literal_node_test.rb
|
52
|
-
- test/rdf/
|
79
|
+
- test/rdf/sesame_test.rb
|
53
80
|
- test/rdf/sparql_result_test.rb
|
54
81
|
- test/rdf/statement_test.rb
|
55
82
|
- test/rdf/typed_literal_node_test.rb
|
@@ -91,11 +118,11 @@ signing_key:
|
|
91
118
|
specification_version: 2
|
92
119
|
summary: A Resource Description Framework (RDF) library for Ruby.
|
93
120
|
test_files:
|
94
|
-
- test/
|
95
|
-
- test/rdf/statement_test.rb
|
96
|
-
- test/rdf/plain_literal_node_test.rb
|
97
|
-
- test/rdf/sparql_result_test.rb
|
121
|
+
- test/rdf_test.rb
|
98
122
|
- test/rdf/typed_literal_node_test.rb
|
123
|
+
- test/rdf/plain_literal_node_test.rb
|
124
|
+
- test/rdf/statement_test.rb
|
125
|
+
- test/rdf/sesame_test.rb
|
99
126
|
- test/rdf/uri_node_test.rb
|
100
|
-
- test/rdf/
|
101
|
-
- test/
|
127
|
+
- test/rdf/blank_node_test.rb
|
128
|
+
- test/rdf/sparql_result_test.rb
|
data/lib/rdf/sesame/base.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require 'uri'
|
2
|
-
require 'net/http'
|
3
|
-
require 'rexml/document'
|
4
|
-
|
5
|
-
module RDF
|
6
|
-
module Sesame
|
7
|
-
class Base
|
8
|
-
attr_reader :address, :port, :path, :repository
|
9
|
-
|
10
|
-
def initialize(uri, repository)
|
11
|
-
uri = URI.parse(uri)
|
12
|
-
@address = uri.host
|
13
|
-
@port = uri.port
|
14
|
-
@path = uri.path
|
15
|
-
@repository = repository
|
16
|
-
end
|
17
|
-
|
18
|
-
def size
|
19
|
-
get_request(repo_path('size')).to_i
|
20
|
-
end
|
21
|
-
|
22
|
-
def empty?
|
23
|
-
size == 0
|
24
|
-
end
|
25
|
-
|
26
|
-
def add(*statement)
|
27
|
-
post_request(repo_path('statements'), statement.to_statement.to_ntriples, {}, 'Content-Type' => 'text/plain')
|
28
|
-
end
|
29
|
-
|
30
|
-
def import(data, format = :ntriples)
|
31
|
-
headers = case format
|
32
|
-
when :ntriples
|
33
|
-
{'Content-Type' => 'text/plain; charset=utf-8'}
|
34
|
-
when :rdfxml
|
35
|
-
{'Content-Type' => 'application/rdf+xml; charset=utf-8'}
|
36
|
-
end
|
37
|
-
|
38
|
-
result = post_request(repo_path("statements"), data, {}, headers)
|
39
|
-
result
|
40
|
-
end
|
41
|
-
|
42
|
-
def delete(*statement)
|
43
|
-
delete_request(repo_path('statements'), to_param_hash(statement.to_statement))
|
44
|
-
end
|
45
|
-
|
46
|
-
def delete_all
|
47
|
-
delete_request(repo_path("statements"))
|
48
|
-
end
|
49
|
-
|
50
|
-
def select(query)
|
51
|
-
SparqlResult.new(get_request(repo_path, {"query" => query}, "Accept" => "application/sparql-results+xml"))
|
52
|
-
end
|
53
|
-
|
54
|
-
def ask(query)
|
55
|
-
get_request(repo_path, {"query" => query}, "Accept" => "text/boolean") == "true"
|
56
|
-
end
|
57
|
-
|
58
|
-
def include?(*statement)
|
59
|
-
ask("ASK { #{statement.to_statement.to_ntriples} }")
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
def repo_path(path = nil)
|
64
|
-
parts = [@path, "repositories", @repository]
|
65
|
-
if path.to_s.strip != ""
|
66
|
-
parts << path
|
67
|
-
end
|
68
|
-
|
69
|
-
File.join(*parts)
|
70
|
-
end
|
71
|
-
|
72
|
-
def to_param_hash(statement)
|
73
|
-
{:subj => statement.subject.to_ntriples,
|
74
|
-
:pred => statement.predicate.to_ntriples,
|
75
|
-
:obj => statement.object.to_ntriples}
|
76
|
-
end
|
77
|
-
|
78
|
-
def get_request(path, params = {}, headers = {})
|
79
|
-
Net::HTTP.start(@address, @port) do |http|
|
80
|
-
http.get(
|
81
|
-
format_uri(path, params),
|
82
|
-
headers).body
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def post_request(path, data, params = {}, headers = {})
|
87
|
-
Net::HTTP.start(@address, @port) do |http|
|
88
|
-
http.open_timeout = 6000
|
89
|
-
http.read_timeout = 6000
|
90
|
-
http.post(format_uri(path, params), data, headers).body
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def delete_request(path, params = {}, headers = {})
|
95
|
-
Net::HTTP.start(@address, @port) do |http|
|
96
|
-
http.delete(format_uri(path, params), headers).body
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def format_uri(path, params = {})
|
101
|
-
if params.empty?
|
102
|
-
path
|
103
|
-
else
|
104
|
-
path + "?" + params.map{|k, v| "#{k}=#{URI.escape(v)}"}.join("&")
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../test_helper.rb'
|
2
|
-
|
3
|
-
class RDF::Sesame::BaseTest < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@graph = RDF::Sesame::Base.new('http://localhost:8180/openrdf-sesame', 'test')
|
6
|
-
@graph.delete_all
|
7
|
-
RDF::unregister_all!
|
8
|
-
RDF::register(:ex => 'http://example.org/')
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_should_initialize_address_port_path_and_repository
|
12
|
-
assert_equal 'localhost', @graph.address
|
13
|
-
assert_equal 8180, @graph.port
|
14
|
-
assert_equal '/openrdf-sesame', @graph.path
|
15
|
-
assert_equal 'test', @graph.repository
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_should_be_empty
|
19
|
-
assert @graph.empty?
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_should_add_statement
|
23
|
-
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
24
|
-
assert_equal 1, @graph.size
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_should_import_data
|
28
|
-
@graph.import(<<-ENDL, :ntriples)
|
29
|
-
#{[RDF[:ex]::a, RDF[:ex]::b, RDF[:ex]::c].to_statement.to_ntriples}
|
30
|
-
#{[RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e].to_statement.to_ntriples}
|
31
|
-
ENDL
|
32
|
-
assert_equal 2, @graph.size
|
33
|
-
assert @graph.include?([RDF[:ex]::a, RDF[:ex]::b, RDF[:ex]::c])
|
34
|
-
assert @graph.include?([RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e])
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_should_delete_statement
|
38
|
-
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
39
|
-
@graph.delete(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
40
|
-
assert @graph.empty?
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_should_execute_select_query
|
44
|
-
assert @graph.select("SELECT ?x WHERE {?x #{RDF[:ex]::nothing} _:bn2 . }").empty?
|
45
|
-
|
46
|
-
@graph.add(RDF[:ex]::a, RDF[:ex]::b, RDF::PlainLiteralNode.new('test'))
|
47
|
-
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::PlainLiteralNode.new('test', 'en'))
|
48
|
-
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::TypedLiteralNode.new('test', RDF[:ex]::a.uri))
|
49
|
-
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF[:ex]::e)
|
50
|
-
@graph.add(RDF[:ex]::d, RDF[:ex]::b, RDF::BlankNode.new)
|
51
|
-
result = @graph.select("SELECT ?y WHERE {?x #{RDF[:ex]::b} ?y . }")
|
52
|
-
assert_equal 5, result.size
|
53
|
-
assert result.any?{|r| r['y'] == RDF::PlainLiteralNode.new('test')}
|
54
|
-
assert result.any?{|r| r['y'] == RDF::PlainLiteralNode.new('test', 'en')}
|
55
|
-
assert result.any?{|r| r['y'] == RDF::TypedLiteralNode.new('test', RDF[:ex]::a.uri)}
|
56
|
-
assert result.any?{|r| r['y'] == RDF[:ex]::e}
|
57
|
-
assert result.any?{|r| r['y'].blank_node?}
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_should_execute_ask_query
|
61
|
-
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
62
|
-
assert @graph.ask("ask { #{[RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj].to_statement.to_ntriples} }")
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_should_include_statement
|
66
|
-
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
67
|
-
assert @graph.include?(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_should_clear_graph
|
71
|
-
@graph.add(RDF[:ex]::sub, RDF[:ex]::pred, RDF[:ex]::obj)
|
72
|
-
@graph.delete_all
|
73
|
-
|
74
|
-
assert @graph.empty?
|
75
|
-
end
|
76
|
-
end
|