[isidorus-cvs] r348 - in trunk/src: TM-SPARQL unit_tests

Lukas Giessmann lgiessmann at common-lisp.net
Mon Nov 22 20:54:02 UTC 2010


Author: lgiessmann
Date: Mon Nov 22 15:54:02 2010
New Revision: 348

Log:
TM-SPARQL: added some unit-tests for parsing of more triples in a statment => fixed a bug when collecting the values of those triples

Modified:
   trunk/src/TM-SPARQL/sparql_parser.lisp
   trunk/src/unit_tests/sparql_test.lisp

Modified: trunk/src/TM-SPARQL/sparql_parser.lisp
==============================================================================
--- trunk/src/TM-SPARQL/sparql_parser.lisp	(original)
+++ trunk/src/TM-SPARQL/sparql_parser.lisp	Mon Nov 22 15:54:02 2010
@@ -419,9 +419,10 @@
 
 (defgeneric parse-triple (construct query-string values &key last-subject)
   (:documentation "Parses a triple within a trippel group and returns a
-                   a list of the form (:next-query :subject (:type <'VAR|'IRI>
-                   :value string) :predicate (:type <'VAR|'IRI> :value string)
-                   :object (:type <'VAR|'IRI|'LITERAL> :value string)).")
+                   a list of the form (:next-query :values (:subject
+                   (:type <'VAR|'IRI> :value string) :predicate
+                   (:type <'VAR|'IRI> :value string)
+                   :object (:type <'VAR|'IRI|'LITERAL> :value string))).")
   (:method ((construct SPARQL-Query) (query-string String) (values List)
 	    &key (last-subject nil))
     (declare (List last-subject))
@@ -437,9 +438,10 @@
 	   (object-result (parse-triple-elem (getf predicate-result :next-query)
 					     construct :literal-allowed t))
 	   (all-values (append values
-			       (list :subject (getf subject-result :value)
-				     :predicate (getf predicate-result :value)
-				     :object (getf object-result :value)))))
+			       (list
+				(list :subject (getf subject-result :value)
+				      :predicate (getf predicate-result :value)
+				      :object (getf object-result :value))))))
       (let ((tr-str (cut-comment (getf object-result :next-query))))
 	(cond ((string-starts-with tr-str ";")
 	       (parse-triple construct (subseq tr-str 1) 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 Nov 22 15:54:02 2010
@@ -276,5 +276,150 @@
     (signals sparql-parser-error 
       (tm-sparql::parse-triple-elem query-8 dummy-object))))
 
+
+(test test-parse-group-1
+  "Test various functionality of several functions responsible for parsing
+   the SELECT-WHERE-statement."
+  (let ((query-1 "?subject ?predicate $object }")
+	(query-2 "<subject> pref:predicate 1234.5e12}")
+	(query-3 "pref:subject ?predicate 'literal'@en}")
+	(dummy-object (make-instance 'SPARQL-Query :query ""
+				     :base "http://base.value/")))
+    (is-true dummy-object)
+    (tm-sparql::add-prefix dummy-object "pref" "http://prefix.value/")
+    (let ((result (tm-sparql::parse-triple dummy-object query-1 nil)))
+      (is (string= (getf result :next-query) "}"))
+      (is (= (length (getf result :values)) 1))
+      (is (eql (getf (getf (first (getf result :values)) :subject) :type)
+	       'TM-SPARQL::VAR))
+      (is (string= (getf (getf (first (getf result :values)) :subject) :value)
+		   "subject"))
+      (is (eql (getf (getf (first (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::VAR))
+      (is (string= (getf (getf (first (getf result :values)) :predicate) :value)
+		   "predicate"))
+      (is (eql (getf (getf (first (getf result :values)) :object) :type)
+	       'TM-SPARQL::VAR))
+      (is (string= (getf (getf (first (getf result :values)) :object) :value)
+		   "object")))
+    (let ((result (tm-sparql::parse-triple dummy-object query-2 nil)))
+      (is (string= (getf result :next-query) "}"))
+      (is (eql (getf (getf (first (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :subject) :value)
+		   "http://base.value/subject"))
+      (is (eql (getf (getf (first (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :predicate) :value)
+		   "http://prefix.value/predicate"))
+      (is (eql (getf (getf (first (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (= (getf (getf (first (getf result :values)) :object) :value)
+	     1234.5e12))
+      (is (string= (getf (getf (first (getf result :values)) :object)
+			 :literal-type)
+		   *xml-double*)))
+    (let ((result (tm-sparql::parse-triple dummy-object query-3 nil)))
+      (is (string= (getf result :next-query) "}"))
+      (is (eql (getf (getf (first (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :subject) :value)
+		   "http://prefix.value/subject"))
+      (is (eql (getf (getf (first (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::VAR))
+      (is (string= (getf (getf (first (getf result :values)) :predicate) :value)
+		   "predicate"))
+      (is (eql (getf (getf (first (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (string= (getf (getf (first (getf result :values)) :object) :value)
+		   "literal"))
+      (is (string= (getf (getf (first (getf result :values)) :object)
+			 :literal-lang)
+		   "en")))))
+
+
+(test test-parse-group-2
+  "Test various functionality of several functions responsible for parsing
+   the SELECT-WHERE-statement."
+  (let ((query-4 (concatenate 'string "<subject> <predicate> '''true'''^^"
+			      *xml-boolean* "; pref:predicate-2 \"12\"^^"
+			      *xml-integer* "}"))
+	(query-5 (concatenate 'string "<subject> <predicate> '''false'''^^"
+			      *xml-boolean* "; pref:predicate-2 \"abc\"^^"
+			      *xml-string* "}"))
+	(dummy-object (make-instance 'SPARQL-Query :query ""
+				     :base "http://base.value/")))
+    (is-true dummy-object)
+    (tm-sparql::add-prefix dummy-object "pref" "http://prefix.value/")
+    (let ((result (tm-sparql::parse-triple dummy-object query-4 nil)))
+      (is (string= (getf result :next-query) "}"))
+      (is (= (length (getf result :values)) 2))
+      (is (eql (getf (getf (first (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :subject) :value)
+		   "http://base.value/subject"))
+      (is (eql (getf (getf (first (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :predicate) :value)
+		   "http://base.value/predicate"))
+      (is (eql (getf (getf (first (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (eql (getf (getf (first (getf result :values)) :object) :value) t))
+      (is (string= (getf (getf (first (getf result :values)) :object)
+			 :literal-type)
+		   *xml-boolean*))
+      (is (string= (getf result :next-query) "}"))
+      (is (= (length (getf result :values)) 2))
+      (is (eql (getf (getf (second (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (second (getf result :values)) :subject) :value)
+		   "http://base.value/subject"))
+      (is (eql (getf (getf (second (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (second (getf result :values)) :predicate) :value)
+		   "http://prefix.value/predicate-2"))
+      (is (eql (getf (getf (second (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (= (getf (getf (second (getf result :values)) :object) :value) 12))
+      (is (string= (getf (getf (second (getf result :values)) :object)
+			 :literal-type)
+		   *xml-integer*)))
+    (let ((result (tm-sparql::parse-triple dummy-object query-5 nil)))
+      (is (string= (getf result :next-query) "}"))
+      (is (= (length (getf result :values)) 2))
+      (is (eql (getf (getf (first (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :subject) :value)
+		   "http://base.value/subject"))
+      (is (eql (getf (getf (first (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (first (getf result :values)) :predicate) :value)
+		   "http://base.value/predicate"))
+      (is (eql (getf (getf (first (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (eql (getf (getf (first (getf result :values)) :object) :value) nil))
+      (is (string= (getf (getf (first (getf result :values)) :object)
+			 :literal-type)
+		   *xml-boolean*))
+      (is (string= (getf result :next-query) "}"))
+      (is (= (length (getf result :values)) 2))
+      (is (eql (getf (getf (second (getf result :values)) :subject) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (second (getf result :values)) :subject) :value)
+		   "http://base.value/subject"))
+      (is (eql (getf (getf (second (getf result :values)) :predicate) :type)
+	       'TM-SPARQL::IRI))
+      (is (string= (getf (getf (second (getf result :values)) :predicate) :value)
+		   "http://prefix.value/predicate-2"))
+      (is (eql (getf (getf (second (getf result :values)) :object) :type)
+	       'TM-SPARQL::LITERAL))
+      (is (string= (getf (getf (second (getf result :values)) :object) :value)
+		   "abc"))
+      (is (string= (getf (getf (second (getf result :values)) :object)
+			 :literal-type)
+		   *xml-string*)))))
+
+
+
 (defun run-sparql-tests ()
   (it.bese.fiveam:run! 'sparql-test:sparql-tests))




More information about the Isidorus-cvs mailing list