activerdf_net7 1.6.11
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/CHANGELOG +79 -0
- data/LICENSE +504 -0
- data/README.rdoc +34 -0
- data/activerdf-jena/CHANGELOG +14 -0
- data/activerdf-jena/LICENSE +504 -0
- data/activerdf-jena/README +57 -0
- data/activerdf-jena/Rakefile +87 -0
- data/activerdf-jena/TODO +18 -0
- data/activerdf-jena/VERSION +1 -0
- data/activerdf-jena/ext/antlr-2.7.5.jar +0 -0
- data/activerdf-jena/ext/arq-extra.jar +0 -0
- data/activerdf-jena/ext/arq.jar +0 -0
- data/activerdf-jena/ext/aterm-java-1.6.jar +0 -0
- data/activerdf-jena/ext/commons-logging-1.1.jar +0 -0
- data/activerdf-jena/ext/concurrent.jar +0 -0
- data/activerdf-jena/ext/icu4j_3_4.jar +0 -0
- data/activerdf-jena/ext/iri.jar +0 -0
- data/activerdf-jena/ext/jena.jar +0 -0
- data/activerdf-jena/ext/jenatest.jar +0 -0
- data/activerdf-jena/ext/json.jar +0 -0
- data/activerdf-jena/ext/junit.jar +0 -0
- data/activerdf-jena/ext/log4j-1.2.12.jar +0 -0
- data/activerdf-jena/ext/lucene-core-2.0.0.jar +0 -0
- data/activerdf-jena/ext/ng4j.jar +0 -0
- data/activerdf-jena/ext/pellet.jar +0 -0
- data/activerdf-jena/ext/relaxngDatatype.jar +0 -0
- data/activerdf-jena/ext/stax-api-1.0.jar +0 -0
- data/activerdf-jena/ext/wstx-asl-3.0.0.jar +0 -0
- data/activerdf-jena/ext/xercesImpl.jar +0 -0
- data/activerdf-jena/ext/xml-apis.jar +0 -0
- data/activerdf-jena/ext/xsdlib.jar +0 -0
- data/activerdf-jena/lib/activerdf_jena/init.rb +26 -0
- data/activerdf-jena/lib/activerdf_jena/jena.rb +59 -0
- data/activerdf-jena/lib/activerdf_jena/jena_adapter.rb +515 -0
- data/activerdf-jena/lib/activerdf_jena/lucene.rb +22 -0
- data/activerdf-jena/lib/activerdf_jena/ng4j.rb +50 -0
- data/activerdf-jena/lib/activerdf_jena/ng4j_adapter.rb +379 -0
- data/activerdf-jena/lib/activerdf_jena/pellet.rb +25 -0
- data/activerdf-jena/test/bnode_org_rss.rdf +793 -0
- data/activerdf-jena/test/eyal-foaf.nt +39 -0
- data/activerdf-jena/test/fun_with_bnodes.nt +2 -0
- data/activerdf-jena/test/s1.n3 +18 -0
- data/activerdf-jena/test/test_data.nt +32 -0
- data/activerdf-jena/test/test_jena_adapter.rb +451 -0
- data/activerdf-jena/test/test_ng4j_adapter.rb +354 -0
- data/activerdf-rdflite/CHANGELOG +31 -0
- data/activerdf-rdflite/LICENSE +504 -0
- data/activerdf-rdflite/README +16 -0
- data/activerdf-rdflite/Rakefile +73 -0
- data/activerdf-rdflite/VERSION +1 -0
- data/activerdf-rdflite/lib/activerdf_rdflite/fetching.rb +34 -0
- data/activerdf-rdflite/lib/activerdf_rdflite/init.rb +13 -0
- data/activerdf-rdflite/lib/activerdf_rdflite/rdflite.rb +582 -0
- data/activerdf-rdflite/lib/activerdf_rdflite/suggesting.rb +87 -0
- data/activerdf-rdflite/test/test_bnode_data.nt +5 -0
- data/activerdf-rdflite/test/test_data.nt +32 -0
- data/activerdf-rdflite/test/test_escaped_data.nt +2 -0
- data/activerdf-rdflite/test/test_fetching.rb +33 -0
- data/activerdf-rdflite/test/test_rdflite.rb +277 -0
- data/activerdf-redland/CHANGELOG +12 -0
- data/activerdf-redland/LICENSE +504 -0
- data/activerdf-redland/README +9 -0
- data/activerdf-redland/Rakefile +72 -0
- data/activerdf-redland/VERSION +1 -0
- data/activerdf-redland/lib/activerdf_redland/init.rb +10 -0
- data/activerdf-redland/lib/activerdf_redland/redland.rb +362 -0
- data/activerdf-redland/test/test_person_data.nt +42 -0
- data/activerdf-redland/test/test_redland_adapter.rb +242 -0
- data/activerdf-sesame/CHANGELOG +6 -0
- data/activerdf-sesame/LICENSE +10 -0
- data/activerdf-sesame/LICENSE-aduna +10 -0
- data/activerdf-sesame/LICENSE-lgpl +504 -0
- data/activerdf-sesame/README +33 -0
- data/activerdf-sesame/Rakefile +77 -0
- data/activerdf-sesame/VERSION +1 -0
- data/activerdf-sesame/ext/commons-codec-1.3.jar +0 -0
- data/activerdf-sesame/ext/commons-dbcp-1.2.2.jar +0 -0
- data/activerdf-sesame/ext/commons-httpclient-3.1.jar +0 -0
- data/activerdf-sesame/ext/commons-logging-1.1.1.jar +0 -0
- data/activerdf-sesame/ext/commons-pool-1.3.jar +0 -0
- data/activerdf-sesame/ext/commons-pool-1.5.2.jar +0 -0
- data/activerdf-sesame/ext/junit-3.8.2.jar +0 -0
- data/activerdf-sesame/ext/openrdf-sesame-2.0-onejar.jar +0 -0
- data/activerdf-sesame/ext/openrdf-sesame-2.3-pr1-onejar.jar +0 -0
- data/activerdf-sesame/ext/slf4j-api-1.4.3.jar +0 -0
- data/activerdf-sesame/ext/slf4j-nop-1.4.3.jar +0 -0
- data/activerdf-sesame/ext/wrapper-sesame2.jar +0 -0
- data/activerdf-sesame/java/build.number +3 -0
- data/activerdf-sesame/java/build.xml +313 -0
- data/activerdf-sesame/java/javadoc/allclasses-frame.html +31 -0
- data/activerdf-sesame/java/javadoc/allclasses-noframe.html +31 -0
- data/activerdf-sesame/java/javadoc/constant-values.html +146 -0
- data/activerdf-sesame/java/javadoc/deprecated-list.html +146 -0
- data/activerdf-sesame/java/javadoc/help-doc.html +223 -0
- data/activerdf-sesame/java/javadoc/index-files/index-1.html +150 -0
- data/activerdf-sesame/java/javadoc/index-files/index-10.html +145 -0
- data/activerdf-sesame/java/javadoc/index-files/index-2.html +157 -0
- data/activerdf-sesame/java/javadoc/index-files/index-3.html +146 -0
- data/activerdf-sesame/java/javadoc/index-files/index-4.html +145 -0
- data/activerdf-sesame/java/javadoc/index-files/index-5.html +145 -0
- data/activerdf-sesame/java/javadoc/index-files/index-6.html +142 -0
- data/activerdf-sesame/java/javadoc/index-files/index-7.html +145 -0
- data/activerdf-sesame/java/javadoc/index-files/index-8.html +152 -0
- data/activerdf-sesame/java/javadoc/index-files/index-9.html +146 -0
- data/activerdf-sesame/java/javadoc/index.html +36 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/WrapperForSesame2.html +665 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/class-use/WrapperForSesame2.html +144 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/package-frame.html +32 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/package-summary.html +157 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/package-tree.html +150 -0
- data/activerdf-sesame/java/javadoc/org/activerdf/wrapper/sesame2/package-use.html +144 -0
- data/activerdf-sesame/java/javadoc/overview-summary.html +156 -0
- data/activerdf-sesame/java/javadoc/overview-tree.html +152 -0
- data/activerdf-sesame/java/javadoc/package-list +1 -0
- data/activerdf-sesame/java/javadoc/resources/inherit.gif +0 -0
- data/activerdf-sesame/java/javadoc/stylesheet.css +29 -0
- data/activerdf-sesame/java/lib/commons-codec-1.3.jar +0 -0
- data/activerdf-sesame/java/lib/commons-dbcp-1.2.2.jar +0 -0
- data/activerdf-sesame/java/lib/commons-httpclient-3.1.jar +0 -0
- data/activerdf-sesame/java/lib/commons-logging-1.1.1.jar +0 -0
- data/activerdf-sesame/java/lib/commons-pool-1.3.jar +0 -0
- data/activerdf-sesame/java/lib/commons-pool-1.5.2.jar +0 -0
- data/activerdf-sesame/java/lib/junit-3.8.2.jar +0 -0
- data/activerdf-sesame/java/lib/openrdf-sesame-2.0-onejar.jar +0 -0
- data/activerdf-sesame/java/lib/openrdf-sesame-2.3-pr1-onejar.jar +0 -0
- data/activerdf-sesame/java/lib/slf4j-api-1.4.3.jar +0 -0
- data/activerdf-sesame/java/lib/slf4j-nop-1.4.3.jar +0 -0
- data/activerdf-sesame/java/manifest.mf +3 -0
- data/activerdf-sesame/java/settings.xml +135 -0
- data/activerdf-sesame/java/src/org/activerdf/wrapper/sesame2/WrapperForSesame2.java +145 -0
- data/activerdf-sesame/java/test-src/org/activerdf/wrapper/sesame2/TestWrapperForSesame2.java +41 -0
- data/activerdf-sesame/lib/activerdf_sesame/init.rb +11 -0
- data/activerdf-sesame/lib/activerdf_sesame/sesame.rb +400 -0
- data/activerdf-sesame/test/eyal-foaf.nt +39 -0
- data/activerdf-sesame/test/eyal-foaf.rdf +65 -0
- data/activerdf-sesame/test/test_sesame_adapter.rb +341 -0
- data/activerdf-sparql/CHANGELOG +35 -0
- data/activerdf-sparql/LICENSE +504 -0
- data/activerdf-sparql/README +10 -0
- data/activerdf-sparql/Rakefile +78 -0
- data/activerdf-sparql/VERSION +1 -0
- data/activerdf-sparql/lib/activerdf_sparql/init.rb +10 -0
- data/activerdf-sparql/lib/activerdf_sparql/sparql.rb +212 -0
- data/activerdf-sparql/lib/activerdf_sparql/sparql_result_parser.rb +55 -0
- data/activerdf-sparql/test/test_sparql_adapter.rb +108 -0
- data/activerdf-yars/LICENSE +504 -0
- data/activerdf-yars/README +10 -0
- data/activerdf-yars/Rakefile +38 -0
- data/activerdf-yars/lib/activerdf_yars/init.rb +10 -0
- data/activerdf-yars/lib/activerdf_yars/jars2.rb +119 -0
- data/lib/active_rdf.rb +85 -0
- data/lib/active_rdf/directaccess/direct_access.rb +49 -0
- data/lib/active_rdf/federation/active_rdf_adapter.rb +47 -0
- data/lib/active_rdf/federation/connection_pool.rb +156 -0
- data/lib/active_rdf/federation/federation_manager.rb +112 -0
- data/lib/active_rdf/instance_exec.rb +13 -0
- data/lib/active_rdf/objectmanager/bnode.rb +7 -0
- data/lib/active_rdf/objectmanager/literal.rb +71 -0
- data/lib/active_rdf/objectmanager/namespace.rb +106 -0
- data/lib/active_rdf/objectmanager/object_manager.rb +119 -0
- data/lib/active_rdf/objectmanager/ordered_set.rb +116 -0
- data/lib/active_rdf/objectmanager/property_list.rb +76 -0
- data/lib/active_rdf/objectmanager/resource.rb +609 -0
- data/lib/active_rdf/objectmanager/resource_like.rb +28 -0
- data/lib/active_rdf/queryengine/ntriples_parser.rb +90 -0
- data/lib/active_rdf/queryengine/query.rb +245 -0
- data/lib/active_rdf/queryengine/query2jars2.rb +22 -0
- data/lib/active_rdf/queryengine/query2sparql.rb +139 -0
- data/lib/active_rdf_helpers.rb +30 -0
- data/lib/active_rdf_log.rb +100 -0
- data/test/common.rb +119 -0
- data/test/directaccess/test_direct_access.rb +64 -0
- data/test/federation/test_connection_pool.rb +86 -0
- data/test/federation/test_federation_manager.rb +145 -0
- data/test/objectmanager/test_literal.rb +52 -0
- data/test/objectmanager/test_namespace.rb +83 -0
- data/test/objectmanager/test_object_manager.rb +96 -0
- data/test/objectmanager/test_ordered_set.rb +110 -0
- data/test/objectmanager/test_resource_reading.rb +150 -0
- data/test/objectmanager/test_resource_writing.rb +39 -0
- data/test/objectmanager/test_talia_syntax.rb +68 -0
- data/test/queryengine/my_external_resource.rb +24 -0
- data/test/queryengine/test_external_resource_class.rb +49 -0
- data/test/queryengine/test_ntriples_parser.rb +71 -0
- data/test/queryengine/test_query.rb +55 -0
- data/test/queryengine/test_query2jars2.rb +51 -0
- data/test/queryengine/test_query2sparql.rb +76 -0
- data/test/queryengine/test_query_engine.rb +52 -0
- data/test/test_adapters.rb +58 -0
- metadata +266 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require 'federation/connection_pool'
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
9
|
+
|
|
10
|
+
class TestResourceWriting < Test::Unit::TestCase
|
|
11
|
+
def setup
|
|
12
|
+
ConnectionPool.clear
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_update_value
|
|
16
|
+
Namespace.register(:ar, 'http://activerdf.org/test/')
|
|
17
|
+
adapter = get_write_adapter
|
|
18
|
+
|
|
19
|
+
eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
|
|
20
|
+
assert_raises(ActiveRdfError) { eyal.age = 18 }
|
|
21
|
+
|
|
22
|
+
eyal.ar::age = 100
|
|
23
|
+
assert_equal 100, eyal.ar::age
|
|
24
|
+
assert_equal [100], eyal.all_ar::age
|
|
25
|
+
|
|
26
|
+
# << fails on Fixnums , because Ruby doesn't allow us to change behaviour of
|
|
27
|
+
# << on Fixnums
|
|
28
|
+
eyal.age << 18
|
|
29
|
+
assert_equal 100, eyal.age
|
|
30
|
+
|
|
31
|
+
# << same for Strings (TODO)
|
|
32
|
+
eyal.ar::name = "first"
|
|
33
|
+
eyal.ar::name << "second"
|
|
34
|
+
assert_equal "first", eyal.ar::name
|
|
35
|
+
|
|
36
|
+
eyal.ar::age = [100, 80]
|
|
37
|
+
assert_equal [100, 80], eyal.ar::age
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Author: Michele Nucci
|
|
2
|
+
# License: LGPL
|
|
3
|
+
#
|
|
4
|
+
# Test for new syntax in ActiveRDF for Talia
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'active_rdf'
|
|
8
|
+
require 'federation/connection_pool'
|
|
9
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
10
|
+
|
|
11
|
+
class TestTaliaSyntax < Test::Unit::TestCase
|
|
12
|
+
def setup
|
|
13
|
+
ConnectionPool.clear
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_syntax
|
|
17
|
+
adapter = get_write_adapter
|
|
18
|
+
adapter.load "#{File.dirname(__FILE__)}/../test_person_data.nt"
|
|
19
|
+
|
|
20
|
+
Namespace.register(:test, 'http://activerdf.org/test/')
|
|
21
|
+
|
|
22
|
+
eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
|
|
23
|
+
michele = RDFS::Resource.new 'http://activerdf.org/test/michele'
|
|
24
|
+
|
|
25
|
+
# Adding some triples
|
|
26
|
+
adapter.add(michele, RDFS::subClassOf, RDF::Resource)
|
|
27
|
+
adapter.add(michele, RDF::type, Namespace.lookup(:rdfs, 'Class') )
|
|
28
|
+
adapter.add(michele, RDF::type, Namespace.lookup(:test, 'Person') )
|
|
29
|
+
adapter.add(eyal, Namespace.lookup(:test, 'friendOf'), michele)
|
|
30
|
+
|
|
31
|
+
assert_nothing_raised(ActiveRdfError) {
|
|
32
|
+
michele.car = 'car1'
|
|
33
|
+
michele.car = 'car2'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# new syntax (shortcut) to get all properties values about TEST::car
|
|
37
|
+
x = michele[TEST::car]
|
|
38
|
+
assert_not_equal [], x
|
|
39
|
+
|
|
40
|
+
# Adding new property (new triple) with the new syntax
|
|
41
|
+
x << 'car3'
|
|
42
|
+
assert_equal ['car2', 'car3'], x
|
|
43
|
+
|
|
44
|
+
# test inverse ===========================================================
|
|
45
|
+
y = michele.inverse
|
|
46
|
+
assert_equal '<http://activerdf.org/test/eyal>', y[Namespace.lookup(:test, 'friendOf')].to_s
|
|
47
|
+
# ========================================================================
|
|
48
|
+
|
|
49
|
+
# test deletion triple with new syntax ===================================
|
|
50
|
+
|
|
51
|
+
# remove a triple whose value is specified relater to TEST::car
|
|
52
|
+
x.remove('car3')
|
|
53
|
+
assert_equal ['car2'], x
|
|
54
|
+
|
|
55
|
+
# remove every triples related to TEST::car
|
|
56
|
+
x.remove
|
|
57
|
+
assert_equal [], x
|
|
58
|
+
|
|
59
|
+
# remove EVERY triples related to a specified resource
|
|
60
|
+
FederationManager.delete_all(michele)
|
|
61
|
+
result = Query.new.select(:p, :o).where(michele, :p, :o).execute
|
|
62
|
+
assert_equal [], result
|
|
63
|
+
# ========================================================================
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module RDFS
|
|
2
|
+
# External resource class
|
|
3
|
+
class MyExternalResource
|
|
4
|
+
|
|
5
|
+
include ResourceLike
|
|
6
|
+
|
|
7
|
+
# uri of the resource
|
|
8
|
+
attr_reader :uri
|
|
9
|
+
# adding accessor to the class uri:
|
|
10
|
+
# the uri of the rdf resource being represented by this class
|
|
11
|
+
class << self
|
|
12
|
+
attr_accessor :class_uri
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# creates new resource representing an RDF resource
|
|
16
|
+
def initialize uri
|
|
17
|
+
@uri = uri
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_s
|
|
21
|
+
"<#{uri}>"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require File.join("test","unit")
|
|
2
|
+
require 'active_rdf'
|
|
3
|
+
require File.join("queryengine","query")
|
|
4
|
+
require File.join(File.dirname(__FILE__),"..","common")
|
|
5
|
+
require File.join(File.dirname(__FILE__),"my_external_resource")
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestExternalResourceClass < Test::Unit::TestCase
|
|
9
|
+
def setup
|
|
10
|
+
ConnectionPool.clear
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def teardown
|
|
14
|
+
ConnectionPool.clear
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@@eyal = RDFS::MyExternalResource.new("http://activerdf.org/test/eyal")
|
|
18
|
+
@@age = RDFS::MyExternalResource.new("http://activerdf.org/test/age")
|
|
19
|
+
|
|
20
|
+
def test_query_external_resource
|
|
21
|
+
adapters = get_talia_adapters
|
|
22
|
+
adapters.each do |adapter|
|
|
23
|
+
|
|
24
|
+
# load test data
|
|
25
|
+
adapter.load(File.join(File.dirname(__FILE__),"..","test_person_data.nt"))
|
|
26
|
+
|
|
27
|
+
# execute query and check the result classes
|
|
28
|
+
#require "ruby-debug/debugger"
|
|
29
|
+
result = Query.new(RDFS::MyExternalResource).select(:p,:o).where(@@eyal, :p, :o).execute
|
|
30
|
+
assert result.size > 0, "No Results for #{adapter.class}"
|
|
31
|
+
assert_kind_of RDFS::MyExternalResource, result[0][0]
|
|
32
|
+
|
|
33
|
+
# add data
|
|
34
|
+
pl = PropertyList.new(@@age, Query.new(RDFS::MyExternalResource).select(:o).where(@@eyal, @@age, :o).execute, @@eyal)
|
|
35
|
+
assert(pl.size > 0, "PropertyList empty")
|
|
36
|
+
assert_nothing_raised {pl << "18"}
|
|
37
|
+
result = Query.new.select(:o).where(@@eyal, @@age, :o).execute
|
|
38
|
+
assert result.include?("18")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_namespace_external_resource
|
|
43
|
+
# namespace
|
|
44
|
+
Namespace.register(:test, 'http://activerdf.org/test/')
|
|
45
|
+
assert_kind_of(RDFS::MyExternalResource, Namespace.lookup(:test, "eyal", RDFS::MyExternalResource))
|
|
46
|
+
assert_equal(:test, Namespace.prefix(@@eyal))
|
|
47
|
+
assert_equal("eyal",Namespace.localname(@@eyal))
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require 'queryengine/ntriples_parser'
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
9
|
+
|
|
10
|
+
class TestNTriplesParser < Test::Unit::TestCase
|
|
11
|
+
def setup
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def teardown
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_simple_triples
|
|
18
|
+
str = <<EOF
|
|
19
|
+
<http://www.johnbreslin.com/blog/author/cloud/#foaf> <http://xmlns.com/foaf/0.1/surname> "Breslin" .
|
|
20
|
+
<http://www.johnbreslin.com/blog/author/cloud/#foaf> <http://xmlns.com/foaf/0.1/firstName> "John" .
|
|
21
|
+
<http://www.johnbreslin.com/blog/author/cloud/> <http://purl.org/dc/terms/created> "1999-11-30T00:00:00" .
|
|
22
|
+
EOF
|
|
23
|
+
|
|
24
|
+
triples = NTriplesParser.parse(str)
|
|
25
|
+
assert_equal 9, triples.flatten.size
|
|
26
|
+
assert_equal 3, triples[0].size
|
|
27
|
+
|
|
28
|
+
assert_equal RDFS::Resource.new('http://www.johnbreslin.com/blog/author/cloud/#foaf'), triples[0][0]
|
|
29
|
+
assert_equal RDFS::Resource.new('http://xmlns.com/foaf/0.1/surname'), triples[0][1]
|
|
30
|
+
assert_equal 'Breslin', triples[0][2]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_encoded_content
|
|
34
|
+
str = <<'EOF'
|
|
35
|
+
<http://b4mad.net/datenbrei/archives/2004/07/15/brainstream-his-own-foafing-in-wordpress/#comment-10> <http://purl.org/rss/1.0/modules/content/encoded> "<p>Heh - excellent. Are we leaving Morten in the dust? :) I know he had some bu gs to fix in his version.</p>\n<p>Also, I think we should really add the foaf: in front of the foaf properties to ma ke it easier to read. </p>\n<p>Other hack ideas:</p>\n<p>* Birthdate in month/date/year (seperate fields) to add bio :Event/ bio:Birth and then say who can see the birth year, birth day/mo and full birth date.<br />\n* Add trust leve ls to friends<br />\n* Storing ones PGP key/key fingerprint in Wordpress and referencing it as user_pubkey/user_pubk eyprint respectively<br />\n* Add gender, depiction picture for profile, myers-brigs, astrological sign fields to Pr ofile.<br />\n* Add the option to create Projects/Groups user is involved with re: their Profile.<br />\n* Maybe add phone numbers/address/geo location? Essentially make it a VCard that can be foafified.\n</p>\n" .
|
|
36
|
+
EOF
|
|
37
|
+
literal = '<p>Heh - excellent. Are we leaving Morten in the dust? :) I know he had some bu gs to fix in his version.</p>\n<p>Also, I think we should really add the foaf: in front of the foaf properties to ma ke it easier to read. </p>\n<p>Other hack ideas:</p>\n<p>* Birthdate in month/date/year (seperate fields) to add bio :Event/ bio:Birth and then say who can see the birth year, birth day/mo and full birth date.<br />\n* Add trust leve ls to friends<br />\n* Storing ones PGP key/key fingerprint in Wordpress and referencing it as user_pubkey/user_pubk eyprint respectively<br />\n* Add gender, depiction picture for profile, myers-brigs, astrological sign fields to Pr ofile.<br />\n* Add the option to create Projects/Groups user is involved with re: their Profile.<br />\n* Maybe add phone numbers/address/geo location? Essentially make it a VCard that can be foafified.\n</p>\n'
|
|
38
|
+
|
|
39
|
+
triples = NTriplesParser.parse(str)
|
|
40
|
+
assert_equal 1, triples.size
|
|
41
|
+
|
|
42
|
+
encoded_content = triples.first[2]
|
|
43
|
+
assert_equal literal, encoded_content
|
|
44
|
+
assert_equal String, encoded_content.class
|
|
45
|
+
assert encoded_content.include?('PGP')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_escaped_quotes
|
|
49
|
+
string = '<subject> <predicate> "test string with \n breaks and \" escaped quotes" .'
|
|
50
|
+
literal = 'test string with \n breaks and \" escaped quotes'
|
|
51
|
+
triples = NTriplesParser.parse(string)
|
|
52
|
+
|
|
53
|
+
assert_equal 1, triples.size
|
|
54
|
+
assert_equal literal, triples.first[2]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_datatypes
|
|
58
|
+
string =<<EOF
|
|
59
|
+
<s> <p> "blue" .
|
|
60
|
+
<s> <p> "29"^^<http://www.w3.org/2001/XMLSchema#integer> .
|
|
61
|
+
<s> <p> "false"^^<http://www.w3.org/2001/XMLSchema#boolean> .
|
|
62
|
+
<s> <p> "2002-10-10T00:00:00+13"^^<http://www.w3.org/2001/XMLSchema#date> .
|
|
63
|
+
EOF
|
|
64
|
+
triples = NTriplesParser.parse(string)
|
|
65
|
+
assert_equal 4, triples.size
|
|
66
|
+
assert_equal 'blue', triples[0][2]
|
|
67
|
+
assert_equal 29, triples[1][2]
|
|
68
|
+
assert_equal triples[2][2], false
|
|
69
|
+
assert_equal triples[3][2], DateTime.parse('2002-10-10T00:00:00+13')
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require 'queryengine/query'
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
9
|
+
|
|
10
|
+
class TestQuery < Test::Unit::TestCase
|
|
11
|
+
def setup
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def teardown
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_sparql_generation
|
|
18
|
+
query = Query.new
|
|
19
|
+
query.select(:s)
|
|
20
|
+
query.where(:s, RDFS::Resource.new('predicate'), '30')
|
|
21
|
+
generated = Query2SPARQL.translate(query)
|
|
22
|
+
expected = "SELECT ?s WHERE { ?s <predicate> \"30\" . }"
|
|
23
|
+
assert_equal expected, generated
|
|
24
|
+
|
|
25
|
+
query = Query.new
|
|
26
|
+
query.select(:s)
|
|
27
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
28
|
+
query.where(:a, RDFS::Resource.new('rdf:type'), RDFS::Resource.new('xsd:int'))
|
|
29
|
+
generated = Query2SPARQL.translate(query)
|
|
30
|
+
expected = "SELECT ?s WHERE { ?s <foaf:age> ?a. ?a <rdf:type> <xsd:int> . }"
|
|
31
|
+
assert_equal expected, generated
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_sparql_distinct
|
|
35
|
+
query = Query.new
|
|
36
|
+
query.distinct(:s)
|
|
37
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
38
|
+
generated = Query2SPARQL.translate(query)
|
|
39
|
+
expected = "SELECT DISTINCT ?s WHERE { ?s <foaf:age> ?a . }"
|
|
40
|
+
assert_equal expected, generated
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_query_omnipotent
|
|
44
|
+
# can define multiple select clauses at once or separately
|
|
45
|
+
q1 = Query.new.select(:s,:a)
|
|
46
|
+
q2 = Query.new.select(:s).select(:a)
|
|
47
|
+
assert_equal Query2SPARQL.translate(q1),Query2SPARQL.translate(q2)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_query_refuses_string_in_where_clause_subject_or_predicate
|
|
51
|
+
assert_raises(ActiveRdfError)do
|
|
52
|
+
Query.new.select(:s).where("http://test.org/uri",:p, :o).execute
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require 'queryengine/query2jars2'
|
|
8
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
9
|
+
|
|
10
|
+
class TestQuery2Jars2 < Test::Unit::TestCase
|
|
11
|
+
def setup
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def teardown
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_sparql_generation
|
|
18
|
+
|
|
19
|
+
# TODO: write tests for distinct, ask
|
|
20
|
+
|
|
21
|
+
query = Query.new
|
|
22
|
+
query.select(:s)
|
|
23
|
+
query.where(:s, RDFS::Resource.new('predicate'), '30')
|
|
24
|
+
|
|
25
|
+
generated = Query2SPARQL.translate(query)
|
|
26
|
+
expected = "SELECT ?s WHERE { ?s <predicate> \"30\" . }"
|
|
27
|
+
assert_equal expected, generated
|
|
28
|
+
|
|
29
|
+
query = Query.new
|
|
30
|
+
query.select(:s)
|
|
31
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
32
|
+
query.where(:a, RDFS::Resource.new('rdf:type'), RDFS::Resource.new('xsd:int'))
|
|
33
|
+
generated = Query2SPARQL.translate(query)
|
|
34
|
+
expected = "SELECT ?s WHERE { ?s <foaf:age> ?a. ?a <rdf:type> <xsd:int> . }"
|
|
35
|
+
assert_equal expected, generated
|
|
36
|
+
|
|
37
|
+
# query = Query.new
|
|
38
|
+
# query.select(:s).select(:a)
|
|
39
|
+
# query.where(:s, 'foaf:age', :a)
|
|
40
|
+
# generated = Query2SPARQL.translate(query)
|
|
41
|
+
# expected = "SELECT DISTINCT ?s ?a WHERE { ?s foaf:age ?a .}"
|
|
42
|
+
# assert_equal expected, generated
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_query_omnipotent
|
|
46
|
+
# can define multiple select clauses at once or separately
|
|
47
|
+
q1 = Query.new.select(:s,:a)
|
|
48
|
+
q2 = Query.new.select(:s).select(:a)
|
|
49
|
+
assert_equal Query2SPARQL.translate(q1),Query2SPARQL.translate(q2)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
8
|
+
|
|
9
|
+
class TestQuery2Sparql < Test::Unit::TestCase
|
|
10
|
+
|
|
11
|
+
def test_sparql_generation
|
|
12
|
+
# TODO: write tests for distinct, ask
|
|
13
|
+
|
|
14
|
+
query = Query.new
|
|
15
|
+
query.select(:s)
|
|
16
|
+
query.where(:s, RDFS::Resource.new('predicate'), 30)
|
|
17
|
+
|
|
18
|
+
generated = Query2SPARQL.translate(query)
|
|
19
|
+
expected = "SELECT ?s WHERE { ?s <predicate> \"30\"^^<http://www.w3.org/2001/XMLSchema#integer> . } "
|
|
20
|
+
assert_equal expected, generated
|
|
21
|
+
|
|
22
|
+
query = Query.new
|
|
23
|
+
query.select(:s)
|
|
24
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
25
|
+
query.where(:a, RDFS::Resource.new('rdf:type'), RDFS::Resource.new('xsd:int'))
|
|
26
|
+
generated = Query2SPARQL.translate(query)
|
|
27
|
+
expected = "SELECT ?s WHERE { ?s <foaf:age> ?a . ?a <rdf:type> <xsd:int> . } "
|
|
28
|
+
assert_equal expected, generated
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_sparql_distinct
|
|
32
|
+
query = Query.new
|
|
33
|
+
query.distinct(:s)
|
|
34
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
35
|
+
generated = Query2SPARQL.translate(query)
|
|
36
|
+
expected = "SELECT DISTINCT ?s WHERE { ?s <foaf:age> ?a . } "
|
|
37
|
+
assert_equal expected, generated
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_query_omnipotent
|
|
41
|
+
# can define multiple select clauses at once or separately
|
|
42
|
+
q1 = Query.new.select(:s,:a)
|
|
43
|
+
q2 = Query.new.select(:s).select(:a)
|
|
44
|
+
assert_equal Query2SPARQL.translate(q1),Query2SPARQL.translate(q2)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_sort
|
|
48
|
+
q1 = Query.new.select(:s).sort(:s)
|
|
49
|
+
q2 = Query.new.select(:s).sort(:s, :p, :o)
|
|
50
|
+
q3 = Query.new.select(:s).reverse_sort(:s)
|
|
51
|
+
q4 = Query.new.select(:s).reverse_sort(:s, :p, :o)
|
|
52
|
+
q5 = Query.new.select(:s).sort(:s).reverse_sort(:p)
|
|
53
|
+
assert_equal "SELECT ?s WHERE { . } ORDER BY ASC(?s) ", Query2SPARQL.translate(q1)
|
|
54
|
+
assert_equal "SELECT ?s WHERE { . } ORDER BY ASC(?s) ASC(?p) ASC(?o) ", Query2SPARQL.translate(q2)
|
|
55
|
+
assert_equal "SELECT ?s WHERE { . } ORDER BY DESC(?s) ", Query2SPARQL.translate(q3)
|
|
56
|
+
assert_equal "SELECT ?s WHERE { . } ORDER BY DESC(?s) DESC(?p) DESC(?o) ", Query2SPARQL.translate(q4)
|
|
57
|
+
assert_equal "SELECT ?s WHERE { . } ORDER BY ASC(?s) DESC(?p) ", Query2SPARQL.translate(q5)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_execute_sort_query
|
|
61
|
+
ConnectionPool.clear
|
|
62
|
+
file_one = "#{File.dirname(__FILE__)}/../small-one.nt"
|
|
63
|
+
adapter = get_adapter
|
|
64
|
+
|
|
65
|
+
if (adapter.class.to_s != "SesameAdapter")
|
|
66
|
+
adapter.load file_one
|
|
67
|
+
else
|
|
68
|
+
adapter.load(file_one, 'ntriples')
|
|
69
|
+
end
|
|
70
|
+
@eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
|
|
71
|
+
@eye = RDFS::Resource.new 'http://activerdf.org/test/eye'
|
|
72
|
+
@eyal[@eye] << 'green'
|
|
73
|
+
assert_equal ["blue", "green"], Query.new.select(:o).where(@eyal, @eye, :o).limit(100).sort(:o).execute
|
|
74
|
+
assert_equal ["green", "blue"], Query.new.select(:o).where(@eyal, @eye, :o).limit(100).reverse_sort(:o).execute
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Author:: Eyal Oren
|
|
2
|
+
# Copyright:: (c) 2005-2006
|
|
3
|
+
# License:: LGPL
|
|
4
|
+
|
|
5
|
+
require 'test/unit'
|
|
6
|
+
require 'active_rdf'
|
|
7
|
+
require 'queryengine/query'
|
|
8
|
+
require 'queryengine/query2sparql'
|
|
9
|
+
require "#{File.dirname(__FILE__)}/../common"
|
|
10
|
+
|
|
11
|
+
class TestQueryEngine < Test::Unit::TestCase
|
|
12
|
+
def setup
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def teardown
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_sparql_generation
|
|
19
|
+
|
|
20
|
+
# TODO: write tests for distinct, ask
|
|
21
|
+
|
|
22
|
+
query = Query.new
|
|
23
|
+
query.select(:s)
|
|
24
|
+
query.where(:s, RDFS::Resource.new('predicate'), 30)
|
|
25
|
+
|
|
26
|
+
generated = Query2SPARQL.translate(query)
|
|
27
|
+
expected = "SELECT ?s WHERE { ?s <predicate> \"30\"^^<http://www.w3.org/2001/XMLSchema#integer> . } "
|
|
28
|
+
assert_equal expected, generated
|
|
29
|
+
|
|
30
|
+
query = Query.new
|
|
31
|
+
query.select(:s)
|
|
32
|
+
query.where(:s, RDFS::Resource.new('foaf:age'), :a)
|
|
33
|
+
query.where(:a, RDFS::Resource.new('rdf:type'), RDFS::Resource.new('xsd:int'))
|
|
34
|
+
generated = Query2SPARQL.translate(query)
|
|
35
|
+
expected = "SELECT ?s WHERE { ?s <foaf:age> ?a . ?a <rdf:type> <xsd:int> . } "
|
|
36
|
+
assert_equal expected, generated
|
|
37
|
+
|
|
38
|
+
# query = Query.new
|
|
39
|
+
# query.select(:s).select(:a)
|
|
40
|
+
# query.where(:s, 'foaf:age', :a)
|
|
41
|
+
# generated = Query2SPARQL.translate(query)
|
|
42
|
+
# expected = "SELECT DISTINCT ?s ?a WHERE { ?s foaf:age ?a .}"
|
|
43
|
+
# assert_equal expected, generated
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_query_omnipotent
|
|
47
|
+
# can define multiple select clauses at once or separately
|
|
48
|
+
q1 = Query.new.select(:s,:a)
|
|
49
|
+
q2 = Query.new.select(:s).select(:a)
|
|
50
|
+
assert_equal Query2SPARQL.translate(q1),Query2SPARQL.translate(q2)
|
|
51
|
+
end
|
|
52
|
+
end
|