activerdf_jena 0.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.
@@ -0,0 +1,39 @@
1
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf> <http://www.w3.org/2000/01/rdf-schema#label> "FOAF file of Eyal Oren" .
2
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf> <http://purl.org/rss/1.0/modules/syndication/updateFrequency> "1" .
3
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf> <http://purl.org/rss/1.0/modules/syndication/updatePeriod> "weekly" .
4
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
5
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Eyal Oren" .
6
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/title> "ir." .
7
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/gender> "male" .
8
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/mbox> <mailto:eyal.oren@deri.org> .
9
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/homepage> <http://www.eyaloren.org/> .
10
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/workplaceHomepage> <http://www.deri.ie/> .
11
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/img> <http://www.eyaloren.org/eyal.jpg> .
12
+ <https://launchpad.net/products/activerdf/+rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Project> .
13
+ <https://launchpad.net/products/activerdf/+rdf> <http://xmlns.com/foaf/0.1/name> "ActiveRDF" .
14
+ <https://launchpad.net/products/activerdf/+rdf> <http://xmlns.com/foaf/0.1/homepage> <http://www.activerdf.org/> .
15
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/currentProject> <https://launchpad.net/products/activerdf/+rdf> .
16
+ <https://launchpad.net/products/browserdf/+rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Project> .
17
+ <https://launchpad.net/products/browserdf/+rdf> <http://xmlns.com/foaf/0.1/name> "BrowseRDF" .
18
+ <https://launchpad.net/products/browserdf/+rdf> <http://xmlns.com/foaf/0.1/homepage> <http://www.browserdf.org/> .
19
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/currentProject> <https://launchpad.net/products/browserdf/+rdf> .
20
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.w3.org/People/Berners-Lee/card#i> .
21
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://richard.cyganiak.de/foaf.rdf#cygri> .
22
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.harth.org/~andreas/foaf.rdf#ah> .
23
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.leobard.net/rdf/foaf.xml#me> .
24
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.debruijn.net/foaf.rdf#me> .
25
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://platon.escet.urjc.es/~axel/foaf.rdf#me> .
26
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.kr.tuwien.ac.at/staff/roman/foaf.rdf#me> .
27
+ <http://sw.deri.org/~knud> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
28
+ <http://sw.deri.org/~knud> <http://xmlns.com/foaf/0.1/name> "Knud M\u00F6ller" .
29
+ <http://sw.deri.org/~knud> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://sw.deri.org/~knud/knudfoaf.rdf> .
30
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://sw.deri.org/~knud> .
31
+ <http://www-cdr.stanford.edu/~petrie/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
32
+ <http://www-cdr.stanford.edu/~petrie/foaf.rdf#me> <http://xmlns.com/foaf/0.1/name> "Charles Petrie" .
33
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www-cdr.stanford.edu/~petrie/foaf.rdf#me> .
34
+ <http://www.isi.edu/~stefan/foaf.rdf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
35
+ <http://www.isi.edu/~stefan/foaf.rdf> <http://xmlns.com/foaf/0.1/name> "Stefan Decker" .
36
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.isi.edu/~stefan/foaf.rdf> .
37
+ <http://www.aifb.uni-karlsruhe.de/Personen/viewPersonOWL/id2076instance> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
38
+ <http://www.aifb.uni-karlsruhe.de/Personen/viewPersonOWL/id2076instance> <http://xmlns.com/foaf/0.1/name> "Max V\u00F6lkel" .
39
+ <file:///home/metaman/workspaces/deri-workspace/activerdf/activerdf-sesame/test/eyal-foaf.rdf#me> <http://xmlns.com/foaf/0.1/knows> <http://www.aifb.uni-karlsruhe.de/Personen/viewPersonOWL/id2076instance> .
@@ -0,0 +1,18 @@
1
+ # Schema for test data
2
+ #
3
+ # This is only
4
+ @prefix daml: <http://www.daml.org/2001/03/daml+oil#> .
5
+ @prefix mech: <#> .
6
+
7
+ @prefix : <#> .
8
+
9
+ :includes a daml:TransitiveProperty .
10
+
11
+ :partOf a daml:TransitiveProperty; daml:inverseOf :includes .
12
+
13
+ :dependsOn a daml:TransitiveProperty ;
14
+ daml:hasSubProperty :includes . # Real name of subproperty?
15
+
16
+
17
+
18
+
@@ -0,0 +1,11 @@
1
+ #$: << "/Users/kph/unc/projects/activerdf_jena/lib"
2
+ require 'rubygems'
3
+ require 'active_rdf'
4
+ #require 'activerdf_jena'
5
+ p Jena::Model
6
+ p Pellet.pellet_available?
7
+ p Pellet.reasoner_factory
8
+ p LuceneARQ.lucene_available?
9
+ adapter = ConnectionPool.add_data_source(:type => :jena, :ontology => :owl, :reasoner => :pellet, :lucene => true)
10
+ puts adapter.dump
11
+ p ObjectManager.construct_classes
@@ -0,0 +1,32 @@
1
+ <http://activerdf.org/test/Person> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
2
+ <http://activerdf.org/test/Person> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
3
+ <http://activerdf.org/test/Person> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> .
4
+ <http://activerdf.org/test/age> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
5
+ <http://activerdf.org/test/age> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
6
+ <http://activerdf.org/test/age> <http://www.w3.org/2000/01/rdf-schema#domain> <http://activerdf.org/test/Person> .
7
+ <http://activerdf.org/test/age> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
8
+ <http://activerdf.org/test/age> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal> .
9
+ <http://activerdf.org/test/car> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
10
+ <http://activerdf.org/test/car> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
11
+ <http://activerdf.org/test/car> <http://www.w3.org/2000/01/rdf-schema#domain> <http://activerdf.org/test/Person> .
12
+ <http://activerdf.org/test/car> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
13
+ <http://activerdf.org/test/car> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal> .
14
+ <http://activerdf.org/test/eyal> <http://activerdf.org/test/age> "27" .
15
+ <http://activerdf.org/test/eyal> <http://activerdf.org/test/eye> "blue" .
16
+ <http://activerdf.org/test/eyal> <http://activerdf.org/test/name> "Eyal Oren" .
17
+ <http://activerdf.org/test/eyal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://activerdf.org/test/Person> .
18
+ <http://activerdf.org/test/eyal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
19
+ <http://activerdf.org/test/eye> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
20
+ <http://activerdf.org/test/eye> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
21
+ <http://activerdf.org/test/eye> <http://www.w3.org/2000/01/rdf-schema#domain> <http://activerdf.org/test/Person> .
22
+ <http://activerdf.org/test/eye> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
23
+ <http://activerdf.org/test/eye> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal> .
24
+ <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
25
+ <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
26
+ <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> .
27
+ <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> .
28
+ <http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
29
+ <http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Resource> .
30
+ _:#1 <http://activerdf.org/test/age> "29" .
31
+ _:#1 <http://activerdf.org/test/name> "Another Person" .
32
+ _:#1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://activerdf.org/test/Person> .
@@ -0,0 +1,430 @@
1
+ # Authors:: Benjamin Heitmann, Karsten Huneycutt
2
+ # Copyright:: (c) 2007
3
+ # License:: LGPL
4
+
5
+ require 'test/unit'
6
+ require 'rubygems'
7
+
8
+ require "java"
9
+
10
+ require 'active_rdf'
11
+
12
+ require "pp"
13
+
14
+ require "fileutils"
15
+
16
+ class TestJenaAdapter < Test::Unit::TestCase
17
+
18
+ def setup
19
+ @adapter = ConnectionPool.add_data_source(:type => :jena, :ontology => :rdfs)
20
+ @eyal = RDFS::Resource.new 'http://eyaloren.org'
21
+ @age = RDFS::Resource.new 'foaf:age'
22
+ @mbox = RDFS::Resource.new 'foaf:mbox'
23
+ @test = RDFS::Resource.new 'test:test'
24
+ @mboxval = Literal.new 'aahfgiouhfg'
25
+ @ageval = Literal.new 23
26
+ end
27
+
28
+ def teardown
29
+ @adapter.close
30
+ # ConnectionPool.clear
31
+ end
32
+
33
+
34
+
35
+ def test_load_no_args
36
+ adapter = ConnectionPool.add_data_source(:type => :jena)
37
+ assert_instance_of JenaAdapter, adapter
38
+ end
39
+
40
+ def test_with_args_no_location
41
+ assert_instance_of JenaAdapter, @adapter
42
+ end
43
+
44
+ def test_retrieve_a_triple_with_only_uris
45
+
46
+ assert_instance_of JenaAdapter, @adapter
47
+
48
+ @adapter.add(@eyal, @age, @test)
49
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
50
+ assert_equal 1, result.flatten.size
51
+
52
+ result = Query.new.distinct(:p, :o).where(@eyal, :p, :o).execute
53
+ assert_equal 2, result.flatten.size
54
+
55
+ result = Query.new.distinct(:o).where(@eyal, @age, :o).execute
56
+ assert_equal 1, result.flatten.size
57
+
58
+ result = Query.new.distinct(:s).where(:s, @age, @test).execute
59
+ assert_equal 1, result.flatten.size
60
+
61
+ result = Query.new.distinct(:p).where(@eyal, :p, @test).execute
62
+ assert_equal 1, result.flatten.size
63
+
64
+ end
65
+
66
+ def test_retrieve_a_triple_with_string
67
+
68
+ assert_instance_of JenaAdapter, @adapter
69
+
70
+ @adapter.add(@eyal, @mbox, @mboxval)
71
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
72
+ assert_equal 1, result.flatten.size
73
+
74
+ result = Query.new.distinct(:p, :o).where(@eyal, :p, :o).execute
75
+ assert_equal 2, result.flatten.size
76
+
77
+ result = Query.new.distinct(:o).where(@eyal, @mbox, :o).execute
78
+ assert_equal 1, result.flatten.size
79
+
80
+ result = Query.new.distinct(:s).where(:s, @mbox, @mboxval).execute
81
+ assert_equal 1, result.flatten.size
82
+
83
+ result = Query.new.distinct(:p).where(@eyal, :p, @mboxval).execute
84
+ assert_equal 1, result.flatten.size
85
+
86
+ end
87
+
88
+ def test_retrieve_a_triple_with_fixnum
89
+
90
+ assert_instance_of JenaAdapter, @adapter
91
+
92
+ @adapter.add(@eyal, @age, @ageval)
93
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
94
+ assert_equal 1, result.flatten.size
95
+
96
+ result = Query.new.distinct(:p, :o).where(@eyal, :p, :o).execute
97
+ assert_equal 2, result.flatten.size
98
+
99
+ result = Query.new.distinct(:o).where(@eyal, @age, :o).execute
100
+ assert_equal 1, result.flatten.size
101
+
102
+ result = Query.new.distinct(:s).where(:s, @age, @ageval).execute
103
+ assert_equal 1, result.flatten.size
104
+
105
+ result = Query.new.distinct(:p).where(@eyal, :p, @ageval).execute
106
+ assert_equal 1, result.flatten.size
107
+
108
+ end
109
+
110
+ def test_remove
111
+ @adapter.add(@eyal, @age, @ageval)
112
+ @adapter.add(@eyal, @mbox, @mboxval)
113
+ @adapter.delete(@eyal, @age, @ageval)
114
+ assert_equal 1, @adapter.size
115
+
116
+
117
+ @adapter.add(@eyal, @age, @ageval)
118
+ @adapter.add(@eyal, @mbox, @mboxval)
119
+ @adapter.delete(:s, :p, @ageval)
120
+ assert_equal 1, @adapter.size
121
+
122
+ @adapter.add(@eyal, @age, @ageval)
123
+ @adapter.add(@eyal, @mbox, @mboxval)
124
+ @adapter.delete(:s, @age, :o)
125
+ assert_equal 1, @adapter.size
126
+
127
+ @adapter.add(@eyal, @age, @ageval)
128
+ @adapter.add(@eyal, @mbox, @mboxval)
129
+ @adapter.delete(@eyal, :p, :o)
130
+ assert_equal 0, @adapter.size
131
+ end
132
+
133
+ def test_dump
134
+ @adapter.add(@eyal, @age, @test)
135
+
136
+ stringDump = @adapter.dump
137
+
138
+ assert_not_nil stringDump
139
+ assert_kind_of String, stringDump
140
+ end
141
+
142
+ def test_size
143
+ @adapter.add(@eyal, @age, @test)
144
+
145
+ assert 0 < @adapter.size
146
+ end
147
+
148
+ def test_clear
149
+ @adapter.add(@eyal, @age, @test)
150
+ assert 0 < @adapter.size
151
+
152
+ @adapter.clear
153
+ assert_equal 0, @adapter.size
154
+ end
155
+
156
+ # may seem redundant, but nonetheless this is needed
157
+ def test_close
158
+ my_adapter = ConnectionPool.add_data_source(:type => :jena, :ontology => :rdfs)
159
+ my_adapter.add(@eyal, @age, @test)
160
+ results = Query.new.select(:s,:p,:o).where(:s,:p,:o).execute
161
+ assert results.flatten.size > 0
162
+
163
+ my_adapter.close
164
+ assert_raises ActiveRdfError do
165
+ results = Query.new.select(:s,:p,:o).where(:s,:p,:o).execute
166
+ end
167
+
168
+ my_adapter = ConnectionPool.add_data_source(:type => :jena, :ontology => :rdfs)
169
+ my_adapter.add(@eyal, @age, @test)
170
+ results = Query.new.select(:s,:p,:o).where(:s,:p,:o).execute
171
+ assert results.flatten.size > 0
172
+
173
+ my_adapter.close
174
+ assert_raises ActiveRdfError do
175
+ results = Query.new.select(:s,:p,:o).where(:s,:p,:o).execute
176
+ end
177
+ end
178
+
179
+
180
+ def test_load_ntriples
181
+ assert_equal 0, @adapter.size
182
+
183
+ this_dir = File.dirname(File.expand_path(__FILE__))
184
+ @adapter.load("file://" + this_dir + "/eyal-foaf.nt", :format => :ntriples, :into => :default_model)
185
+
186
+ assert_not_equal 0, @adapter.size
187
+
188
+ #check for <https://launchpad.net/products/browserdf/+rdf> <http://xmlns.com/foaf/0.1/name> "BrowseRDF" .
189
+ project_browserdf = RDFS::Resource.new("https://launchpad.net/products/browserdf/+rdf")
190
+ foaf_name = RDFS::Resource.new("http://xmlns.com/foaf/0.1/name")
191
+ result = Query.new.distinct(:o).where(project_browserdf, foaf_name, :o).execute
192
+ assert_equal 1, result.flatten.size
193
+ assert_equal "BrowseRDF", result[0]
194
+ end
195
+
196
+ def test_load_rdf_xml
197
+ assert_equal 0, @adapter.size
198
+
199
+ this_dir = File.dirname(File.expand_path(__FILE__))
200
+ @adapter.load("file://" + this_dir + "/bnode_org_rss.rdf", :format => :rdfxml, :into => :default_model)
201
+
202
+ assert_not_equal 0, @adapter.size
203
+
204
+ a_post = RDFS::Resource.new("http://bnode.org/blog/2007/05/29/semantic-web-gets-a-mention-in-visual-x-mag-webinale-report")
205
+ rss_title = RDFS::Resource.new("http://purl.org/rss/1.0/title")
206
+
207
+ result = Query.new.distinct(:o).where(a_post, rss_title, :o).execute
208
+ assert_equal 1, result.flatten.size
209
+ assert_equal "Semantic Web gets a mention in Visual-x mag webinale report", result[0]
210
+ end
211
+
212
+ def test_load_n3
213
+ assert_equal 0, @adapter.size
214
+
215
+ this_dir = File.dirname(File.expand_path(__FILE__))
216
+ @adapter.load("file://" + this_dir + "/s1.n3", :format => :n3, :into => :default_model)
217
+
218
+ assert_not_equal 0, @adapter.size
219
+
220
+ transy = RDFS::Resource.new("http://www.daml.org/2001/03/daml+oil#TransitiveProperty")
221
+ rdf_type = RDFS::Resource.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
222
+ result = Query.new.distinct(:s).where(:s, rdf_type, transy).execute
223
+
224
+ assert_equal 3, result.flatten.size
225
+ end
226
+
227
+ def test_persistence_file_based_anonymous
228
+ @adapter.close
229
+
230
+ this_dir = File.dirname(File.expand_path(__FILE__))
231
+ Dir.mkdir(this_dir + "/jena_persistence")
232
+ persistent_adapter = ConnectionPool.add_data_source(:type => :jena,
233
+ :file => this_dir + "/jena_persistence")
234
+ assert_equal 0, persistent_adapter.size
235
+
236
+ persistent_adapter.add(@eyal, @age, @ageval)
237
+ persistent_adapter.add(@eyal, @mbox, @mboxval)
238
+
239
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
240
+ assert_equal 2, result.flatten.size
241
+
242
+ persistent_adapter.close
243
+ ConnectionPool.clear
244
+
245
+ adapter2 = ConnectionPool.add_data_source(:type => :jena,
246
+ :file => this_dir + "/jena_persistence")
247
+
248
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
249
+ assert_equal 2, result.flatten.size
250
+
251
+ adapter2.close
252
+ FileUtils.remove_dir(this_dir + "/jena_persistence")
253
+ #File.delete(this_dir + "/jena_persistence/default")
254
+ end
255
+
256
+ def test_persistence_file_based_named_model
257
+ @adapter.close
258
+
259
+ this_dir = File.dirname(File.expand_path(__FILE__))
260
+ Dir.mkdir(this_dir + "/jena_persistence")
261
+ persistent_adapter = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky",
262
+ :file => this_dir + "/jena_persistence")
263
+ assert_equal 0, persistent_adapter.size
264
+
265
+ persistent_adapter.add(@eyal, @age, @ageval)
266
+ persistent_adapter.add(@eyal, @mbox, @mboxval)
267
+
268
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
269
+ assert_equal 2, result.flatten.size
270
+
271
+ persistent_adapter.close
272
+ ConnectionPool.clear
273
+
274
+ adapter2 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky",
275
+ :file => this_dir + "/jena_persistence")
276
+
277
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
278
+ assert_equal 2, result.flatten.size
279
+
280
+ adapter2.close
281
+ FileUtils.remove_dir(this_dir + "/jena_persistence")
282
+ #File.delete(this_dir + "/jena_persistence/superfunky")
283
+ end
284
+
285
+ def test_keyword_search
286
+ @adapter.close
287
+
288
+ this_dir = File.dirname(File.expand_path(__FILE__))
289
+ keyword_adapter = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :lucene => true)
290
+
291
+ keyword_adapter.load("file://" + this_dir + "/test_data.nt", :format => :ntriples, :into => :default_model )
292
+
293
+ eyal = RDFS::Resource.new('http://activerdf.org/test/eyal')
294
+
295
+ assert keyword_adapter.keyword_search?
296
+
297
+ assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"blue").execute(:flatten => true)
298
+ assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"27").execute(:flatten => true)
299
+ assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"eyal oren").execute(:flatten => true)
300
+
301
+ keyword_adapter.close
302
+ end
303
+
304
+ def test_derby_embedded_persistence
305
+ @adapter.close
306
+ this_dir = File.dirname(File.expand_path(__FILE__))
307
+
308
+ derby1 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky",
309
+ :database => {:url => "jdbc:derby:#{this_dir}/superfunky;create=true", :type => "Derby", :username => "", :password => ""})
310
+
311
+ derby1.add(@eyal, @age, @ageval)
312
+ derby1.add(@eyal, @mbox, @mboxval)
313
+
314
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
315
+ assert_equal 2, result.flatten.size
316
+
317
+ derby1.close
318
+ ConnectionPool.clear
319
+
320
+ derby2 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :id => "2",
321
+ :database => {:url => "jdbc:derby:#{this_dir}/superfunky;create=true", :type => "Derby", :username => "", :password => ""})
322
+
323
+ result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
324
+ assert_equal 2, result.flatten.size
325
+
326
+ derby2.close
327
+
328
+ begin
329
+ java.sql.DriverManager.getConnection("jdbc:derby:;shutdown=true")
330
+ rescue java.sql.SQLException
331
+ # expected
332
+ end
333
+ FileUtils.rm_rf(this_dir + "/superfunky")
334
+ end
335
+
336
+ # TODO: NOT TESTED until now, run this against a local mysql installation to confirm it
337
+ def test_mysql_persistence
338
+ # @adapter.close
339
+ #
340
+ # mysql1 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :id => "1",
341
+ # :database => {:url => "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName;create=true", :type => "MySQL", :username => "theUser", :password => "thepassword"})
342
+ #
343
+ # mysql1.add(@eyal, @age, @ageval)
344
+ # mysql1.add(@eyal, @mbox, @mboxval)
345
+ #
346
+ # result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
347
+ # assert_equal 2, result.flatten.size
348
+ #
349
+ # mysql1.close
350
+ # ConnectionPool.clear
351
+ #
352
+ # mysql2 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :id => "2",
353
+ # :database => {:url => "jdbc:mysql://MyDbComputerNameOrIP/myDatabaseName;create=true", :type => "MySQL", :username => "theUser", :password => "thepassword"})
354
+ #
355
+ # result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
356
+ # assert_equal 2, result.flatten.size
357
+ #
358
+ # mysql2.close
359
+ # this_dir = File.dirname(File.expand_path(__FILE__))
360
+ # #FileUtils.remove_dir(this_dir + "/superfunky")
361
+ end
362
+
363
+ # TODO: NOT TESTED until now, run this against a local postgres installation to confirm it
364
+ def test_postgres_embedded_persistence
365
+ # @adapter.close
366
+ #
367
+ # postgres1 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :id => "1",
368
+ # :database => {:url => "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName;create=true", :type => "PostgreSQL", :username => "theUser", :password => "thepassword"})
369
+ #
370
+ # postgres1.add(@eyal, @age, @ageval)
371
+ # postgres1.add(@eyal, @mbox, @mboxval)
372
+ #
373
+ # result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
374
+ # assert_equal 2, result.flatten.size
375
+ #
376
+ # postgres1.close
377
+ # ConnectionPool.clear
378
+ #
379
+ # postgres2 = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :id => "2",
380
+ # :database => {:url => "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName;create=true", :type => "PostgreSQL", :username => "theUser", :password => "thepassword"})
381
+ #
382
+ # result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
383
+ # assert_equal 2, result.flatten.size
384
+ #
385
+ # postgres2.close
386
+ # this_dir = File.dirname(File.expand_path(__FILE__))
387
+ # #FileUtils.remove_dir(this_dir + "/superfunky")
388
+ end
389
+
390
+
391
+
392
+
393
+
394
+ def test_contexts
395
+ # TODO
396
+ end
397
+
398
+ # TODO: querying pellet does not work right now
399
+ def test_search_with_pellet
400
+ @adapter.close
401
+
402
+ this_dir = File.dirname(File.expand_path(__FILE__))
403
+ adapter = ConnectionPool.add_data_source(:type => :jena, :model => "superfunky", :lucene => true,
404
+ :reasoner => :pellet, :ontology => :owl)
405
+
406
+ adapter.load("file://" + this_dir + "/test_data.nt", :format => :ntriples, :into => :default_model )
407
+
408
+ eyal = RDFS::Resource.new('http://activerdf.org/test/eyal')
409
+
410
+ # Keyword with pellet does not work.
411
+ # assert adapter.keyword_search?
412
+ # assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"blue").execute(:flatten => true)
413
+ # assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"27").execute(:flatten => true)
414
+ # assert_equal eyal, Query.new.distinct(:s).where(:s,:keyword,"eyal oren").execute(:flatten => true)
415
+
416
+ adapter.close
417
+ end
418
+
419
+
420
+ # TODO: need a better understanding of rdfs reasoning in Jena before I can write a test for it
421
+ # def test_rdfs_reasoning
422
+ # adapter_rdfs = ConnectionPool.add_data_source(:type => :jena, :ontology => :rdfs, :reasoner => :rdfs)
423
+ #
424
+ # adapter_rdfs.add(@eyal, @age, @test)
425
+ # result = Query.new.distinct(:o).where(@eyal, :p, :o).execute
426
+ # assert_equal 2, result.flatten.size
427
+ # adapter_rdfs.close
428
+ # end
429
+
430
+ end