PageRenderTime 44ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Tests/FourStore/FourStoreQueryTest.php

https://github.com/BorderCloud/4store-php
PHP | 395 lines | 305 code | 66 blank | 24 comment | 6 complexity | c9751bb93ffaef1b258bcef274aecfc9 MD5 | raw file
  1. <?php
  2. require_once 'PHPUnit/Autoload.php';
  3. //require_once 'PHPUnit/Framework.php';
  4. require_once (dirname(__FILE__) . '/../../lib/php4store/Endpoint.php');
  5. class FourStoreQueryTest extends PHPUnit_Framework_TestCase
  6. {
  7. protected function setUp()
  8. {
  9. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  10. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  11. $r = $s->delete($graph1);
  12. $r = $s->delete($graph2);
  13. $r = $s->delete("default:");
  14. }
  15. public function testSelect()
  16. {
  17. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  18. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  19. $this->checkIfInitialState($s);
  20. $r = $s->set($graph1,
  21. $prefixTurtle ."\n
  22. a:A b:Name \"Test2\".
  23. a:A b:Name \"Test3\".
  24. a:A b:Name \"Test4\".
  25. ");
  26. $q = 'select * where {?x ?y ?z.} ';
  27. $rows = $s->query($q, 'rows');
  28. //print_r($rows);
  29. $err = $s->getErrors();
  30. if ($err) {
  31. print_r($err);
  32. $this->assertTrue(false);
  33. }
  34. $this->assertEquals(3,count($rows));
  35. $r = $s->delete($graph1);
  36. $this->checkIfInitialState($s);
  37. }
  38. public function testSelectDistinct()
  39. {
  40. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  41. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  42. $this->checkIfInitialState($s);
  43. $r = $s->set($graph1,
  44. $prefixTurtle ."\n
  45. a:A2 b:Name \"Test2\".
  46. a:A3 b:Name \"Test3\".
  47. a:A4 b:Name \"Test4\".
  48. a:A2 b:Name2 \"t2\".
  49. a:A3 b:Name2 \"t3\".
  50. a:A4 b:Name2 \"t4\".
  51. ");
  52. $q = $prefixSparql ."\n select * where {?x b:Name ?name. ?x b:Name2 ?name2. } ";
  53. $rows = $s->query($q, 'rows');
  54. print_r($rows);
  55. $err = $s->getErrors();
  56. if ($err) {
  57. print_r($err);
  58. $this->assertTrue(false);
  59. }
  60. $this->assertEquals(3,count($rows));
  61. $r = $s->delete($graph1);
  62. $this->checkIfInitialState($s);
  63. }
  64. public function testCount()
  65. {
  66. global $modeSkipProblem,$EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  67. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  68. $this->checkIfInitialState($s);
  69. $r = $s->set($graph1,
  70. $prefixTurtle ."\n
  71. a:A b:Name \"Test2\".
  72. a:A b:Name \"Test3\".
  73. a:A b:Name \"Test4\".
  74. ");
  75. $q = 'select (count(?x) AS ?count) where {?x ?y ?z.} ';
  76. $rows = $s->query($q, 'rows');
  77. //print_r($rows);
  78. $err = $s->getErrors();
  79. if ($err) {
  80. print_r($err);
  81. $this->assertTrue(false);
  82. }
  83. $this->assertEquals(1,count($rows));
  84. $this->assertEquals(3,$rows[0]["count"]);
  85. $r = $s->delete($graph1);
  86. $this->checkIfInitialState($s);
  87. }
  88. public function testCountBug()
  89. {
  90. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  91. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  92. $this->checkIfInitialState($s);
  93. $r = $s->set($graph1,
  94. $prefixTurtle ."\n
  95. a:A b:Name \"Test2\".
  96. a:A b:Name \"Test3\".
  97. a:A b:Name \"Test4\".
  98. ");
  99. $q = 'select (count(*) AS ?count) where {?x ?y ?z.} ';
  100. $rows = $s->query($q, 'rows');
  101. //print_r($rows);
  102. $err = $s->getErrors();
  103. if ($err) {
  104. print_r($err);
  105. $this->assertTrue(false);
  106. }
  107. $this->assertEquals(1,count($rows));
  108. $this->assertEquals(3,$rows[0]["count"]);
  109. $r = $s->delete($graph1);
  110. $this->checkIfInitialState($s);
  111. }
  112. public function testAsk()
  113. {
  114. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  115. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  116. $this->checkIfInitialState($s);
  117. $r = $s->set($graph1,
  118. $prefixTurtle ."\n
  119. a:A b:Name \"Test2\".
  120. a:A b:Name \"Test3\".
  121. a:A b:Name \"Test4\".
  122. ");
  123. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test2\" .}}";
  124. $res = $s->query($q,'raw');
  125. $this->assertTrue($res);
  126. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"NON\" .}}";
  127. $res = $s->query($q,'raw');
  128. $this->assertFalse($res);
  129. $r = $s->delete($graph1);
  130. $this->checkIfInitialState($s);
  131. }
  132. public function testInsertWithoutParser()
  133. {
  134. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  135. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  136. $this->checkIfInitialState($s);
  137. $r = $s->set($graph1,
  138. $prefixTurtle ."\n
  139. a:A b:Name \"Test4\".
  140. ");
  141. $q = $prefixSparql." \n
  142. INSERT DATA {
  143. GRAPH <".$graph1."> {
  144. a:A b:Name \"Test2\" .
  145. a:A b:Name \"Test3\" .
  146. }}";
  147. $res = $s->queryUpdate($q );
  148. //print_r($res);
  149. $this->assertEquals(3, $s->count($graph1));
  150. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test4\" .}}";
  151. $res = $s->query($q,'raw');
  152. $this->assertTrue($res);
  153. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test3\" .}}";
  154. $res = $s->query($q,'raw');
  155. $this->assertTrue($res);
  156. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test2\" .}}";
  157. $res = $s->query($q,'raw');
  158. $this->assertTrue($res);
  159. $r = $s->delete($graph1);
  160. $this->checkIfInitialState($s);
  161. }
  162. public function testDeleteWithoutParser()
  163. {
  164. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  165. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  166. $this->checkIfInitialState($s);
  167. $r = $s->set($graph1,
  168. $prefixTurtle ."\n
  169. a:A b:Name \"Test4\".
  170. a:A b:Name \"Test2\" .
  171. a:A b:Name \"Test3\" .
  172. ");
  173. $q = $prefixSparql." \n
  174. DELETE DATA {
  175. GRAPH <".$graph1."> {
  176. a:A b:Name \"Test2\" .
  177. }}";
  178. $res = $s->queryUpdate($q );
  179. //print_r($res);
  180. $this->assertEquals(2, $s->count($graph1));
  181. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test4\" .}}";
  182. $res = $s->query($q,'raw');
  183. $this->assertTrue($res);
  184. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test3\" .}}";
  185. $res = $s->query($q,'raw');
  186. $this->assertTrue($res);
  187. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test2\" .}}";
  188. $res = $s->query($q,'raw');
  189. $this->assertFalse($res);
  190. $r = $s->delete($graph1);
  191. $this->checkIfInitialState($s);
  192. }
  193. public function testInsertDefaultGraph()
  194. {
  195. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  196. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  197. $this->checkIfInitialState($s);
  198. $q = $prefixSparql." \n
  199. INSERT DATA {
  200. a:A b:Name \"Test2\" .
  201. a:A b:Name \"Test3\" .
  202. }";
  203. $res = $s->queryUpdate($q );
  204. //print_r($res);
  205. $this->assertEquals(2, $s->count());
  206. $this->assertEquals(2, $s->count("default:"));
  207. $r = $s->delete("default:");
  208. $this->checkIfInitialState($s);
  209. }
  210. public function testDeleteDefaultGraph()
  211. {
  212. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  213. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  214. $this->checkIfInitialState($s);
  215. $r = $s->set("default:",
  216. $prefixTurtle ."\n
  217. a:A b:Name \"Test4\".
  218. a:A b:Name \"Test2\" .
  219. a:A b:Name \"Test3\" .
  220. ");
  221. $q = $prefixSparql." \n
  222. DELETE DATA {
  223. a:A b:Name \"Test2\" .
  224. }";
  225. $res = $s->queryUpdate($q );
  226. //print_r($res);
  227. $this->assertEquals(2, $s->count());
  228. //Security block without graph
  229. $q = $prefixSparql." \n
  230. DELETE DATA {
  231. a:A b:Name \"Test4\".
  232. }";
  233. $res = $s->query($q,'raw' );
  234. $err = $s->getErrors();
  235. print_r($err);
  236. $this->assertTrue(count($err)> 0);
  237. $q = $prefixSparql."\n ASK WHERE{ a:A b:Name \"Test4\" .}";
  238. $res = $s->query($q,'raw');
  239. $this->assertTrue($res);
  240. $q = $prefixSparql."\n ASK WHERE { a:A b:Name \"Test3\" .}";
  241. $res = $s->query($q,'raw');
  242. $this->assertTrue($res);
  243. $q = $prefixSparql."\n ASK WHERE { a:A b:Name \"Test2\" .}";
  244. $res = $s->query($q,'raw');
  245. $this->assertFalse($res);
  246. $r = $s->delete("default:");
  247. $this->checkIfInitialState($s);
  248. }
  249. public function testInsert()
  250. {
  251. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  252. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  253. $this->checkIfInitialState($s);
  254. $q = $prefixSparql."
  255. INSERT DATA {
  256. GRAPH <".$graph1."> {
  257. a:A b:Name \"Test2\" .
  258. a:A b:Name \"Test3\" .
  259. a:A b:Name \"Test4\" .
  260. }}";
  261. $res = $s->query($q,'raw' );
  262. $err = $s->getErrors();
  263. if ($err) {
  264. print_r($err);
  265. $this->assertTrue(false);
  266. }
  267. $this->assertTrue($res);
  268. $this->assertEquals(3, $s->count($graph1));
  269. $r = $s->delete($graph1);
  270. $this->checkIfInitialState($s);
  271. }
  272. public function testDelete()
  273. {
  274. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  275. $s = new Endpoint($EndPoint4store,false,$modeDebug);
  276. $this->checkIfInitialState($s);
  277. $r = $s->set($graph1,
  278. $prefixTurtle ."\n
  279. a:A b:Name \"Test4\".
  280. a:A b:Name \"Test2\" .
  281. a:A b:Name \"Test3\" .
  282. ");
  283. $q = $prefixSparql."
  284. DELETE DATA {
  285. GRAPH <".$graph1."> {
  286. a:A b:Name \"Test2\" .
  287. }}";
  288. $res = $s->query($q,'raw' );
  289. $err = $s->getErrors();
  290. if ($err) {
  291. print_r($err);
  292. $this->assertTrue(false);
  293. }
  294. $this->assertTrue($res);
  295. $this->assertEquals(2, $s->count($graph1));
  296. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test4\" .}}";
  297. $res = $s->query($q,'raw');
  298. $this->assertTrue($res);
  299. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test3\" .}}";
  300. $res = $s->query($q,'raw');
  301. $this->assertTrue($res);
  302. $q = $prefixSparql."\n ASK WHERE { GRAPH <".$graph1."> { a:A b:Name \"Test2\" .}}";
  303. $res = $s->query($q,'raw');
  304. $this->assertFalse($res);
  305. $r = $s->delete($graph1);
  306. $this->checkIfInitialState($s);
  307. }
  308. // public function testSelectDBpedia()
  309. // {
  310. // global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  311. // $q = 'select * where {?x ?y ?z.} LIMIT 5';
  312. // $sp = new Endpoint("http://dbpedia.org/",true);
  313. //
  314. // $rows = $sp->query($q, 'rows');
  315. // //print_r($rows);
  316. // $err = $sp->getErrors();
  317. // if ($err) {
  318. // print_r($err);
  319. // $this->assertTrue(false);
  320. // }
  321. // $this->assertEquals(5,count($rows));
  322. // }
  323. private function checkIfInitialState($s){
  324. global $EndPoint4store,$modeDebug,$prefixSparql,$prefixTurtle,$graph1,$graph2;
  325. $this->assertEquals(0, $s->count($graph1));
  326. $this->assertEquals(0, $s->count($graph2));
  327. $this->assertEquals(0, $s->count());
  328. }
  329. }