activerdf_sparql 1.3.1 → 1.3.2

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 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: