Author: lgiessmann Date: Mon Apr 4 04:50:25 2011 New Revision: 412
Log: TM-SPARQL: fixed a bug in the processing of final results when creating result-intersections and finished a unit-tests for such a scenario
Modified: trunk/src/TM-SPARQL/sparql.lisp trunk/src/unit_tests/sparql_test.lisp
Modified: trunk/src/TM-SPARQL/sparql.lisp ============================================================================== --- trunk/src/TM-SPARQL/sparql.lisp (original) +++ trunk/src/TM-SPARQL/sparql.lisp Mon Apr 4 04:50:25 2011 @@ -1080,7 +1080,7 @@ :result (subject-result triple))) (when (variable-p (predicate triple)) (list :variable (value (predicate triple)) - :result (predicate-result triple))) + :result (predicate-result triple))) (when (variable-p (object triple)) (list :variable (value (object triple)) :result (object-result triple))))))))) @@ -1116,7 +1116,7 @@ (let* ((all-values (results-for-variable variable-name result-lists)) (list-1 (when (>= (length all-values) 1) (first all-values))) - (list-2 (if (> (length all-values) 2) + (list-2 (if (>= (length all-values) 2) (second all-values) list-1)) (more-lists (rest (rest all-values))))
Modified: trunk/src/unit_tests/sparql_test.lisp ============================================================================== --- trunk/src/unit_tests/sparql_test.lisp (original) +++ trunk/src/unit_tests/sparql_test.lisp Mon Apr 4 04:50:25 2011 @@ -2079,6 +2079,7 @@ (map 'list #'(lambda(item) (cond ((string= (getf item :variable) "pred1") ;one name without a type so it is not listed + ;as regular triple but as tms:topicProperty (is (= (length (getf item :result)) 17))) ((string= (getf item :variable) "pred2") (is (= (length (getf item :result)) 3)) @@ -2297,17 +2298,49 @@
+(test test-all-13 + "Tests the entire module with the file sparql_test.xtm" + (with-fixture with-tm-filled-db ("data_base" *sparql_test.xtm*) + (tm-sparql:init-tm-sparql) + (let* ((q-1 (concat + "PREFIX tms:<" *tms* "> + SELECT * WHERE { + ?assoc tms:reifier http://some.where/ii/association-reifier. + ?assoc tms:role ?roles. + ?roles tms:reifier http://some.where/ii/role-reifier" + "}")) + (r-1 (tm-sparql:result (make-instance 'TM-SPARQL:SPARQL-Query :query q-1)))) + (is-true (= (length r-1) 2)) + (map 'list #'(lambda(item) + (cond + ((string= (getf item :variable) "assoc") + (is (= (length (getf item :result)) 1)) + (is (string= (first (getf item :result)) + "http://some.where/ii/association"))) + ((string= (getf item :variable) "roles") + (is (= (length (getf item :result)) 1)) + (is + (string= + (first (getf item :result)) + (concat + "_:r" + (write-to-string + (elephant::oid + (loop for role in + (roles + (get-item-by-item-identifier + "http://some.where/ii/association" + :revision 0) :revision 0) + when (string= + (uri (first (psis (player role :revision 0) + :revision 0))) + "http://some.where/tmsparql/author/goethe") + return role))))))))) + r-1))))
-;TODO: test complex filters, -; test complex relations between variables -;TODO: PREFIX tms:http://www.networkedplanet.com/tmsparql/ -; SELECT * WHERE { -; ?assoc tms:reifier http://some.where/ii/association-reifier. -; ?assoc tms:role ?roles} -; => ?assoc = http://some.where/ii/association -; => ?roles = (http://some.where/ii/role-2, _:r????)
+;TODO: test complex filters
(defun run-sparql-tests () (it.bese.fiveam:run! 'sparql-test:sparql-tests))