pho 0.2 → 0.3

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.
Files changed (140) hide show
  1. data/CHANGES +19 -0
  2. data/Rakefile +6 -4
  3. data/doc/index.html +6 -0
  4. data/doc/rdoc/classes/Pho.html +250 -0
  5. data/doc/rdoc/classes/Pho/Analyzers.html +288 -0
  6. data/doc/rdoc/classes/Pho/DatatypeProperty.html +209 -0
  7. data/doc/rdoc/classes/Pho/DatatypeProperty.src/M000034.html +21 -0
  8. data/doc/rdoc/classes/Pho/DatatypeProperty.src/M000035.html +29 -0
  9. data/doc/rdoc/classes/Pho/Etags.html +238 -0
  10. data/doc/rdoc/classes/Pho/Etags.src/M000088.html +23 -0
  11. data/doc/rdoc/classes/Pho/Etags.src/M000089.html +28 -0
  12. data/doc/rdoc/classes/Pho/Etags.src/M000090.html +21 -0
  13. data/doc/rdoc/classes/Pho/Etags.src/M000091.html +18 -0
  14. data/doc/rdoc/classes/Pho/Etags.src/M000092.html +18 -0
  15. data/doc/rdoc/classes/Pho/Etags.src/M000093.html +18 -0
  16. data/doc/rdoc/classes/Pho/Facet.html +119 -0
  17. data/doc/rdoc/classes/Pho/Facet/Results.html +225 -0
  18. data/doc/rdoc/classes/Pho/Facet/Results.src/M000001.html +20 -0
  19. data/doc/rdoc/classes/Pho/Facet/Results.src/M000002.html +27 -0
  20. data/doc/rdoc/classes/Pho/Facet/Results.src/M000003.html +54 -0
  21. data/doc/rdoc/classes/Pho/Facet/Term.html +166 -0
  22. data/doc/rdoc/classes/Pho/Facet/Term.src/M000004.html +20 -0
  23. data/doc/rdoc/classes/Pho/FieldPredicateMap.html +461 -0
  24. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000005.html +38 -0
  25. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000006.html +28 -0
  26. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000007.html +20 -0
  27. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000008.html +18 -0
  28. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000009.html +23 -0
  29. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000010.html +23 -0
  30. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000011.html +18 -0
  31. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000012.html +18 -0
  32. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000013.html +18 -0
  33. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000014.html +18 -0
  34. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000015.html +18 -0
  35. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000016.html +21 -0
  36. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000017.html +21 -0
  37. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000018.html +38 -0
  38. data/doc/rdoc/classes/Pho/FieldPredicateMap.src/M000019.html +18 -0
  39. data/doc/rdoc/classes/Pho/FieldWeighting.html +202 -0
  40. data/doc/rdoc/classes/Pho/FieldWeighting.src/M000075.html +20 -0
  41. data/doc/rdoc/classes/Pho/FieldWeighting.src/M000076.html +26 -0
  42. data/doc/rdoc/classes/Pho/Job.html +147 -0
  43. data/doc/rdoc/classes/Pho/Job.src/M000074.html +21 -0
  44. data/doc/rdoc/classes/Pho/Namespaces.html +128 -0
  45. data/doc/rdoc/classes/Pho/QueryProfile.html +355 -0
  46. data/doc/rdoc/classes/Pho/QueryProfile.src/M000024.html +39 -0
  47. data/doc/rdoc/classes/Pho/QueryProfile.src/M000025.html +24 -0
  48. data/doc/rdoc/classes/Pho/QueryProfile.src/M000026.html +20 -0
  49. data/doc/rdoc/classes/Pho/QueryProfile.src/M000027.html +18 -0
  50. data/doc/rdoc/classes/Pho/QueryProfile.src/M000028.html +18 -0
  51. data/doc/rdoc/classes/Pho/QueryProfile.src/M000029.html +21 -0
  52. data/doc/rdoc/classes/Pho/QueryProfile.src/M000030.html +18 -0
  53. data/doc/rdoc/classes/Pho/QueryProfile.src/M000031.html +18 -0
  54. data/doc/rdoc/classes/Pho/QueryProfile.src/M000032.html +38 -0
  55. data/doc/rdoc/classes/Pho/QueryProfile.src/M000033.html +18 -0
  56. data/doc/rdoc/classes/Pho/RDFCollection.html +353 -0
  57. data/doc/rdoc/classes/Pho/RDFCollection.src/M000077.html +23 -0
  58. data/doc/rdoc/classes/Pho/RDFCollection.src/M000078.html +22 -0
  59. data/doc/rdoc/classes/Pho/RDFCollection.src/M000079.html +24 -0
  60. data/doc/rdoc/classes/Pho/RDFCollection.src/M000080.html +23 -0
  61. data/doc/rdoc/classes/Pho/RDFCollection.src/M000081.html +18 -0
  62. data/doc/rdoc/classes/Pho/RDFCollection.src/M000082.html +22 -0
  63. data/doc/rdoc/classes/Pho/RDFCollection.src/M000083.html +22 -0
  64. data/doc/rdoc/classes/Pho/RDFCollection.src/M000084.html +26 -0
  65. data/doc/rdoc/classes/Pho/RDFCollection.src/M000085.html +23 -0
  66. data/doc/rdoc/classes/Pho/RDFCollection.src/M000086.html +18 -0
  67. data/doc/rdoc/classes/Pho/RDFCollection.src/M000087.html +18 -0
  68. data/doc/rdoc/classes/Pho/Snapshot.html +271 -0
  69. data/doc/rdoc/classes/Pho/Snapshot.src/M000070.html +31 -0
  70. data/doc/rdoc/classes/Pho/Snapshot.src/M000071.html +21 -0
  71. data/doc/rdoc/classes/Pho/Snapshot.src/M000072.html +18 -0
  72. data/doc/rdoc/classes/Pho/Snapshot.src/M000073.html +37 -0
  73. data/doc/rdoc/classes/Pho/Status.html +245 -0
  74. data/doc/rdoc/classes/Pho/Status.src/M000020.html +20 -0
  75. data/doc/rdoc/classes/Pho/Status.src/M000021.html +31 -0
  76. data/doc/rdoc/classes/Pho/Status.src/M000022.html +18 -0
  77. data/doc/rdoc/classes/Pho/Status.src/M000023.html +18 -0
  78. data/doc/rdoc/classes/Pho/Store.html +1055 -0
  79. data/doc/rdoc/classes/Pho/Store.src/M000036.html +22 -0
  80. data/doc/rdoc/classes/Pho/Store.src/M000037.html +18 -0
  81. data/doc/rdoc/classes/Pho/Store.src/M000038.html +25 -0
  82. data/doc/rdoc/classes/Pho/Store.src/M000039.html +20 -0
  83. data/doc/rdoc/classes/Pho/Store.src/M000040.html +20 -0
  84. data/doc/rdoc/classes/Pho/Store.src/M000041.html +28 -0
  85. data/doc/rdoc/classes/Pho/Store.src/M000042.html +23 -0
  86. data/doc/rdoc/classes/Pho/Store.src/M000043.html +18 -0
  87. data/doc/rdoc/classes/Pho/Store.src/M000044.html +18 -0
  88. data/doc/rdoc/classes/Pho/Store.src/M000045.html +18 -0
  89. data/doc/rdoc/classes/Pho/Store.src/M000046.html +18 -0
  90. data/doc/rdoc/classes/Pho/Store.src/M000047.html +23 -0
  91. data/doc/rdoc/classes/Pho/Store.src/M000048.html +22 -0
  92. data/doc/rdoc/classes/Pho/Store.src/M000049.html +26 -0
  93. data/doc/rdoc/classes/Pho/Store.src/M000050.html +24 -0
  94. data/doc/rdoc/classes/Pho/Store.src/M000051.html +20 -0
  95. data/doc/rdoc/classes/Pho/Store.src/M000052.html +20 -0
  96. data/doc/rdoc/classes/Pho/Store.src/M000053.html +25 -0
  97. data/doc/rdoc/classes/Pho/Store.src/M000054.html +20 -0
  98. data/doc/rdoc/classes/Pho/Store.src/M000055.html +30 -0
  99. data/doc/rdoc/classes/Pho/Store.src/M000056.html +21 -0
  100. data/doc/rdoc/classes/Pho/Store.src/M000057.html +23 -0
  101. data/doc/rdoc/classes/Pho/Store.src/M000058.html +28 -0
  102. data/doc/rdoc/classes/Pho/Store.src/M000059.html +18 -0
  103. data/doc/rdoc/classes/Pho/Store.src/M000060.html +18 -0
  104. data/doc/rdoc/classes/Pho/Store.src/M000061.html +18 -0
  105. data/doc/rdoc/classes/Pho/Store.src/M000062.html +31 -0
  106. data/doc/rdoc/classes/Pho/Store.src/M000063.html +21 -0
  107. data/doc/rdoc/classes/Pho/Store.src/M000064.html +20 -0
  108. data/doc/rdoc/classes/Pho/Store.src/M000065.html +20 -0
  109. data/doc/rdoc/classes/Pho/Store.src/M000066.html +20 -0
  110. data/doc/rdoc/classes/Pho/Store.src/M000067.html +20 -0
  111. data/doc/rdoc/classes/Pho/Store.src/M000068.html +20 -0
  112. data/doc/rdoc/classes/Pho/Store.src/M000069.html +20 -0
  113. data/doc/rdoc/created.rid +1 -1
  114. data/doc/rdoc/files/CHANGES.html +140 -0
  115. data/doc/rdoc/files/README.html +9 -8
  116. data/doc/rdoc/files/lib/pho/etags_rb.html +108 -0
  117. data/doc/rdoc/files/lib/pho/facet_rb.html +101 -0
  118. data/doc/rdoc/files/lib/pho/field_predicate_map_rb.html +101 -0
  119. data/doc/rdoc/files/lib/pho/job_rb.html +101 -0
  120. data/doc/rdoc/files/lib/pho/query_profile_rb.html +101 -0
  121. data/doc/rdoc/files/lib/pho/rdf_collection_rb.html +101 -0
  122. data/doc/rdoc/files/lib/pho/snapshot_rb.html +108 -0
  123. data/doc/rdoc/files/lib/pho/status_rb.html +101 -0
  124. data/doc/rdoc/files/lib/pho/store_rb.html +101 -0
  125. data/doc/rdoc/files/lib/pho_rb.html +120 -0
  126. data/doc/rdoc/fr_class_index.html +16 -0
  127. data/doc/rdoc/fr_file_index.html +11 -0
  128. data/doc/rdoc/fr_method_index.html +93 -0
  129. data/examples/status.rb +3 -3
  130. data/lib/pho.rb +11 -2
  131. data/lib/pho/facet.rb +101 -0
  132. data/lib/pho/field_predicate_map.rb +4 -4
  133. data/lib/pho/query_profile.rb +170 -0
  134. data/lib/pho/status.rb +65 -0
  135. data/lib/pho/store.rb +26 -13
  136. data/tests/tc_facet.rb +91 -0
  137. data/tests/tc_query_profile.rb +196 -0
  138. data/tests/tc_status.rb +56 -0
  139. data/tests/ts_pho.rb +3 -0
  140. metadata +148 -3
@@ -0,0 +1,120 @@
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>File: pho.rb</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="fileHeader">
50
+ <h1>pho.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/pho.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sun Mar 01 16:52:04 +0000 2009</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+ <div id="requires-list">
73
+ <h3 class="section-bar">Required files</h3>
74
+
75
+ <div class="name-list">
76
+ rubygems&nbsp;&nbsp;
77
+ httpclient&nbsp;&nbsp;
78
+ json&nbsp;&nbsp;
79
+ yaml&nbsp;&nbsp;
80
+ rexml/document&nbsp;&nbsp;
81
+ pho/etags&nbsp;&nbsp;
82
+ pho/store&nbsp;&nbsp;
83
+ pho/snapshot&nbsp;&nbsp;
84
+ pho/field_predicate_map&nbsp;&nbsp;
85
+ pho/query_profile&nbsp;&nbsp;
86
+ pho/status&nbsp;&nbsp;
87
+ pho/facet&nbsp;&nbsp;
88
+ pho/rdf_collection&nbsp;&nbsp;
89
+ </div>
90
+ </div>
91
+
92
+ </div>
93
+
94
+
95
+ </div>
96
+
97
+
98
+ <!-- if includes -->
99
+
100
+ <div id="section">
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+ <!-- if method_list -->
110
+
111
+
112
+ </div>
113
+
114
+
115
+ <div id="validator-badges">
116
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
117
+ </div>
118
+
119
+ </body>
120
+ </html>
@@ -20,6 +20,22 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Classes</h1>
22
22
  <div id="index-entries">
23
+ <a href="classes/Pho.html">Pho</a><br />
24
+ <a href="classes/Pho/Analyzers.html">Pho::Analyzers</a><br />
25
+ <a href="classes/Pho/DatatypeProperty.html">Pho::DatatypeProperty</a><br />
26
+ <a href="classes/Pho/Etags.html">Pho::Etags</a><br />
27
+ <a href="classes/Pho/Facet.html">Pho::Facet</a><br />
28
+ <a href="classes/Pho/Facet/Results.html">Pho::Facet::Results</a><br />
29
+ <a href="classes/Pho/Facet/Term.html">Pho::Facet::Term</a><br />
30
+ <a href="classes/Pho/FieldPredicateMap.html">Pho::FieldPredicateMap</a><br />
31
+ <a href="classes/Pho/FieldWeighting.html">Pho::FieldWeighting</a><br />
32
+ <a href="classes/Pho/Job.html">Pho::Job</a><br />
33
+ <a href="classes/Pho/Namespaces.html">Pho::Namespaces</a><br />
34
+ <a href="classes/Pho/QueryProfile.html">Pho::QueryProfile</a><br />
35
+ <a href="classes/Pho/RDFCollection.html">Pho::RDFCollection</a><br />
36
+ <a href="classes/Pho/Snapshot.html">Pho::Snapshot</a><br />
37
+ <a href="classes/Pho/Status.html">Pho::Status</a><br />
38
+ <a href="classes/Pho/Store.html">Pho::Store</a><br />
23
39
  </div>
24
40
  </div>
25
41
  </body>
@@ -20,7 +20,18 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Files</h1>
22
22
  <div id="index-entries">
23
+ <a href="files/CHANGES.html">CHANGES</a><br />
23
24
  <a href="files/README.html">README</a><br />
25
+ <a href="files/lib/pho_rb.html">lib/pho.rb</a><br />
26
+ <a href="files/lib/pho/etags_rb.html">lib/pho/etags.rb</a><br />
27
+ <a href="files/lib/pho/facet_rb.html">lib/pho/facet.rb</a><br />
28
+ <a href="files/lib/pho/field_predicate_map_rb.html">lib/pho/field_predicate_map.rb</a><br />
29
+ <a href="files/lib/pho/job_rb.html">lib/pho/job.rb</a><br />
30
+ <a href="files/lib/pho/query_profile_rb.html">lib/pho/query_profile.rb</a><br />
31
+ <a href="files/lib/pho/rdf_collection_rb.html">lib/pho/rdf_collection.rb</a><br />
32
+ <a href="files/lib/pho/snapshot_rb.html">lib/pho/snapshot.rb</a><br />
33
+ <a href="files/lib/pho/status_rb.html">lib/pho/status.rb</a><br />
34
+ <a href="files/lib/pho/store_rb.html">lib/pho/store.rb</a><br />
24
35
  </div>
25
36
  </div>
26
37
  </body>
@@ -20,6 +20,99 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
+ <a href="classes/Pho/QueryProfile.html#M000027"><< (Pho::QueryProfile)</a><br />
24
+ <a href="classes/Pho/FieldPredicateMap.html#M000008"><< (Pho::FieldPredicateMap)</a><br />
25
+ <a href="classes/Pho/Etags.html#M000090">add (Pho::Etags)</a><br />
26
+ <a href="classes/Pho/Etags.html#M000091">add_from_response (Pho::Etags)</a><br />
27
+ <a href="classes/Pho/Store.html#M000052">augment (Pho::Store)</a><br />
28
+ <a href="classes/Pho/Store.html#M000051">augment_uri (Pho::Store)</a><br />
29
+ <a href="classes/Pho/Store.html#M000058">build_job_request (Pho::Store)</a><br />
30
+ <a href="classes/Pho/Store.html#M000038">build_uri (Pho::Store)</a><br />
31
+ <a href="classes/Pho/Store.html#M000053">configure_headers_for_conditional_get (Pho::Store)</a><br />
32
+ <a href="classes/Pho/FieldPredicateMap.html#M000006">create_mapping (Pho::FieldPredicateMap)</a><br />
33
+ <a href="classes/Pho/QueryProfile.html#M000025">create_weighting (Pho::QueryProfile)</a><br />
34
+ <a href="classes/Pho/Store.html#M000056">delete_item (Pho::Store)</a><br />
35
+ <a href="classes/Pho/Store.html#M000042">describe (Pho::Store)</a><br />
36
+ <a href="classes/Pho/Snapshot.html#M000073">download (Pho::Snapshot)</a><br />
37
+ <a href="classes/Pho/Store.html#M000049">facet (Pho::Store)</a><br />
38
+ <a href="classes/Pho/RDFCollection.html#M000082">failures (Pho::RDFCollection)</a><br />
39
+ <a href="classes/Pho/Etags.html#M000092">get (Pho::Etags)</a><br />
40
+ <a href="classes/Pho/FieldPredicateMap.html#M000013">get_by_name (Pho::FieldPredicateMap)</a><br />
41
+ <a href="classes/Pho/QueryProfile.html#M000028">get_by_name (Pho::QueryProfile)</a><br />
42
+ <a href="classes/Pho/FieldPredicateMap.html#M000014">get_by_uri (Pho::FieldPredicateMap)</a><br />
43
+ <a href="classes/Pho/RDFCollection.html#M000086">get_fail_file_for (Pho::RDFCollection)</a><br />
44
+ <a href="classes/Pho/Store.html#M000066">get_field_predicate_map (Pho::Store)</a><br />
45
+ <a href="classes/Pho/Store.html#M000057">get_item (Pho::Store)</a><br />
46
+ <a href="classes/Pho/FieldPredicateMap.html#M000009">get_name (Pho::FieldPredicateMap)</a><br />
47
+ <a href="classes/Pho/RDFCollection.html#M000087">get_ok_file_for (Pho::RDFCollection)</a><br />
48
+ <a href="classes/Pho/FieldPredicateMap.html#M000010">get_property_uri (Pho::FieldPredicateMap)</a><br />
49
+ <a href="classes/Pho/Store.html#M000068">get_query_profile (Pho::Store)</a><br />
50
+ <a href="classes/Pho/Store.html#M000050">get_search_params (Pho::Store)</a><br />
51
+ <a href="classes/Pho/Store.html#M000065">get_snapshots (Pho::Store)</a><br />
52
+ <a href="classes/Pho/Store.html#M000064">get_status (Pho::Store)</a><br />
53
+ <a href="classes/Pho/Etags.html#M000093">has_tag? (Pho::Etags)</a><br />
54
+ <a href="classes/Pho/RDFCollection.html#M000081">list (Pho::RDFCollection)</a><br />
55
+ <a href="classes/Pho/QueryProfile.html#M000031">mapped_name? (Pho::QueryProfile)</a><br />
56
+ <a href="classes/Pho/FieldPredicateMap.html#M000011">mapped_name? (Pho::FieldPredicateMap)</a><br />
57
+ <a href="classes/Pho/FieldPredicateMap.html#M000012">mapped_uri? (Pho::FieldPredicateMap)</a><br />
58
+ <a href="classes/Pho/RDFCollection.html#M000077">new (Pho::RDFCollection)</a><br />
59
+ <a href="classes/Pho/Store.html#M000036">new (Pho::Store)</a><br />
60
+ <a href="classes/Pho/Status.html#M000020">new (Pho::Status)</a><br />
61
+ <a href="classes/Pho/DatatypeProperty.html#M000034">new (Pho::DatatypeProperty)</a><br />
62
+ <a href="classes/Pho/Etags.html#M000088">new (Pho::Etags)</a><br />
63
+ <a href="classes/Pho/FieldWeighting.html#M000075">new (Pho::FieldWeighting)</a><br />
64
+ <a href="classes/Pho/QueryProfile.html#M000026">new (Pho::QueryProfile)</a><br />
65
+ <a href="classes/Pho/FieldPredicateMap.html#M000007">new (Pho::FieldPredicateMap)</a><br />
66
+ <a href="classes/Pho/Facet/Term.html#M000004">new (Pho::Facet::Term)</a><br />
67
+ <a href="classes/Pho/Snapshot.html#M000071">new (Pho::Snapshot)</a><br />
68
+ <a href="classes/Pho/Facet/Results.html#M000001">new (Pho::Facet::Results)</a><br />
69
+ <a href="classes/Pho/RDFCollection.html#M000084">new_files (Pho::RDFCollection)</a><br />
70
+ <a href="classes/Pho/Snapshot.html#M000070">parse (Pho::Snapshot)</a><br />
71
+ <a href="classes/Pho/Facet/Results.html#M000003">parse (Pho::Facet::Results)</a><br />
72
+ <a href="classes/Pho/Job.html#M000074">parse_jobs (Pho::Job)</a><br />
73
+ <a href="classes/Pho/Store.html#M000067">put_field_predicate_map (Pho::Store)</a><br />
74
+ <a href="classes/Pho/Store.html#M000069">put_query_profile (Pho::Store)</a><br />
75
+ <a href="classes/Pho/Facet/Results.html#M000002">read_from_store (Pho::Facet::Results)</a><br />
76
+ <a href="classes/Pho/FieldPredicateMap.html#M000005">read_from_store (Pho::FieldPredicateMap)</a><br />
77
+ <a href="classes/Pho/Status.html#M000021">read_from_store (Pho::Status)</a><br />
78
+ <a href="classes/Pho/QueryProfile.html#M000024">read_from_store (Pho::QueryProfile)</a><br />
79
+ <a href="classes/Pho/Snapshot.html#M000072">read_md5 (Pho::Snapshot)</a><br />
80
+ <a href="classes/Pho/Status.html#M000022">readable? (Pho::Status)</a><br />
81
+ <a href="classes/Pho/Store.html#M000054">record_etags (Pho::Store)</a><br />
82
+ <a href="classes/Pho/Store.html#M000060">reindex (Pho::Store)</a><br />
83
+ <a href="classes/Pho/QueryProfile.html#M000030">remove (Pho::QueryProfile)</a><br />
84
+ <a href="classes/Pho/FieldPredicateMap.html#M000015">remove (Pho::FieldPredicateMap)</a><br />
85
+ <a href="classes/Pho/FieldPredicateMap.html#M000016">remove_by_name (Pho::FieldPredicateMap)</a><br />
86
+ <a href="classes/Pho/QueryProfile.html#M000029">remove_by_name (Pho::QueryProfile)</a><br />
87
+ <a href="classes/Pho/FieldPredicateMap.html#M000017">remove_by_uri (Pho::FieldPredicateMap)</a><br />
88
+ <a href="classes/Pho/RDFCollection.html#M000080">reset (Pho::RDFCollection)</a><br />
89
+ <a href="classes/Pho/Store.html#M000059">reset (Pho::Store)</a><br />
90
+ <a href="classes/Pho/Store.html#M000062">restore (Pho::Store)</a><br />
91
+ <a href="classes/Pho/RDFCollection.html#M000079">retry_failures (Pho::RDFCollection)</a><br />
92
+ <a href="classes/Pho/Etags.html#M000089">save (Pho::Etags)</a><br />
93
+ <a href="classes/Pho/Store.html#M000048">search (Pho::Store)</a><br />
94
+ <a href="classes/Pho/Store.html#M000037">set_credentials (Pho::Store)</a><br />
95
+ <a href="classes/Pho/Store.html#M000061">snapshot (Pho::Store)</a><br />
96
+ <a href="classes/Pho/Store.html#M000047">sparql (Pho::Store)</a><br />
97
+ <a href="classes/Pho/Store.html#M000045">sparql_ask (Pho::Store)</a><br />
98
+ <a href="classes/Pho/Store.html#M000044">sparql_construct (Pho::Store)</a><br />
99
+ <a href="classes/Pho/Store.html#M000043">sparql_describe (Pho::Store)</a><br />
100
+ <a href="classes/Pho/Store.html#M000046">sparql_select (Pho::Store)</a><br />
101
+ <a href="classes/Pho/RDFCollection.html#M000078">store (Pho::RDFCollection)</a><br />
102
+ <a href="classes/Pho/Store.html#M000039">store_data (Pho::Store)</a><br />
103
+ <a href="classes/Pho/Store.html#M000040">store_file (Pho::Store)</a><br />
104
+ <a href="classes/Pho/Store.html#M000041">store_url (Pho::Store)</a><br />
105
+ <a href="classes/Pho/Store.html#M000063">submit_job (Pho::Store)</a><br />
106
+ <a href="classes/Pho/RDFCollection.html#M000083">successes (Pho::RDFCollection)</a><br />
107
+ <a href="classes/Pho/RDFCollection.html#M000085">summary (Pho::RDFCollection)</a><br />
108
+ <a href="classes/Pho/FieldPredicateMap.html#M000018">to_rdf (Pho::FieldPredicateMap)</a><br />
109
+ <a href="classes/Pho/DatatypeProperty.html#M000035">to_rdf (Pho::DatatypeProperty)</a><br />
110
+ <a href="classes/Pho/FieldWeighting.html#M000076">to_rdf (Pho::FieldWeighting)</a><br />
111
+ <a href="classes/Pho/QueryProfile.html#M000032">to_rdf (Pho::QueryProfile)</a><br />
112
+ <a href="classes/Pho/FieldPredicateMap.html#M000019">upload (Pho::FieldPredicateMap)</a><br />
113
+ <a href="classes/Pho/QueryProfile.html#M000033">upload (Pho::QueryProfile)</a><br />
114
+ <a href="classes/Pho/Store.html#M000055">upload_item (Pho::Store)</a><br />
115
+ <a href="classes/Pho/Status.html#M000023">writeable? (Pho::Status)</a><br />
23
116
  </div>
24
117
  </div>
25
118
  </body>
@@ -3,7 +3,7 @@ require 'pho'
3
3
 
4
4
  # Create the store object
5
5
  store = Pho::Store.new("http://api.talis.com/stores/space")
6
- # Retrieve the store status as a simple hash
7
- status = store.status
8
- # Dump the hash to the console
6
+ # Retrieve the store status as a Status object
7
+ status = Pho::Status.read_from_store(store)
8
+ # Dump the object to the console
9
9
  puts status.inspect
data/lib/pho.rb CHANGED
@@ -2,11 +2,15 @@ require 'rubygems'
2
2
  require 'httpclient'
3
3
  require 'json'
4
4
  require 'yaml'
5
+ require 'rexml/document'
5
6
 
6
7
  require 'pho/etags'
7
8
  require 'pho/store'
8
9
  require 'pho/snapshot'
9
10
  require 'pho/field_predicate_map'
11
+ require 'pho/query_profile'
12
+ require 'pho/status'
13
+ require 'pho/facet'
10
14
  require 'pho/rdf_collection'
11
15
 
12
16
  module Pho
@@ -22,7 +26,12 @@ module Pho
22
26
  JOB_RESTORE = "http://schemas.talis.com/2006/bigfoot/configuration#RestoreJob".freeze
23
27
 
24
28
 
25
- NAMESPACE_CONFIG = "http://schemas.talis.com/2006/bigfoot/configuration#"
26
- NAMESPACE_FRAME = "http://schemas.talis.com/2006/frame/schema#"
29
+ module Namespaces
30
+
31
+ CONFIG = "http://schemas.talis.com/2006/bigfoot/configuration#"
32
+ FRAME = "http://schemas.talis.com/2006/frame/schema#"
33
+ FACET = "http://schemas.talis.com/2007/facet-results#"
34
+
35
+ end
27
36
 
28
37
  end
@@ -0,0 +1,101 @@
1
+ module Pho
2
+
3
+ #This module organizes the classes related to the Facet service
4
+ module Facet
5
+
6
+ #Captures the information about a specific term
7
+ class Term
8
+ attr_reader :hits
9
+ attr_reader :search_uri
10
+ attr_reader :value
11
+
12
+ def initialize(hits, search_uri, value)
13
+ @hits = hits
14
+ @search_uri = search_uri
15
+ @value = value
16
+ end
17
+
18
+ end
19
+
20
+ #Captures the data returned in a facetted search
21
+ class Results
22
+
23
+ #The query used to generate the facet results, as echoed in the response
24
+ attr_reader :query
25
+
26
+ #The fields used to generate the results
27
+ attr_reader :fields
28
+
29
+ #An array of facets
30
+ attr_reader :facets
31
+
32
+ def initialize(query, fields, facets=Hash.new)
33
+ @query = query
34
+ @fields = fields
35
+ @facets = facets
36
+ end
37
+
38
+ #Convenience function to perform a facetted search against a store, returning a
39
+ #Results object parsed from the XML response
40
+ #
41
+ #store:: the store against which the query will be performed
42
+ #query:: the search query
43
+ #facets:: an ordered list of facets to be used
44
+ #params:: additional params. See Store.facet for details. XML output is requested automatically
45
+ def Results.read_from_store(store, query, facets, params=Hash.new)
46
+
47
+ params["output"] = "xml"
48
+ resp = store.facet(query, facets, params)
49
+
50
+ if resp.status != 200
51
+ raise "Unable to do facetted search. Response code was #{resp.status}"
52
+ end
53
+
54
+ return parse(resp.content)
55
+
56
+ end
57
+
58
+ def Results.parse(data)
59
+ doc = REXML::Document.new(data)
60
+ root = doc.root
61
+ head = root.elements[1]
62
+
63
+ query = ""
64
+ fields = ""
65
+ queryEl = head.get_elements("query")[0]
66
+ if queryEl != nil
67
+ query = queryEl.text
68
+ end
69
+ fieldsEl = head.get_elements("fields")[0]
70
+ if fieldsEl != nil
71
+ fields = fieldsEl.text
72
+ end
73
+
74
+ results = Results.new(query, fields)
75
+
76
+ fields = root.get_elements("fields")[0]
77
+ if fields == nil
78
+ raise "No fields in document!"
79
+ end
80
+
81
+ fields.get_elements("field").each do |field|
82
+ field_name = field.attribute("name").value
83
+ results.facets[field_name] = Array.new
84
+
85
+ field.get_elements("term").each do |term|
86
+ term = Term.new(term.attribute("number").value.to_i,
87
+ term.attribute("search-uri").value,
88
+ term.text() )
89
+
90
+ results.facets[field_name] << term
91
+ end
92
+
93
+ end
94
+
95
+ return results
96
+ end
97
+
98
+ end
99
+
100
+ end
101
+ end
@@ -68,7 +68,7 @@ module Pho
68
68
  def to_rdf(ns=true)
69
69
  rdf = "<rdf:Description "
70
70
  if ns
71
- rdf << " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:frm=\"#{Pho::NAMESPACE_FRAME}\" xmlns:bf=\"#{Pho::NAMESPACE_CONFIG}\" "
71
+ rdf << " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:frm=\"#{Pho::Namespaces::FRAME}\" xmlns:bf=\"#{Pho::Namespaces::CONFIG}\" "
72
72
  end
73
73
  rdf << " rdf:about=\"#{@uri}\">"
74
74
  rdf << " <frm:property rdf:resource=\"#{@property_uri}\"/>"
@@ -221,14 +221,14 @@ module Pho
221
221
 
222
222
  #Dump this object to an RDF/XML representation suitable for submitting to the Platform
223
223
  def to_rdf
224
- rdf = "<rdf:RDF xmlns:frm=\"#{Pho::NAMESPACE_FRAME}\" "
224
+ rdf = "<rdf:RDF xmlns:frm=\"#{Pho::Namespaces::FRAME}\" "
225
225
  rdf << " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" "
226
226
  rdf << " xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" "
227
- rdf << " xmlns:bf=\"#{Pho::NAMESPACE_CONFIG}\" > "
227
+ rdf << " xmlns:bf=\"#{Pho::Namespaces::CONFIG}\" > "
228
228
 
229
229
  rdf << " <rdf:Description rdf:about=\"#{@uri}\"> "
230
230
 
231
- rdf << " <rdf:type rdf:resource=\"#{Pho::NAMESPACE_CONFIG}FieldPredicateMap\"/> "
231
+ rdf << " <rdf:type rdf:resource=\"#{Pho::Namespaces::CONFIG}FieldPredicateMap\"/> "
232
232
  rdf << " <rdfs:label>#{@label}</rdfs:label> "
233
233
 
234
234
  @datatype_properties.each do |property|
@@ -0,0 +1,170 @@
1
+ module Pho
2
+
3
+ #Captures the details of a weighted field from a QueryProfile
4
+ class FieldWeighting
5
+
6
+ #The uri of the field weighting
7
+ attr_reader :uri
8
+
9
+ #The name of the field being weighted
10
+ attr_reader :name
11
+
12
+ #The weighting applied to the field
13
+ attr_reader :weight
14
+
15
+ def initialize(uri, name, weight)
16
+ @uri = uri
17
+ @name = name
18
+ @weight = weight
19
+ end
20
+
21
+ #Convert this object into an RDF representation. Generates a simple rdf:Description, optionally including namespaces
22
+ #ns:: include namespace declarations
23
+ def to_rdf(ns=true)
24
+ rdf = "<rdf:Description "
25
+ if ns
26
+ rdf << " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:frm=\"#{Pho::Namespaces::FRAME}\" xmlns:bf=\"#{Pho::Namespaces::CONFIG}\" "
27
+ end
28
+ rdf << " rdf:about=\"#{@uri}\">"
29
+ rdf << " <frm:name>#{@name}</frm:name>"
30
+ rdf << " <bf:weight>#{@weight}</bf:weight>"
31
+ rdf << "</rdf:Description>"
32
+ return rdf
33
+ end
34
+
35
+ end
36
+
37
+
38
+ #Models the QueryProfile configuration associated with a Platform store
39
+ #
40
+ #Class methods exist to read a QueryProfile from a store, providing some convenience
41
+ #over the basic Store methods.
42
+ class QueryProfile
43
+
44
+ #Label associated with the resource in the Platform config
45
+ attr_reader :label
46
+
47
+ #URI for this resource
48
+ attr_reader :uri
49
+
50
+ #The list of field weightings
51
+ attr_reader :field_weights
52
+
53
+ def QueryProfile.read_from_store(store)
54
+ resp = store.get_query_profile(Pho::ACCEPT_JSON)
55
+ if resp.status != 200
56
+ raise "Unable to read Query Profile from store. Response code was #{resp.status}"
57
+ end
58
+
59
+ qp_uri = store.build_uri("/config/queryprofiles/1")
60
+
61
+ json = JSON.parse( resp.content )
62
+
63
+ label = json[qp_uri]["http:\/\/www.w3.org\/2000\/01\/rdf-schema#label"][0]["value"]
64
+ qp = QueryProfile.new(qp_uri, label)
65
+
66
+ field_weights = json[qp_uri]["http:\/\/schemas.talis.com\/2006\/bigfoot\/configuration#fieldWeight"]
67
+ field_weights.each { |uri|
68
+ property = json[uri["value"]]
69
+ name = property["http:\/\/schemas.talis.com\/2006\/frame\/schema#name"][0]["value"]
70
+ weight = property["http:\/\/schemas.talis.com\/2006\/bigfoot\/configuration#weight"][0]["value"]
71
+ qp << FieldWeighting.new(uri["value"], name, weight)
72
+ }
73
+
74
+ return qp
75
+
76
+ end
77
+
78
+ #Create a FieldWeighting object suitable for adding to this store. Will ensure that the
79
+ #name of the propery is valid according to the Platform naming rules
80
+ #
81
+ #store:: the store that the weighting is to be created for
82
+ #name:: name of the field to be weighted
83
+ #weight:: the weighting of the field
84
+ def QueryProfile.create_weighting(store, name, weight)
85
+ if !name.match(/^[a-zA-Z][a-zA-Z0-9]*$/)
86
+ raise "Name does not conform to regular expression: ^[a-zA-Z][a-zA-Z0-9]*$"
87
+ end
88
+
89
+ weight_uri = store.build_uri("/config/queryprofiles/1##{name}")
90
+ return FieldWeighting.new(weight_uri, name, weight)
91
+
92
+ end
93
+
94
+ def initialize(uri, label, field_weights=Array.new)
95
+ @uri = uri
96
+ @label = label
97
+ @field_weights = field_weights
98
+ end
99
+
100
+ def <<(weight)
101
+ @field_weights << weight
102
+ end
103
+
104
+ #Retrieve a FieldWeighing by name
105
+ def get_by_name(name)
106
+ return @field_weights.detect { |field| field.name == name }
107
+ end
108
+
109
+ #Remove a FieldWeighting by name
110
+ def remove_by_name(name)
111
+ fw = get_by_name(name)
112
+ if (fw != nil)
113
+ return remove(fw)
114
+ end
115
+ end
116
+
117
+ #Remove a FieldWeighting from the collection
118
+ def remove(fw)
119
+ return @field_weights.delete(fw)
120
+ end
121
+
122
+ #Is there a field weighting for a property with this name?
123
+ def mapped_name?(name)
124
+ return get_by_name(name) != nil
125
+ end
126
+
127
+ #Dump this object to an RDF/XML representation suitable for submitting to the Platform
128
+ def to_rdf
129
+ rdf = "<rdf:RDF xmlns:frm=\"#{Pho::Namespaces::FRAME}\" "
130
+ rdf << " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" "
131
+ rdf << " xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" "
132
+ rdf << " xmlns:bf=\"#{Pho::Namespaces::CONFIG}\" > "
133
+
134
+ rdf << " <rdf:Description rdf:about=\"#{@uri}\"> "
135
+
136
+ rdf << " <rdf:type rdf:resource=\"#{Pho::Namespaces::CONFIG}QueryProfile\"/> "
137
+ rdf << " <rdfs:label>#{@label}</rdfs:label> "
138
+
139
+ @field_weights.each do |property|
140
+ rdf << " <frm:fieldWeight rdf:resource=\"#{property.uri}\"/> "
141
+ end
142
+
143
+ rdf << " </rdf:Description>"
144
+
145
+ @field_weights.each do |property|
146
+ rdf << property.to_rdf(false)
147
+ end
148
+
149
+ rdf << "</rdf:RDF>"
150
+ end
151
+
152
+ #Upload an RDF/XML presentation of this object to the provided Platform Store
153
+ def upload(store)
154
+ return store.put_query_profile(self.to_rdf)
155
+ end
156
+
157
+
158
+ private
159
+ def QueryProfile.get_suffix(uri)
160
+ candidate_suffix = uri.split("/").last
161
+ if candidate_suffix.index("#") != -1
162
+ return candidate_suffix.split("#").last
163
+ end
164
+ return candidate_suffix
165
+ end
166
+
167
+ end
168
+
169
+
170
+ end