activerdf_sparql 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ == activerdf_sparql (1.3.2) Thu, 09 Aug 2007 15:10:16 +0100
2
+ * support for LANG filters and engine-specific keyword search
3
+
1
4
  == activerdf_sparql (1.3.1) Fri, 03 Aug 2007 14:10:19 +0100
2
5
  * initial support for FILTERs
3
6
 
@@ -110,6 +110,31 @@ SPARQL adapter
110
110
 
111
111
 
112
112
 
113
+ <div id="attribute-list">
114
+ <h3 class="section-bar">Attributes</h3>
115
+
116
+ <div class="name-list">
117
+ <table>
118
+ <tr class="top-aligned-row context-row">
119
+ <td class="context-item-name">engine</td>
120
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
121
+ <td class="context-item-desc">
122
+ Instantiate the connection with the SPARQL Endpoint. available parameters:
123
+
124
+ <ul>
125
+ <li>:url =&gt; url: endpoint location e.g. &quot;<a
126
+ href="http://m3pe.org:8080/repositories/test-people">m3pe.org:8080/repositories/test-people</a>&quot;
127
+
128
+ </li>
129
+ <li>:results =&gt; one of :xml, :json, :sparql_xml
130
+
131
+ </li>
132
+ </ul>
133
+ </td>
134
+ </tr>
135
+ </table>
136
+ </div>
137
+ </div>
113
138
 
114
139
 
115
140
 
@@ -128,18 +153,6 @@ SPARQL adapter
128
153
  </div>
129
154
 
130
155
  <div class="method-description">
131
- <p>
132
- Instantiate the connection with the SPARQL Endpoint. available parameters:
133
- </p>
134
- <ul>
135
- <li>:url =&gt; url: endpoint location e.g. &quot;<a
136
- href="http://m3pe.org:8080/repositories/test-people">m3pe.org:8080/repositories/test-people</a>&quot;
137
-
138
- </li>
139
- <li>:results =&gt; one of :xml, :json, :sparql_xml
140
-
141
- </li>
142
- </ul>
143
156
  </div>
144
157
  </div>
145
158
 
@@ -10,19 +10,22 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 17</span>
14
- 17: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">params</span> = {})
15
- 18: <span class="ruby-ivar">@reads</span> = <span class="ruby-keyword kw">true</span>
16
- 19: <span class="ruby-ivar">@writes</span> = <span class="ruby-keyword kw">false</span>
17
- 20:
18
- 21: <span class="ruby-ivar">@url</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:url</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
19
- 22: <span class="ruby-ivar">@result_format</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:results</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:json</span>
20
- 23:
21
- 24: <span class="ruby-identifier">known_formats</span> = [<span class="ruby-identifier">:xml</span>, <span class="ruby-identifier">:json</span>, <span class="ruby-identifier">:sparql_xml</span>]
22
- 25: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-value str">&quot;Result format unsupported&quot;</span> <span class="ruby-keyword kw">unless</span>
23
- 26: <span class="ruby-identifier">known_formats</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@result_format</span>)
24
- 27:
25
- 28: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;Sparql adapter initialised #{inspect}&quot;</span>
26
- 29: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 19</span>
14
+ 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">params</span> = {})
15
+ 20: <span class="ruby-ivar">@reads</span> = <span class="ruby-keyword kw">true</span>
16
+ 21: <span class="ruby-ivar">@writes</span> = <span class="ruby-keyword kw">false</span>
17
+ 22:
18
+ 23: <span class="ruby-ivar">@url</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:url</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
19
+ 24: <span class="ruby-ivar">@result_format</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:results</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:json</span>
20
+ 25: <span class="ruby-ivar">@engine</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:engine</span>]
21
+ 26:
22
+ 27: <span class="ruby-identifier">supported_engines</span> = [<span class="ruby-identifier">:yars2</span>, <span class="ruby-identifier">:sesame2</span>, <span class="ruby-identifier">:joseki</span>, <span class="ruby-identifier">:virtuoso</span>]
23
+ 28: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-value str">&quot;SPARQL engine unsupported&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">supported_engines</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@engine</span>)
24
+ 29:
25
+ 30: <span class="ruby-identifier">known_formats</span> = [<span class="ruby-identifier">:xml</span>, <span class="ruby-identifier">:json</span>, <span class="ruby-identifier">:sparql_xml</span>]
26
+ 31: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-value str">&quot;Result format unsupported&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">known_formats</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@result_format</span>)
27
+ 32:
28
+ 33: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">info</span> <span class="ruby-node">&quot;SPARQL adapter initialised #{inspect}&quot;</span>
29
+ 34: <span class="ruby-keyword kw">end</span></pre>
27
30
  </body>
28
31
  </html>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 31</span>
14
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">size</span>
15
- 32: <span class="ruby-identifier">query</span>(<span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">select</span>(<span class="ruby-identifier">:s</span>,<span class="ruby-identifier">:p</span>,<span class="ruby-identifier">:o</span>).<span class="ruby-identifier">where</span>(<span class="ruby-identifier">:s</span>,<span class="ruby-identifier">:p</span>,<span class="ruby-identifier">:o</span>)).<span class="ruby-identifier">size</span>
16
- 33: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 36</span>
14
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">size</span>
15
+ 37: <span class="ruby-identifier">query</span>(<span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">select</span>(<span class="ruby-identifier">:s</span>,<span class="ruby-identifier">:p</span>,<span class="ruby-identifier">:o</span>).<span class="ruby-identifier">where</span>(<span class="ruby-identifier">:s</span>,<span class="ruby-identifier">:p</span>,<span class="ruby-identifier">:o</span>)).<span class="ruby-identifier">size</span>
16
+ 38: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -10,13 +10,11 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 37</span>
14
- 37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-identifier">query</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
15
- 38: <span class="ruby-identifier">time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
16
- 39: <span class="ruby-identifier">qs</span> = <span class="ruby-constant">Query2SPARQL</span>.<span class="ruby-identifier">translate</span>(<span class="ruby-identifier">query</span>)
17
- 40: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;executing sparql query #{query}&quot;</span>
18
- 41:
19
- 42: <span class="ruby-identifier">execute_sparql_query</span>(<span class="ruby-identifier">qs</span>, <span class="ruby-identifier">header</span>(<span class="ruby-identifier">query</span>), <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
20
- 43: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 42</span>
14
+ 42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-identifier">query</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
15
+ 43: <span class="ruby-identifier">time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
16
+ 44: <span class="ruby-identifier">qs</span> = <span class="ruby-constant">Query2SPARQL</span>.<span class="ruby-identifier">translate</span>(<span class="ruby-identifier">query</span>)
17
+ 45: <span class="ruby-identifier">execute_sparql_query</span>(<span class="ruby-identifier">qs</span>, <span class="ruby-identifier">header</span>(<span class="ruby-identifier">query</span>), <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
18
+ 46: <span class="ruby-keyword kw">end</span></pre>
21
19
  </body>
22
20
  </html>
@@ -10,43 +10,46 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 46</span>
14
- 46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">execute_sparql_query</span>(<span class="ruby-identifier">qs</span>, <span class="ruby-identifier">header</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
15
- 47: <span class="ruby-identifier">header</span> = <span class="ruby-identifier">header</span>(<span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">header</span>.<span class="ruby-identifier">nil?</span>
16
- 48:
17
- 49: <span class="ruby-comment cmt"># encoding query string in URL</span>
18
- 50: <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;#@url?query=#{CGI.escape(qs)}&quot;</span>
19
- 51: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;executing: requesting #{url}&quot;</span>
20
- 52:
21
- 53: <span class="ruby-comment cmt"># querying sparql endpoint</span>
22
- 54: <span class="ruby-identifier">response</span> = <span class="ruby-value str">''</span>
23
- 55: <span class="ruby-keyword kw">begin</span>
24
- 56: <span class="ruby-identifier">open</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">header</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
25
- 57: <span class="ruby-identifier">response</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span>
26
- 58: <span class="ruby-keyword kw">end</span>
27
- 59: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OpenURI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
28
- 60: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-node">&quot;could not query SPARQL endpoint, server said: #{e}&quot;</span>
29
- 61: <span class="ruby-keyword kw">return</span> []
30
- 62: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ECONNREFUSED</span>
31
- 63: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-value str">&quot;connection refused on SPARQL endpoint #@url&quot;</span>
32
- 64: <span class="ruby-keyword kw">return</span> []
33
- 65: <span class="ruby-keyword kw">end</span>
34
- 66:
35
- 67: <span class="ruby-comment cmt"># we parse content depending on the result format</span>
36
- 68: <span class="ruby-identifier">results</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@result_format</span>
37
- 69: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:json</span>
38
- 70: <span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">response</span>)
39
- 71: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:xml</span>, <span class="ruby-identifier">:sparql_xml</span>
40
- 72: <span class="ruby-identifier">parse_xml</span>(<span class="ruby-identifier">response</span>)
41
- 73: <span class="ruby-keyword kw">end</span>
42
- 74:
43
- 75: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
44
- 76: <span class="ruby-identifier">results</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">clauses</span><span class="ruby-operator">|</span>
45
- 77: <span class="ruby-keyword kw">yield</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">clauses</span>)
46
- 78: <span class="ruby-keyword kw">end</span>
47
- 79: <span class="ruby-keyword kw">else</span>
48
- 80: <span class="ruby-identifier">results</span>
49
- 81: <span class="ruby-keyword kw">end</span>
50
- 82: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/activerdf_sparql/sparql.rb, line 49</span>
14
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">execute_sparql_query</span>(<span class="ruby-identifier">qs</span>, <span class="ruby-identifier">header</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
15
+ 50: <span class="ruby-identifier">header</span> = <span class="ruby-identifier">header</span>(<span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">header</span>.<span class="ruby-identifier">nil?</span>
16
+ 51:
17
+ 52: <span class="ruby-comment cmt"># encoding query string in URL</span>
18
+ 53: <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;#@url?query=#{CGI.escape(qs)}&quot;</span>
19
+ 54: <span class="ruby-comment cmt">#url += &quot;&amp;content-type=#{CGI.escape('application/sparql-results+xml')}&quot; if @yars2</span>
20
+ 55: <span class="ruby-identifier">url</span> = <span class="ruby-identifier">url</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">&quot;DISTINCT&quot;</span>, <span class="ruby-value str">&quot;&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@yars2</span>
21
+ 56: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;executing: requesting #{url}&quot;</span>
22
+ 57:
23
+ 58: <span class="ruby-comment cmt"># querying sparql endpoint</span>
24
+ 59: <span class="ruby-identifier">response</span> = <span class="ruby-value str">''</span>
25
+ 60: <span class="ruby-keyword kw">begin</span>
26
+ 61: <span class="ruby-identifier">open</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">header</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
27
+ 62: <span class="ruby-identifier">response</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span>
28
+ 63: <span class="ruby-keyword kw">end</span>
29
+ 64: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OpenURI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
30
+ 65: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-node">&quot;could not query SPARQL endpoint, server said: #{e}&quot;</span>
31
+ 66: <span class="ruby-keyword kw">return</span> []
32
+ 67: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ECONNREFUSED</span>
33
+ 68: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRdfError</span>, <span class="ruby-value str">&quot;connection refused on SPARQL endpoint #@url&quot;</span>
34
+ 69: <span class="ruby-keyword kw">return</span> []
35
+ 70: <span class="ruby-keyword kw">end</span>
36
+ 71: <span class="ruby-identifier">$activerdflog</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;response:\n#{response}&quot;</span>
37
+ 72:
38
+ 73: <span class="ruby-comment cmt"># we parse content depending on the result format</span>
39
+ 74: <span class="ruby-identifier">results</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@result_format</span>
40
+ 75: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:json</span>
41
+ 76: <span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">response</span>)
42
+ 77: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:xml</span>, <span class="ruby-identifier">:sparql_xml</span>
43
+ 78: <span class="ruby-identifier">parse_xml</span>(<span class="ruby-identifier">response</span>)
44
+ 79: <span class="ruby-keyword kw">end</span>
45
+ 80:
46
+ 81: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
47
+ 82: <span class="ruby-identifier">results</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">clauses</span><span class="ruby-operator">|</span>
48
+ 83: <span class="ruby-keyword kw">yield</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">clauses</span>)
49
+ 84: <span class="ruby-keyword kw">end</span>
50
+ 85: <span class="ruby-keyword kw">else</span>
51
+ 86: <span class="ruby-identifier">results</span>
52
+ 87: <span class="ruby-keyword kw">end</span>
53
+ 88: <span class="ruby-keyword kw">end</span></pre>
51
54
  </body>
52
55
  </html>
data/doc/rdoc/created.rid CHANGED
@@ -1 +1 @@
1
- Fri, 03 Aug 2007 14:15:56 +0100
1
+ Thu, 09 Aug 2007 15:13:42 +0100
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri Aug 03 13:18:19 +0100 2007</td>
59
+ <td>Thu Aug 09 15:07:57 +0100 2007</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -4,7 +4,7 @@ require 'open-uri'
4
4
  require 'cgi'
5
5
  require 'rexml/document'
6
6
  require "#{File.dirname(__FILE__)}/sparql_result_parser"
7
-
7
+
8
8
  # SPARQL adapter
9
9
  class SparqlAdapter < ActiveRdfAdapter
10
10
  $activerdflog.info "loading SPARQL adapter"
@@ -14,18 +14,23 @@ class SparqlAdapter < ActiveRdfAdapter
14
14
  # available parameters:
15
15
  # * :url => url: endpoint location e.g. "http://m3pe.org:8080/repositories/test-people"
16
16
  # * :results => one of :xml, :json, :sparql_xml
17
+ attr_reader :engine
18
+
17
19
  def initialize(params = {})
18
20
  @reads = true
19
21
  @writes = false
20
22
 
21
23
  @url = params[:url] || ''
22
24
  @result_format = params[:results] || :json
25
+ @engine = params[:engine]
26
+
27
+ supported_engines = [:yars2, :sesame2, :joseki, :virtuoso]
28
+ raise ActiveRdfError, "SPARQL engine unsupported" unless supported_engines.include?(@engine)
23
29
 
24
30
  known_formats = [:xml, :json, :sparql_xml]
25
- raise ActiveRdfError, "Result format unsupported" unless
26
- known_formats.include?(@result_format)
31
+ raise ActiveRdfError, "Result format unsupported" unless known_formats.include?(@result_format)
27
32
 
28
- $activerdflog.info "Sparql adapter initialised #{inspect}"
33
+ $activerdflog.info "SPARQL adapter initialised #{inspect}"
29
34
  end
30
35
 
31
36
  def size
@@ -37,8 +42,6 @@ class SparqlAdapter < ActiveRdfAdapter
37
42
  def query(query, &block)
38
43
  time = Time.now
39
44
  qs = Query2SPARQL.translate(query)
40
- $activerdflog.debug "executing sparql query #{query}"
41
-
42
45
  execute_sparql_query(qs, header(query), &block)
43
46
  end
44
47
 
@@ -48,6 +51,8 @@ class SparqlAdapter < ActiveRdfAdapter
48
51
 
49
52
  # encoding query string in URL
50
53
  url = "#@url?query=#{CGI.escape(qs)}"
54
+ #url += "&content-type=#{CGI.escape('application/sparql-results+xml')}" if @yars2
55
+ url = url.gsub("DISTINCT", "") if @yars2
51
56
  $activerdflog.debug "executing: requesting #{url}"
52
57
 
53
58
  # querying sparql endpoint
@@ -63,6 +68,7 @@ class SparqlAdapter < ActiveRdfAdapter
63
68
  raise ActiveRdfError, "connection refused on SPARQL endpoint #@url"
64
69
  return []
65
70
  end
71
+ $activerdflog.debug "response:\n#{response}"
66
72
 
67
73
  # we parse content depending on the result format
68
74
  results = case @result_format
@@ -96,6 +102,8 @@ class SparqlAdapter < ActiveRdfAdapter
96
102
 
97
103
  # parse json query results into array
98
104
  def parse_json(s)
105
+ # this will try to first load json with the native c extensions,
106
+ # and if this fails json_pure will be loaded
99
107
  require 'json'
100
108
 
101
109
  parsed_object = JSON.parse(s)
@@ -7,12 +7,11 @@ require 'test/unit'
7
7
  require 'federation/federation_manager'
8
8
  require 'queryengine/query'
9
9
 
10
+
10
11
  class TestSparqlAdapter < Test::Unit::TestCase
11
12
  def setup
12
13
  ConnectionPool.clear
13
- @adapter = ConnectionPool.add(:type => :sparql,
14
- :url => "http://m3pe.org:8080/repositories/test-people/",
15
- :results => :sparql_xml)
14
+ @adapter = ConnectionPool.add(:type => :sparql, :url => 'http://dbpedia.org/sparql')
16
15
  end
17
16
 
18
17
  def teardown
@@ -22,97 +21,81 @@ class TestSparqlAdapter < Test::Unit::TestCase
22
21
  assert_instance_of SparqlAdapter, @adapter
23
22
  end
24
23
 
25
- def test_simple_query
26
- begin
27
- result = Query.new.select(:s).where(:s, Namespace.lookup(:rdf,:type), :t).execute.first
28
- rescue
29
- # don't fail if SPARQL server doesn't respond
30
- else
31
- assert_instance_of RDFS::Resource, result
32
-
33
- second_result = Query.new.select(:s, :p).where(:s, :p, 27).execute.flatten
34
- assert_equal 2, second_result.size
35
- assert_instance_of RDFS::Resource, second_result[0]
36
- assert_instance_of RDFS::Resource, second_result[1]
37
- end
24
+ def test_language
25
+ Query.new.distinct(:o).where(:s,:p,:o).limit(2).lang('en').execute
38
26
  end
39
27
 
40
- def test_query_with_block
41
- begin
42
- reached_block = false
43
- Query.new.select(:s,:p).where(:s,:p, 27).execute do |s,p|
44
- reached_block = true
45
- assert_equal 'http://activerdf.org/test/eyal', s.uri
46
- assert_equal 'http://activerdf.org/test/age', p.uri
47
- end
48
- assert reached_block, "querying with a block does not work"
49
- rescue
50
- end
28
+ def test_limit_offset
29
+ one = Query.new.select(:s).where(:s,:p,:o).limit(10).execute
30
+ assert_equal 10, one.size
31
+
32
+ one.all? do |r|
33
+ assert_instance_of RDFS::Resource, r
34
+ end
35
+
36
+ two = Query.new.select(:s).where(:s,:p,:o).limit(10).offset(1).execute
37
+ assert_equal 10, two.size
38
+ assert_equal one[1], two[0]
39
+
40
+ three = Query.new.select(:s).where(:s,:p,:o).limit(10).offset(0).execute
41
+ assert_equal one, three
51
42
  end
52
43
 
53
- def test_refuse_to_write
54
- begin
55
- eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
56
- age = RDFS::Resource.new 'foaf:age'
57
- test = RDFS::Resource.new 'test'
58
-
59
- # NameError gets thown if the method is unknown
60
- assert_raises NoMethodError do
61
- @adapter.add(eyal, age, test)
62
- end
63
- rescue
64
- end
44
+ def test_regex_filter
45
+ Namespace.register :yago, 'http://dbpedia.org/class/yago/'
46
+ Namespace.register :dbpedia, 'http://dbpedia.org/property/'
47
+
48
+ movies = Query.new.
49
+ select(:title).
50
+ where(:film, RDF.type, RDFS::Resource.new('http://dbpedia.org/class/yago/film')).
51
+ where(:film, RDFS.label, :title).
52
+ where(:title, RDFS::Resource.new('bif:contains'), 'kill').
53
+ filter_regex(:title, /Kill$/).execute
54
+
55
+ assert !movies.empty?
56
+ assert movies.all? {|m| m =~ /Kill$/ }
57
+ end
58
+
59
+ def test_query_with_block
60
+ reached_block = false
61
+ Query.new.select(:s, :p).where(:s,:p,:o).limit(1).execute do |s, p|
62
+ reached_block = true
63
+ assert_equal RDFS::Resource, s.class
64
+ assert_equal RDFS::Resource, p.class
65
+ end
66
+ assert reached_block, "querying with a block does not work"
67
+
68
+ reached_block = false
69
+ Query.new.select(:s, :p).where(:s,:p,:o).limit(3).execute do |s, p|
70
+ reached_block = true
71
+ assert_equal RDFS::Resource, s.class
72
+ assert_equal RDFS::Resource, p.class
73
+ end
74
+ assert reached_block, "querying with a block does not work"
75
+
76
+ reached_block = false
77
+ Query.new.select(:s).where(:s,:p,:o).limit(3).execute do |s|
78
+ reached_block = true
79
+ assert_equal RDFS::Resource, s.class
80
+ end
81
+
82
+ assert reached_block, "querying with a block does not work"
65
83
  end
66
84
 
67
- def test_federated_query
68
- begin
69
- # we first ask one sparql endpoint
70
- first_size = Query.new.select(:o).where(:s, :p, :o).execute(:flatten => false).size
71
- ConnectionPool.clear
72
-
73
- # then we ask the second endpoint
74
- ConnectionPool.add_data_source(:type => :sparql,
75
- :url => "http://www.m3pe.org:8080/repositories/mindpeople",
76
- :results => :sparql_xml)
77
-
78
- second_size = Query.new.select(:o).where(:s, :p, :o).execute.size
79
-
80
- ConnectionPool.clear
81
-
82
- # now we ask both
83
- ConnectionPool.add_data_source(:type => :sparql,
84
- :url => "http://www.m3pe.org:8080/repositories/test-people/",
85
- :results => :sparql_xml)
86
- ConnectionPool.add_data_source(:type => :sparql,
87
- :url => "http://www.m3pe.org:8080/repositories/mindpeople",
88
- :results => :sparql_xml)
89
-
90
- union_size = Query.new.select(:o).where(:s, :p, :o).execute.size
91
- assert_equal union_size, first_size + second_size
92
- rescue
93
- end
85
+ def test_refuse_to_write
86
+ eyal = RDFS::Resource.new 'http://activerdf.org/test/eyal'
87
+ age = RDFS::Resource.new 'foaf:age'
88
+ test = RDFS::Resource.new 'test'
89
+
90
+ # NameError gets thown if the method is unknown
91
+ assert_raises NoMethodError do
92
+ @adapter.add(eyal, age, test)
93
+ end
94
94
  end
95
95
 
96
- def test_person_data
97
- begin
98
- eyal = RDFS::Resource.new("http://activerdf.org/test/eyal")
99
- eye = RDFS::Resource.new("http://activerdf.org/test/eye")
100
- type = RDFS::Resource.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
101
- age = RDFS::Resource.new("http://activerdf.org/test/age")
102
- person = RDFS::Resource.new("http://www.w3.org/2000/01/rdf-schema#Resource")
103
- resource = RDFS::Resource.new("http://activerdf.org/test/Person")
104
-
105
- color = Query.new.select(:o).where(eyal, eye,:o).execute.first
106
- assert_equal 'blue', color
107
- assert_instance_of String, color
108
-
109
- age_result = Query.new.select(:o).where(eyal, age, :o).execute.first.to_i
110
- assert_equal 27, age_result
111
-
112
- types_result = Query.new.select(:o).where(eyal, type, :o).execute
113
- assert types_result.include?(person)
114
- assert types_result.include?(resource)
115
- rescue
116
- end
96
+ def test_literal_conversion
97
+ # test literal conversion
98
+ label = Query.new.distinct(:label).where(:s, RDFS::label, :label).limit(1).execute(:flatten)
99
+ assert_instance_of String, label
117
100
  end
118
101
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: activerdf_sparql
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.3.1
7
- date: 2007-08-03 00:00:00 +01:00
6
+ version: 1.3.2
7
+ date: 2007-08-09 00:00:00 +01:00
8
8
  summary: ActiveRDF adapter to SPARQL endpoint
9
9
  require_paths:
10
10
  - lib
@@ -32,6 +32,15 @@ files:
32
32
  - LICENSE
33
33
  - README
34
34
  - CHANGELOG
35
+ - doc/rdoc/rdoc-style.css
36
+ - doc/rdoc/files
37
+ - doc/rdoc/files/README.html
38
+ - doc/rdoc/files/LICENSE.html
39
+ - doc/rdoc/files/lib
40
+ - doc/rdoc/files/lib/activerdf_sparql
41
+ - doc/rdoc/files/lib/activerdf_sparql/sparql_rb.html
42
+ - doc/rdoc/files/lib/activerdf_sparql/init_rb.html
43
+ - doc/rdoc/files/lib/activerdf_sparql/sparql_result_parser_rb.html
35
44
  - doc/rdoc/classes
36
45
  - doc/rdoc/classes/SparqlAdapter.src
37
46
  - doc/rdoc/classes/SparqlAdapter.src/M000001.html
@@ -47,20 +56,11 @@ files:
47
56
  - doc/rdoc/classes/SparqlResultParser.src/M000010.html
48
57
  - doc/rdoc/classes/SparqlAdapter.html
49
58
  - doc/rdoc/classes/SparqlResultParser.html
50
- - doc/rdoc/files
51
- - doc/rdoc/files/lib
52
- - doc/rdoc/files/lib/activerdf_sparql
53
- - doc/rdoc/files/lib/activerdf_sparql/init_rb.html
54
- - doc/rdoc/files/lib/activerdf_sparql/sparql_rb.html
55
- - doc/rdoc/files/lib/activerdf_sparql/sparql_result_parser_rb.html
56
- - doc/rdoc/files/LICENSE.html
57
- - doc/rdoc/files/README.html
58
- - doc/rdoc/created.rid
59
- - doc/rdoc/fr_class_index.html
60
59
  - doc/rdoc/fr_file_index.html
60
+ - doc/rdoc/fr_class_index.html
61
61
  - doc/rdoc/fr_method_index.html
62
62
  - doc/rdoc/index.html
63
- - doc/rdoc/rdoc-style.css
63
+ - doc/rdoc/created.rid
64
64
  - test/test_sparql_adapter.rb
65
65
  - lib/activerdf_sparql
66
66
  - lib/activerdf_sparql/sparql.rb
@@ -98,11 +98,11 @@ dependencies:
98
98
  version: 0.9.2
99
99
  version:
100
100
  - !ruby/object:Gem::Dependency
101
- name: json
101
+ name: json_pure
102
102
  version_requirement:
103
103
  version_requirements: !ruby/object:Gem::Version::Requirement
104
104
  requirements:
105
- - - ">"
105
+ - - ">="
106
106
  - !ruby/object:Gem::Version
107
- version: 0.0.0
107
+ version: 1.1.1
108
108
  version: