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

Lukas Giessmann lgiessmann at common-lisp.net
Fri Apr 1 14:40:07 UTC 2011


Author: lgiessmann
Date: Fri Apr  1 10:40:07 2011
New Revision: 405

Log:
TM-SPARQL: finsihed the unit-tests for the special-uri of the form <subj> <pred> <obj> => fixed a bug with names playing the role of object-resources

Modified:
   trunk/src/TM-SPARQL/sparql.lisp
   trunk/src/TM-SPARQL/sparql_special_uris.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	Fri Apr  1 10:40:07 2011
@@ -780,7 +780,9 @@
 		  subj pred (value (object construct))
 		  (literal-datatype (object construct)) :revision revision)))
 	      ((and (iri-p (object construct))
-		    (typep subj 'TopicC))
+		    (typep subj 'TopicC)
+		    (or (variable-p (object construct))
+			(typep (value (object construct)) 'TopicC)))
 	       (filter-associations subj pred (value (object construct))
 				    :revision revision)))))))
 

Modified: trunk/src/TM-SPARQL/sparql_special_uris.lisp
==============================================================================
--- trunk/src/TM-SPARQL/sparql_special_uris.lisp	(original)
+++ trunk/src/TM-SPARQL/sparql_special_uris.lisp	Fri Apr  1 10:40:07 2011
@@ -253,14 +253,19 @@
 		     (literal-p obj)))
 	(cond ((and (not (variable-p subj))
 		    (not (variable-p obj)))
-	       (when (or (and (typep subj 'NameC)
-			      (string= literal-datatype *xml-string*)
+	       (if (typep (value subj) 'NameC)
+		   (when (and (string= literal-datatype *xml-string*)
 			      (string= (charvalue (value subj)) (value obj)))
-			 (filter-datatypable-by-value subj obj literal-datatype))
-		 (list (list :subject subj-uri
-			     :predicate pred-uri
-			     :object (value obj)
-			     :literal-datatype literal-datatype))))
+		     (list (list :subject subj-uri
+				 :predicate pred-uri
+				 :object (value obj)
+				 :literal-datatype literal-datatype)))
+		   (when (filter-datatypable-by-value (value subj) (value obj)
+						      literal-datatype)
+		     (list (list :subject subj-uri
+				 :predicate pred-uri
+				 :object (value obj)
+				 :literal-datatype literal-datatype)))))
 	      ((not (variable-p subj))
 	       (list (list :subject subj-uri
 			   :predicate pred-uri

Modified: trunk/src/unit_tests/sparql_test.lisp
==============================================================================
--- trunk/src/unit_tests/sparql_test.lisp	(original)
+++ trunk/src/unit_tests/sparql_test.lisp	Fri Apr  1 10:40:07 2011
@@ -1926,9 +1926,28 @@
 	   r-1))))
 
 
+(test test-all-9
+  "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:<http://www.networkedplanet.com/tmsparql/>
+                  SELECT * WHERE {
+                   <http://some.where/tmsparql/author/goethe> a <http://some.where/tmsparql/author>.
+	           <http://some.where/ii/goethe-occ> tms:reifier <http://some.where/ii/goethe-occ-reifier>.
+                   <http://some.where/ii/association> tms:role <http://some.where/ii/role-2>.
+                   <http://some.where/ii/role-2> tms:player <http://some.where/psis/poem/zauberlehrling>.
+                   <http://some.where/tmsparql/author/goethe> tms:topicProperty <http://some.where/ii/goethe-untyped-name>.
+                   <http://some.where/ii/goethe-variant> tms:scope <http://some.where/tmsparql/display-name>.
+                   <http://some.where/ii/goethe-untyped-name> tms:value 'Johann Wolfgang von Goethe'"
+                 "}"))
+	   (r-1 (tm-sparql:result (make-instance 'TM-SPARQL:SPARQL-Query :query q-1))))
+      (is-false r-1))))
 
-;TODO: tms:value, complex filter,
-;      <obj> <pred> <subj>,
+
+
+
+;TODO: complex filter,
 ;      ?obj <pred> ?subj,
 ;      <subj> ?pred ?obj,
 ;      ?subj ?pred <obj>




More information about the Isidorus-cvs mailing list