[isidorus-cvs] r341 - in trunk/src: TM-SPARQL unit_tests
Lukas Giessmann
lgiessmann at common-lisp.net
Thu Nov 18 20:04:16 UTC 2010
Author: lgiessmann
Date: Thu Nov 18 15:04:16 2010
New Revision: 341
Log:
fixed several bugs in the processing of PREFIX-statements
Modified:
trunk/src/TM-SPARQL/sparql.lisp
trunk/src/TM-SPARQL/sparql_parser.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 Thu Nov 18 15:04:16 2010
@@ -18,7 +18,7 @@
(defclass SPARQL-Query ()
- ((original-query :initarg :original-query
+ ((original-query :initarg :query
:reader original-query
:type String
:initform (error
@@ -29,6 +29,7 @@
(prefix-list :initarg :prefix-list
:reader prefix-list
:type List
+ :initform nil
:documentation "A list of the form
((:label 'id' :value 'prefix'))")
(variables :initarg :variables
@@ -48,10 +49,10 @@
(:documentation "Adds the new prefix tuple to the list of all existing.
If there already exists a tuple with the same label
the label's value will be overwritten by the new value.")
- (:method ((construct SPARQL-Query) (prefix-label Symbol) (prefix-value String))
+ (:method ((construct SPARQL-Query) (prefix-label String) (prefix-value String))
(let ((existing-tuple
(find-if #'(lambda(x)
- (eql (getf x :label) prefix-label))
+ (string= (getf x :label) prefix-label))
(prefix-list construct))))
(if existing-tuple
(setf (getf existing-tuple :value) prefix-value)
@@ -62,5 +63,5 @@
(defmethod initialize-instance :after ((construct SPARQL-Query) &rest args)
(declare (ignorable args))
- (parser-start construct)
+ (parser-start construct (original-query construct))
construct)
Modified: trunk/src/TM-SPARQL/sparql_parser.lisp
==============================================================================
--- trunk/src/TM-SPARQL/sparql_parser.lisp (original)
+++ trunk/src/TM-SPARQL/sparql_parser.lisp Thu Nov 18 15:04:16 2010
@@ -26,10 +26,10 @@
(:method ((construct SPARQL-Query) (query-string String))
(let ((trimmed-query-string (trim-whitespace-left query-string)))
(cond ((string-starts-with trimmed-query-string "SELECT")
- (parse-prefixes construct
- (string-after trimmed-query-string "SELECT")))
+ nil) ;;TODO: implement
((string-starts-with trimmed-query-string "PREFIX")
- nil) ;TODO: implement
+ (parse-prefixes construct
+ (string-after trimmed-query-string "PREFIX")))
((string-starts-with trimmed-query-string "BASE")
nil) ;TODO: implement
(t
@@ -52,6 +52,9 @@
(next-query-str
(trim-whitespace-left (string-after trimmed-string ":")))
(results (parse-bracket-value next-query-str construct)))
+ (when (string= label-name trimmed-string)
+ (error (make-sparql-parser-condition
+ trimmed-string (original-query construct) ":")))
(add-prefix construct label-name (getf results :value))
(parser-start construct (getf results :query-string)))))))
@@ -63,12 +66,9 @@
(declare (String query-string open close)
(SPARQL-Query query-object))
(let ((trimmed-string (trim-whitespace-left query-string)))
- (if (and (string-starts-with trimmed-string open)
- (> (length (string-after trimmed-string close)) 0))
- (let* ((pref-url
- (string-until (string-after trimmed-string open) close))
- (next-query-str
- (string-after pref-url close)))
+ (if (string-starts-with trimmed-string open)
+ (let* ((pref-url (string-until (string-after trimmed-string open) close))
+ (next-query-str (string-after trimmed-string close)))
(unless next-query-str
(error (make-sparql-parser-condition
trimmed-string (original-query query-object)
@@ -77,7 +77,7 @@
:value pref-url))
(error (make-sparql-parser-condition
trimmed-string (original-query query-object)
- open)))))
+ close)))))
Modified: trunk/src/unit_tests/sparql_test.lisp
==============================================================================
--- trunk/src/unit_tests/sparql_test.lisp (original)
+++ trunk/src/unit_tests/sparql_test.lisp Thu Nov 18 15:04:16 2010
@@ -24,5 +24,13 @@
(in-suite sparql-test)
+;TODO: prefix tests
+;PREFIX foaf : <http://xmlns.com/foaf/0.1/>
+;PREFIX org: <http://example.com/ns#>
+;PREFIX isi:<http://isidor.us>
+;PREFIX :<http://some.where>
+;PREFIX foaf : <http://overwrite.foaf>"
+
+
(defun run-sparql-tests ()
(it.bese.fiveam:run! 'sparql-test:sparql-tests))
\ No newline at end of file
More information about the Isidorus-cvs
mailing list