pho 0.4.1 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/CHANGES +18 -1
  2. data/README +10 -0
  3. data/Rakefile +2 -1
  4. data/doc/rdoc/classes/Pho.html +33 -22
  5. data/doc/rdoc/classes/Pho/DatatypeProperty.html +12 -12
  6. data/doc/rdoc/classes/Pho/{RDF_JSON.html → Enrichment.html} +8 -7
  7. data/doc/rdoc/classes/Pho/Enrichment/ResourceEnricher.html +310 -0
  8. data/doc/rdoc/classes/Pho/Etags.html +42 -42
  9. data/doc/rdoc/classes/Pho/Facet/Results.html +19 -19
  10. data/doc/rdoc/classes/Pho/Facet/Term.html +6 -6
  11. data/doc/rdoc/classes/Pho/FieldPredicateMap.html +110 -105
  12. data/doc/rdoc/classes/Pho/FieldWeighting.html +12 -12
  13. data/doc/rdoc/classes/Pho/FileManagement.html +121 -0
  14. data/doc/rdoc/classes/Pho/FileManagement/AbstractFileManager.html +443 -0
  15. data/doc/rdoc/classes/Pho/FileManagement/FileManager.html +258 -0
  16. data/doc/rdoc/classes/Pho/FileManagement/RDFManager.html +271 -0
  17. data/doc/rdoc/classes/Pho/Job.html +64 -64
  18. data/doc/rdoc/classes/Pho/Jobs.html +60 -60
  19. data/doc/rdoc/classes/Pho/QueryProfile.html +60 -60
  20. data/doc/rdoc/classes/Pho/RDFCollection.html +4 -378
  21. data/doc/rdoc/classes/Pho/ResourceHash.html +123 -0
  22. data/doc/rdoc/classes/Pho/ResourceHash/Converter.html +323 -0
  23. data/doc/rdoc/classes/Pho/{RDF_JSON → ResourceHash}/SetAlgebra.html +18 -18
  24. data/doc/rdoc/classes/Pho/Snapshot.html +35 -35
  25. data/doc/rdoc/classes/Pho/Sparql.html +137 -0
  26. data/doc/rdoc/classes/Pho/Sparql/SparqlClient.html +515 -0
  27. data/doc/rdoc/classes/Pho/Sparql/SparqlHelper.html +575 -0
  28. data/doc/rdoc/classes/Pho/Status.html +26 -26
  29. data/doc/rdoc/classes/Pho/Store.html +271 -241
  30. data/doc/rdoc/classes/Pho/Update/Changeset.html +73 -73
  31. data/doc/rdoc/classes/Pho/Update/ChangesetBuilder.html +34 -34
  32. data/doc/rdoc/classes/Pho/Update/Changesets.html +14 -14
  33. data/doc/rdoc/classes/Pho/Update/LiteralStatement.html +31 -23
  34. data/doc/rdoc/classes/Pho/Update/ResourceStatement.html +45 -21
  35. data/doc/rdoc/classes/Pho/Update/Statement.html +29 -29
  36. data/doc/rdoc/classes/String.html +1 -1
  37. data/doc/rdoc/created.rid +1 -1
  38. data/doc/rdoc/files/CHANGES.html +49 -3
  39. data/doc/rdoc/files/README.html +15 -1
  40. data/doc/rdoc/files/lib/pho/changeset_builder_rb.html +1 -1
  41. data/doc/rdoc/files/lib/pho/changeset_rb.html +1 -1
  42. data/doc/rdoc/files/lib/pho/converter_rb.html +108 -0
  43. data/doc/rdoc/files/lib/pho/enrichment_rb.html +101 -0
  44. data/doc/rdoc/files/lib/pho/etags_rb.html +1 -1
  45. data/doc/rdoc/files/lib/pho/field_predicate_map_rb.html +1 -1
  46. data/doc/rdoc/files/lib/pho/file_management_rb.html +101 -0
  47. data/doc/rdoc/files/lib/pho/file_manager_rb.html +108 -0
  48. data/doc/rdoc/files/lib/pho/rdf_collection_rb.html +1 -1
  49. data/doc/rdoc/files/lib/pho/resource_hash_rb.html +101 -0
  50. data/doc/rdoc/files/lib/pho/{rdf_json_rb.html → sparql_rb.html} +4 -4
  51. data/doc/rdoc/files/lib/pho/store_rb.html +1 -1
  52. data/doc/rdoc/files/lib/pho_rb.html +7 -2
  53. data/doc/rdoc/fr_class_index.html +12 -2
  54. data/doc/rdoc/fr_file_index.html +6 -1
  55. data/doc/rdoc/fr_method_index.html +176 -139
  56. data/examples/sparql_construct_hash.rb +26 -0
  57. data/examples/sparql_select.rb +18 -0
  58. data/lib/pho.rb +6 -1
  59. data/lib/pho/changeset.rb +24 -9
  60. data/lib/pho/changeset_builder.rb +10 -10
  61. data/lib/pho/converter.rb +74 -0
  62. data/lib/pho/enrichment.rb +81 -0
  63. data/lib/pho/etags.rb +1 -0
  64. data/lib/pho/field_predicate_map.rb +6 -1
  65. data/lib/pho/file_management.rb +102 -0
  66. data/lib/pho/file_manager.rb +61 -0
  67. data/lib/pho/rdf_collection.rb +54 -120
  68. data/lib/pho/{rdf_json.rb → resource_hash.rb} +3 -4
  69. data/lib/pho/sparql.rb +332 -0
  70. data/lib/pho/store.rb +20 -14
  71. data/tests/tc_changeset.rb +46 -0
  72. data/tests/tc_changeset_builder.rb +122 -1
  73. data/tests/tc_converter.rb +95 -0
  74. data/tests/tc_enrichment.rb +83 -0
  75. data/tests/tc_file_manager.rb +88 -0
  76. data/tests/tc_rdf_collection.rb +3 -0
  77. data/tests/{tc_rdf_json.rb → tc_resource_hash.rb} +23 -23
  78. data/tests/tc_search.rb +1 -1
  79. data/tests/tc_sparql.rb +131 -6
  80. data/tests/tc_sparql_helper.rb +214 -0
  81. data/tests/ts_pho.rb +6 -2
  82. metadata +47 -8
data/CHANGES CHANGED
@@ -2,11 +2,28 @@ Brief notes on significant changes and additions in each release
2
2
 
3
3
  == Version 0.5
4
4
 
5
+ NOTE: Released 0.4.1 version of the gem at this point to support earlier versions of
6
+ Ruby.
7
+
8
+ * Added Enrichment module to support updating a store with results of simple inference (using
9
+ CONSTRUCT queries), merging data from external endpoints, and support for parameterized
10
+ lookup and enrichment of resources
11
+ * Added SparqlClient.multi_describe
12
+ * Added additional methods in SparqlHelper to support applying initial bindings to queries, and
13
+ generating initial bindings from SELECT results
14
+ * Added Pho::FileManagement::FileManager for pushing a directory of files into the content box
15
+ * RDFCollection is now deprecated
16
+ * Added Pho::FileManagement module and extracted code from RDFCollection to support creating similar util for other files
17
+ * Added SparqlHelper class to simplify a few common tasks
18
+ * Added new Sparql module and refactored store methods to use SparqlClient class
19
+ * Fixed bug in store.augment() method which was setting wrong headers on POST
20
+ * Added Converter class to convert between various RDF serializations and resource hashes. This uses the Redland API.
21
+ * Support Ruby 1.8.5 or above (to allow installation on Centos 5)
5
22
  * Support for storing data in private graphs as well as metabox
6
23
  * Support for submission of changesets to private graphs as well as metabox
7
24
  * Multisparql options on all Store sparql methods
8
25
  * Addition of ChangeSetBuilder class for constructing changesets from triple hashes
9
- * Addition of RDF_JSON module and SetAlgebra class for working with triple hashes
26
+ * Addition of ResourceHash module and SetAlgebra class for working with triple hashes
10
27
  * Addition of Changeset, Statement classes for capturing and serializing Changeset data
11
28
  * Fixed bugs in facet, search params
12
29
  * Added submit_changeset method to Store to support submission of changeset data
data/README CHANGED
@@ -11,6 +11,16 @@ The latest version of this library can be downloaded from:
11
11
 
12
12
  http://pho.rubyforge.net
13
13
 
14
+ == Installation
15
+
16
+ From the 0.5 release onwards, Pho is dependent on the Ruby bindings for the Redland RDF library.
17
+ Ensure you have the librdf0 and librdf-ruby packages installed.
18
+
19
+ All other dependencies are for specific Ruby gems which should get automatically installed,
20
+ along with the Pho gem itself, by running:
21
+
22
+ sudo gem install pho
23
+
14
24
  == Usage
15
25
 
16
26
  To use Pho you can:
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/testtask'
5
5
  require 'rake/clean'
6
6
 
7
7
  NAME = "pho"
8
- VER = "0.4.1"
8
+ VER = "0.5"
9
9
 
10
10
  RDOC_OPTS = ['--quiet', '--title', 'Pho (Talis Platform Client) Reference', '--main', 'README']
11
11
 
@@ -36,6 +36,7 @@ SPEC =
36
36
  s.add_dependency("httpclient", ">= 2.1.3.1")
37
37
  s.add_dependency("json", ">= 1.1.3")
38
38
  s.add_dependency("mocha", ">= 0.9.5")
39
+ s.add_dependency("mime-types", ">= 1.16")
39
40
  end
40
41
 
41
42
  Rake::GemPackageTask.new(SPEC) do |pkg|
@@ -63,13 +63,17 @@
63
63
  lib/pho/changeset_builder.rb
64
64
  </a>
65
65
  <br />
66
- <a href="../files/lib/pho/rdf_json_rb.html">
67
- lib/pho/rdf_json.rb
66
+ <a href="../files/lib/pho/file_manager_rb.html">
67
+ lib/pho/file_manager.rb
68
68
  </a>
69
69
  <br />
70
70
  <a href="../files/lib/pho/etags_rb.html">
71
71
  lib/pho/etags.rb
72
72
  </a>
73
+ <br />
74
+ <a href="../files/lib/pho/enrichment_rb.html">
75
+ lib/pho/enrichment.rb
76
+ </a>
73
77
  <br />
74
78
  <a href="../files/lib/pho/status_rb.html">
75
79
  lib/pho/status.rb
@@ -78,6 +82,10 @@
78
82
  <a href="../files/lib/pho/rdf_collection_rb.html">
79
83
  lib/pho/rdf_collection.rb
80
84
  </a>
85
+ <br />
86
+ <a href="../files/lib/pho/converter_rb.html">
87
+ lib/pho/converter.rb
88
+ </a>
81
89
  <br />
82
90
  <a href="../files/lib/pho/store_rb.html">
83
91
  lib/pho/store.rb
@@ -86,10 +94,22 @@
86
94
  <a href="../files/lib/pho/field_predicate_map_rb.html">
87
95
  lib/pho/field_predicate_map.rb
88
96
  </a>
97
+ <br />
98
+ <a href="../files/lib/pho/sparql_rb.html">
99
+ lib/pho/sparql.rb
100
+ </a>
101
+ <br />
102
+ <a href="../files/lib/pho/resource_hash_rb.html">
103
+ lib/pho/resource_hash.rb
104
+ </a>
89
105
  <br />
90
106
  <a href="../files/lib/pho/changeset_rb.html">
91
107
  lib/pho/changeset.rb
92
108
  </a>
109
+ <br />
110
+ <a href="../files/lib/pho/file_management_rb.html">
111
+ lib/pho/file_management.rb
112
+ </a>
93
113
  <br />
94
114
  <a href="../files/lib/pho/facet_rb.html">
95
115
  lib/pho/facet.rb
@@ -120,6 +140,12 @@
120
140
 
121
141
  <div id="contextContent">
122
142
 
143
+ <div id="description">
144
+ <p>
145
+ TODO put together proper test suite for this
146
+ </p>
147
+
148
+ </div>
123
149
 
124
150
 
125
151
  </div>
@@ -135,8 +161,11 @@
135
161
  <div id="class-list">
136
162
  <h3 class="section-bar">Classes and Modules</h3>
137
163
 
138
- Module <a href="Pho/Facet.html" class="link">Pho::Facet</a><br />
139
- Module <a href="Pho/RDF_JSON.html" class="link">Pho::RDF_JSON</a><br />
164
+ Module <a href="Pho/Enrichment.html" class="link">Pho::Enrichment</a><br />
165
+ Module <a href="Pho/Facet.html" class="link">Pho::Facet</a><br />
166
+ Module <a href="Pho/FileManagement.html" class="link">Pho::FileManagement</a><br />
167
+ Module <a href="Pho/ResourceHash.html" class="link">Pho::ResourceHash</a><br />
168
+ Module <a href="Pho/Sparql.html" class="link">Pho::Sparql</a><br />
140
169
  Module <a href="Pho/Update.html" class="link">Pho::Update</a><br />
141
170
  Class <a href="Pho/Analyzers.html" class="link">Pho::Analyzers</a><br />
142
171
  Class <a href="Pho/DatatypeProperty.html" class="link">Pho::DatatypeProperty</a><br />
@@ -211,24 +240,6 @@ Cannot access the store
211
240
 
212
241
 
213
242
 
214
- <div id="attribute-list">
215
- <h3 class="section-bar">Attributes</h3>
216
-
217
- <div class="name-list">
218
- <table>
219
- <tr class="top-aligned-row context-row">
220
- <td class="context-item-name">dir</td>
221
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
222
- <td class="context-item-desc"></td>
223
- </tr>
224
- <tr class="top-aligned-row context-row">
225
- <td class="context-item-name">store</td>
226
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
227
- <td class="context-item-desc"></td>
228
- </tr>
229
- </table>
230
- </div>
231
- </div>
232
243
 
233
244
 
234
245
 
@@ -92,8 +92,8 @@ Captures information about a mapped datatype from a Field Predicate Map
92
92
  <h3 class="section-bar">Methods</h3>
93
93
 
94
94
  <div class="name-list">
95
- <a href="#M000073">new</a>&nbsp;&nbsp;
96
- <a href="#M000074">to_rdf</a>&nbsp;&nbsp;
95
+ <a href="#M000120">new</a>&nbsp;&nbsp;
96
+ <a href="#M000121">to_rdf</a>&nbsp;&nbsp;
97
97
  </div>
98
98
  </div>
99
99
 
@@ -155,19 +155,19 @@ URI for this mapping
155
155
  <div id="methods">
156
156
  <h3 class="section-bar">Public Class methods</h3>
157
157
 
158
- <div id="method-M000073" class="method-detail">
159
- <a name="M000073"></a>
158
+ <div id="method-M000120" class="method-detail">
159
+ <a name="M000120"></a>
160
160
 
161
161
  <div class="method-heading">
162
- <a href="#M000073" class="method-signature">
162
+ <a href="#M000120" class="method-signature">
163
163
  <span class="method-name">new</span><span class="method-args">(uri, property_uri, name, analyzer=nil)</span>
164
164
  </a>
165
165
  </div>
166
166
 
167
167
  <div class="method-description">
168
168
  <p><a class="source-toggle" href="#"
169
- onclick="toggleCode('M000073-source');return false;">[Source]</a></p>
170
- <div class="method-source-code" id="M000073-source">
169
+ onclick="toggleCode('M000120-source');return false;">[Source]</a></p>
170
+ <div class="method-source-code" id="M000120-source">
171
171
  <pre>
172
172
  <span class="ruby-comment cmt"># File lib/pho/field_predicate_map.rb, line 64</span>
173
173
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-identifier">property_uri</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">analyzer</span>=<span class="ruby-keyword kw">nil</span>)
@@ -183,11 +183,11 @@ URI for this mapping
183
183
 
184
184
  <h3 class="section-bar">Public Instance methods</h3>
185
185
 
186
- <div id="method-M000074" class="method-detail">
187
- <a name="M000074"></a>
186
+ <div id="method-M000121" class="method-detail">
187
+ <a name="M000121"></a>
188
188
 
189
189
  <div class="method-heading">
190
- <a href="#M000074" class="method-signature">
190
+ <a href="#M000121" class="method-signature">
191
191
  <span class="method-name">to_rdf</span><span class="method-args">(ns=true)</span>
192
192
  </a>
193
193
  </div>
@@ -203,8 +203,8 @@ rdf:Description, optionally including namespaces
203
203
  </td></tr>
204
204
  </table>
205
205
  <p><a class="source-toggle" href="#"
206
- onclick="toggleCode('M000074-source');return false;">[Source]</a></p>
207
- <div class="method-source-code" id="M000074-source">
206
+ onclick="toggleCode('M000121-source');return false;">[Source]</a></p>
207
+ <div class="method-source-code" id="M000121-source">
208
208
  <pre>
209
209
  <span class="ruby-comment cmt"># File lib/pho/field_predicate_map.rb, line 73</span>
210
210
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_rdf</span>(<span class="ruby-identifier">ns</span>=<span class="ruby-keyword kw">true</span>)
@@ -5,7 +5,7 @@
5
5
 
6
6
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
7
  <head>
8
- <title>Module: Pho::RDF_JSON</title>
8
+ <title>Module: Pho::Enrichment</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
11
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
@@ -50,13 +50,13 @@
50
50
  <table class="header-table">
51
51
  <tr class="top-aligned-row">
52
52
  <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">Pho::RDF_JSON</td>
53
+ <td class="class-name-in-header">Pho::Enrichment</td>
54
54
  </tr>
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
- <a href="../../files/lib/pho/rdf_json_rb.html">
59
- lib/pho/rdf_json.rb
58
+ <a href="../../files/lib/pho/enrichment_rb.html">
59
+ lib/pho/enrichment.rb
60
60
  </a>
61
61
  <br />
62
62
  </td>
@@ -74,8 +74,9 @@
74
74
 
75
75
  <div id="description">
76
76
  <p>
77
- Module providing code for manipulating triple hashes structured according
78
- to the RDF in JSON spec
77
+ <a href="Enrichment.html">Enrichment</a> module. Provides classes and
78
+ mixins for enriching data held in Platform stores using external SPARQL
79
+ endpoints and services
79
80
  </p>
80
81
 
81
82
  </div>
@@ -94,7 +95,7 @@ to the RDF in JSON spec
94
95
  <div id="class-list">
95
96
  <h3 class="section-bar">Classes and Modules</h3>
96
97
 
97
- Class <a href="RDF_JSON/SetAlgebra.html" class="link">Pho::RDF_JSON::SetAlgebra</a><br />
98
+ Class <a href="Enrichment/ResourceEnricher.html" class="link">Pho::Enrichment::ResourceEnricher</a><br />
98
99
 
99
100
  </div>
100
101
 
@@ -0,0 +1,310 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Pho::Enrichment::ResourceEnricher</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Pho::Enrichment::ResourceEnricher</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../../files/lib/pho/enrichment_rb.html">
59
+ lib/pho/enrichment.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000072">enrich</a>&nbsp;&nbsp;
90
+ <a href="#M000070">infer</a>&nbsp;&nbsp;
91
+ <a href="#M000071">merge</a>&nbsp;&nbsp;
92
+ <a href="#M000069">new</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
95
+
96
+ </div>
97
+
98
+
99
+ <!-- if includes -->
100
+
101
+ <div id="section">
102
+
103
+
104
+
105
+
106
+
107
+ <div id="attribute-list">
108
+ <h3 class="section-bar">Attributes</h3>
109
+
110
+ <div class="name-list">
111
+ <table>
112
+ <tr class="top-aligned-row context-row">
113
+ <td class="context-item-name">sparql_client</td>
114
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
115
+ <td class="context-item-desc"></td>
116
+ </tr>
117
+ <tr class="top-aligned-row context-row">
118
+ <td class="context-item-name">store</td>
119
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
120
+ <td class="context-item-desc"></td>
121
+ </tr>
122
+ </table>
123
+ </div>
124
+ </div>
125
+
126
+
127
+
128
+ <!-- if method_list -->
129
+ <div id="methods">
130
+ <h3 class="section-bar">Public Class methods</h3>
131
+
132
+ <div id="method-M000070" class="method-detail">
133
+ <a name="M000070"></a>
134
+
135
+ <div class="method-heading">
136
+ <a href="#M000070" class="method-signature">
137
+ <span class="method-name">infer</span><span class="method-args">(store, query)</span>
138
+ </a>
139
+ </div>
140
+
141
+ <div class="method-description">
142
+ <p>
143
+ Enrich a store against itself
144
+ </p>
145
+ <p>
146
+ For the common case where a store needs to be enriched against itself by
147
+ inferring <a href="ResourceEnricher.html#M000069">new</a> data from old
148
+ using a CONSTRUCT query
149
+ </p>
150
+ <pre>
151
+ store:: the store to be updated
152
+ query:: the SPARQL CONSTRUCT query to be used to infer the new data
153
+ </pre>
154
+ <p><a class="source-toggle" href="#"
155
+ onclick="toggleCode('M000070-source');return false;">[Source]</a></p>
156
+ <div class="method-source-code" id="M000070-source">
157
+ <pre>
158
+ <span class="ruby-comment cmt"># File lib/pho/enrichment.rb, line 27</span>
159
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ResourceEnricher</span>.<span class="ruby-identifier">infer</span>(<span class="ruby-identifier">store</span>, <span class="ruby-identifier">query</span>)
160
+ <span class="ruby-identifier">enricher</span> = <span class="ruby-constant">ResourceEnricher</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">store</span>, <span class="ruby-identifier">store</span>.<span class="ruby-identifier">sparql_client</span>() )
161
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">enricher</span>.<span class="ruby-identifier">merge</span>( <span class="ruby-identifier">query</span> )
162
+ <span class="ruby-keyword kw">end</span>
163
+ </pre>
164
+ </div>
165
+ </div>
166
+ </div>
167
+
168
+ <div id="method-M000069" class="method-detail">
169
+ <a name="M000069"></a>
170
+
171
+ <div class="method-heading">
172
+ <a href="#M000069" class="method-signature">
173
+ <span class="method-name">new</span><span class="method-args">(store, sparql_client)</span>
174
+ </a>
175
+ </div>
176
+
177
+ <div class="method-description">
178
+ <p>
179
+ Constructor
180
+ </p>
181
+ <pre>
182
+ store:: the store containing resource(s) to enrich
183
+ sparql_client:: SparqlClient object to be used as client for retrieving enrichments
184
+ </pre>
185
+ <p><a class="source-toggle" href="#"
186
+ onclick="toggleCode('M000069-source');return false;">[Source]</a></p>
187
+ <div class="method-source-code" id="M000069-source">
188
+ <pre>
189
+ <span class="ruby-comment cmt"># File lib/pho/enrichment.rb, line 15</span>
190
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">store</span>, <span class="ruby-identifier">sparql_client</span>)
191
+ <span class="ruby-ivar">@store</span> = <span class="ruby-identifier">store</span>
192
+ <span class="ruby-ivar">@sparql_client</span> = <span class="ruby-identifier">sparql_client</span>
193
+ <span class="ruby-keyword kw">end</span>
194
+ </pre>
195
+ </div>
196
+ </div>
197
+ </div>
198
+
199
+ <h3 class="section-bar">Public Instance methods</h3>
200
+
201
+ <div id="method-M000072" class="method-detail">
202
+ <a name="M000072"></a>
203
+
204
+ <div class="method-heading">
205
+ <a href="#M000072" class="method-signature">
206
+ <span class="method-name">enrich</span><span class="method-args">(locator_query, enrichment_query)</span>
207
+ </a>
208
+ </div>
209
+
210
+ <div class="method-description">
211
+ <p>
212
+ Enrich a store with data extracted from a SPARQL endpoint.
213
+ </p>
214
+ <p>
215
+ The locator_query is used to find resources in the Platform <a
216
+ href="../Store.html">Store</a> that should be enriched. The query should be
217
+ a SPARQL SELECT query that returns the data to be used to parameterize the
218
+ enrichment_query.
219
+ </p>
220
+ <p>
221
+ For each query result, the enrichment_query will be submitted to the
222
+ configured SPARQL endpoint, after first interpolating the string, providing
223
+ the query result bindings as parameters. (See
224
+ SparqlHelper.apply_initial_bindings and
225
+ SparqlHelper.results_to_query_bindings
226
+ </p>
227
+ <p>
228
+ If successful, the result of each enrichment query will then be pushed back
229
+ into the Platform <a href="../Store.html">Store</a> by posting the results
230
+ of the query to the metabox. <a href="../Enrichment.html">Enrichment</a>
231
+ queries should therefore be CONSTRUCT or DESCRIBE queries. The SPARQL
232
+ protocol request will be sent with an Accept header of application/rdf+xml
233
+ </p>
234
+ <pre>
235
+ locator_query:: query to locate resources to be enriched
236
+ enrichment_query:: query to be used to enrich the resource
237
+ </pre>
238
+ <p><a class="source-toggle" href="#"
239
+ onclick="toggleCode('M000072-source');return false;">[Source]</a></p>
240
+ <div class="method-source-code" id="M000072-source">
241
+ <pre>
242
+ <span class="ruby-comment cmt"># File lib/pho/enrichment.rb, line 62</span>
243
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enrich</span>(<span class="ruby-identifier">locator_query</span>, <span class="ruby-identifier">enrichment_query</span>)
244
+ <span class="ruby-identifier">results</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Sparql</span><span class="ruby-operator">::</span><span class="ruby-constant">SparqlHelper</span>.<span class="ruby-identifier">select</span>(<span class="ruby-identifier">locator_query</span>, <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">sparql_client</span>() )
245
+ <span class="ruby-identifier">bindings</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Sparql</span><span class="ruby-operator">::</span><span class="ruby-constant">SparqlHelper</span>.<span class="ruby-identifier">results_to_query_bindings</span>(<span class="ruby-identifier">results</span>)
246
+ <span class="ruby-identifier">bindings</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">binding</span><span class="ruby-operator">|</span>
247
+ <span class="ruby-identifier">bound_query</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Sparql</span><span class="ruby-operator">::</span><span class="ruby-constant">SparqlHelper</span>.<span class="ruby-identifier">apply_initial_bindings</span>(<span class="ruby-identifier">enrichment_query</span>, <span class="ruby-identifier">binding</span>)
248
+
249
+ <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@sparql_client</span>.<span class="ruby-identifier">query</span>(<span class="ruby-identifier">bound_query</span>, <span class="ruby-value str">&quot;application/rdf+xml&quot;</span>)
250
+
251
+ <span class="ruby-comment cmt">#TODO error handling and callbacks </span>
252
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
253
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">store_data</span>( <span class="ruby-identifier">result</span>.<span class="ruby-identifier">content</span> )
254
+ <span class="ruby-keyword kw">end</span>
255
+
256
+ <span class="ruby-keyword kw">end</span>
257
+ <span class="ruby-keyword kw">end</span>
258
+ </pre>
259
+ </div>
260
+ </div>
261
+ </div>
262
+
263
+ <div id="method-M000071" class="method-detail">
264
+ <a name="M000071"></a>
265
+
266
+ <div class="method-heading">
267
+ <a href="#M000071" class="method-signature">
268
+ <span class="method-name">merge</span><span class="method-args">(query)</span>
269
+ </a>
270
+ </div>
271
+
272
+ <div class="method-description">
273
+ <p>
274
+ Execute the provided query against the configured SPARQL endpoint and store
275
+ the results in the Platform <a href="../Store.html">Store</a>
276
+ </p>
277
+ <pre>
278
+ query:: the SPARQL CONSTRUCT or DESCRIBE query to execute
279
+ </pre>
280
+ <p><a class="source-toggle" href="#"
281
+ onclick="toggleCode('M000071-source');return false;">[Source]</a></p>
282
+ <div class="method-source-code" id="M000071-source">
283
+ <pre>
284
+ <span class="ruby-comment cmt"># File lib/pho/enrichment.rb, line 36</span>
285
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">merge</span>(<span class="ruby-identifier">query</span>)
286
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@sparql_client</span>.<span class="ruby-identifier">query</span>( <span class="ruby-identifier">query</span>, <span class="ruby-value str">&quot;application/rdf+xml&quot;</span> )
287
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">!=</span> <span class="ruby-value">200</span>
288
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unable to execute query. Response: #{resp.status} #{resp.reason} #{resp.content}&quot;</span>
289
+ <span class="ruby-keyword kw">end</span>
290
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">store_data</span>( <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span> )
291
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">resp</span>
292
+ <span class="ruby-keyword kw">end</span>
293
+ </pre>
294
+ </div>
295
+ </div>
296
+ </div>
297
+
298
+
299
+ </div>
300
+
301
+
302
+ </div>
303
+
304
+
305
+ <div id="validator-badges">
306
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
307
+ </div>
308
+
309
+ </body>
310
+ </html>