Author: lgiessmann Date: Tue May 10 05:38:24 2011 New Revision: 465
Log: JTM: added unit-tests for importing jtm-strings containing entire topic maps
Added: trunk/src/unit_tests/jtm_1.0_test.jtm trunk/src/unit_tests/jtm_1.1_test.jtm Modified: trunk/src/base-tools/base-tools.lisp trunk/src/isidorus.asd trunk/src/json/JTM/jtm_importer.lisp trunk/src/unit_tests/jtm_test.lisp
Modified: trunk/src/base-tools/base-tools.lisp ============================================================================== --- trunk/src/base-tools/base-tools.lisp (original) +++ trunk/src/base-tools/base-tools.lisp Tue May 10 05:38:24 2011 @@ -47,7 +47,7 @@ :get-store-spec :open-tm-store :close-tm-store - :read-file)) + :read-file-to-string))
(in-package :base-tools)
@@ -587,7 +587,7 @@ (elephant:close-store))
-(defun read-file (file-path) +(defun read-file-to-string (file-path) "A helper function that reads a file and returns the content as a string." (with-open-file (stream file-path) (let ((file-string ""))
Modified: trunk/src/isidorus.asd ============================================================================== --- trunk/src/isidorus.asd (original) +++ trunk/src/isidorus.asd Tue May 10 05:38:24 2011 @@ -117,6 +117,8 @@ "json" "threading" "base-tools")) (:module "unit_tests" :components ((:static-file "textgrid.xtm") + (:static-file "jtm_1.0_test.jtm") + (:static-file "jtm_1.1_test.jtm") (:static-file "textgrid_old.xtm") (:static-file "dangling_topicref.xtm") (:static-file "inconsistent.xtm")
Modified: trunk/src/json/JTM/jtm_importer.lisp ============================================================================== --- trunk/src/json/JTM/jtm_importer.lisp (original) +++ trunk/src/json/JTM/jtm_importer.lisp Tue May 10 05:38:24 2011 @@ -35,8 +35,9 @@ is a topicmap and it has no item-identifiers defined, a JTM-error is thrown." (declare (String jtm-string) - (type (or Null String) tm-id)) - + (type (or Null String) tm-id) + (Integer revision) + (Keyword jtm-format)) (let* ((jtm-list (json:decode-json-from-string jtm-string)) (version (get-item :VERSION jtm-list)) (item_type (get-item :ITEM--TYPE jtm-list)) @@ -51,7 +52,7 @@ (unless (string= version "1.1") (error (make-condition 'exceptions:JTM-error :message (format nil "From import-construct-from-jtm-string(): the member version must be set to "1.1" in JTM version 1.1, but is ~a" version))))) (t - (error (make-condition 'exceptions:JTM-error :message (format nil "From import-construct-from-jtm-string(): only JTM format 1.0 and 1.1 is supported, but found: ~a" jtm-format))))) + (error (make-condition 'exceptions:JTM-error :message (format nil "From import-construct-from-jtm-string(): only JTM format "1.0" and "1.1" is supported, but found: "~a"" jtm-format))))) (cond ((or (not item_type) (string= item_type item_type-topicmap)) (import-topic-map-from-jtm-list @@ -88,7 +89,8 @@ (Keyword jtm-format) (Integer revision)) (open-tm-store repository-path) - (import-construct-from-jtm-string (read-file jtm-path) :tm-id tm-id :revision revision + (import-construct-from-jtm-string (read-file-to-string jtm-path) + :tm-id tm-id :revision revision :jtm-format jtm-format) (close-tm-store))
@@ -105,8 +107,9 @@ (get-item :ITEM--IDENTIFIERS jtm-list) :prefixes prefixes) (when tm-id - (make-construct 'ItemIdentifierC - :uri tm-id))))) + (list + (make-construct 'ItemIdentifierC + :uri tm-id)))))) (unless value (error (make-condition 'JTM-error :message (format nil "From import-topic-map-from-jtm-list(): no topic-map item-identifier is set for ~a" jtm-list)))) value)) @@ -234,6 +237,7 @@ :roles role-lists))) (dolist (tm local-parent) (add-to-tm tm assoc)) + (format t "a") assoc)))
@@ -374,6 +378,7 @@ (add-name top name :revision revision)) (dolist (occ top-occs) (add-occurrence top occ :revision revision)) + (format t "t") top))
Added: trunk/src/unit_tests/jtm_1.0_test.jtm ============================================================================== --- (empty file) +++ trunk/src/unit_tests/jtm_1.0_test.jtm Tue May 10 05:38:24 2011 @@ -0,0 +1 @@ +{"version":"1.0","item_identifiers":null,"topics":[{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#topic"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#association"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#occurrence"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#class-instance"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#class"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#supertype-subtype"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#supertype"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#subtype"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#sort"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://www.topicmaps.org/xtm/1.0/core.xtm#display"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/iso13250/model/type-instance"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/iso13250/model/type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/iso13250/model/instance"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/topic-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/occurrence-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/association-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/written-by"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/role-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/written"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/writer"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/name-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://psi.topicmaps.org/tmcl/scope-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/author"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/poem"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/first-name"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/last-name"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/title"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/display-name"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/de"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/date-of-birth"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/date-of-death"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/poem-content"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/years"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/isDead"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/isAlive"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/reifier-type"],"subject_locators":null,"item_identifiers":null,"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/tmsparql/author/goethe"],"subject_locators":null,"item_identifiers":["http://some.where/ii/goethe"],"names":[{"item_identifiers":null,"value":"Johann Wolfgang","type":"si:http://some.where/tmsparql/first-name","scope":null,"variants":null,"reifier":null},{"item_identifiers":null,"value":"von Goethe","type":"si:http://some.where/tmsparql/last-name","scope":null,"variants":[{"item_identifiers":["http://some.where/ii/goethe-variant"],"datatype":"http://www.w3.org/2001/XMLSchema#string","value":"Goethe","scope":["si:http://some.where/tmsparql/display-name"],"reifier":null}],"reifier":"ii:http://some.where/ii/goethe-name-reifier"},{"item_identifiers":["http://some.where/ii/goethe-untyped-name"],"value":"Johann Wolfgang von Goethe","type":null,"scope":null,"variants":null,"reifier":null}],"occurrences":[{"item_identifiers":["http://some.where/ii/goethe-occ"],"datatype":"http://www.w3.org/2001/XMLSchema#date","type":"si:http://some.where/tmsparql/date-of-birth","value":"28.08.1749","scope":null,"reifier":"ii:http://some.where/ii/goethe-occ-reifier"},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#date","type":"si:http://some.where/tmsparql/date-of-death","value":"22.03.1832","scope":null,"reifier":null},{"item_identifiers":["http://some.where/ii/goethe-years-occ"],"datatype":"http://www.w3.org/2001/XMLSchema#integer","type":"si:http://some.where/tmsparql/years","value":"82","scope":null,"reifier":null},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#boolean","type":"si:http://some.where/tmsparql/isDead","value":"true","scope":null,"reifier":null},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#boolean","type":"si:http://some.where/tmsparql/isAlive","value":"false","scope":null,"reifier":null}]},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["http://some.where/ii/goethe-occ-reifier"],"names":null,"occurrences":null},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["http://some.where/ii/goethe-name-reifier"],"names":null,"occurrences":null},{"subject_identifiers":["http://some.where/psis/poem/zauberlehrling"],"subject_locators":null,"item_identifiers":null,"names":[{"item_identifiers":null,"value":"Der Zauberlehrling","type":"si:http://some.where/tmsparql/title","scope":null,"variants":null,"reifier":null}],"occurrences":[{"item_identifiers":["http://some.where/ii/zb/occurrence"],"datatype":"http://www.w3.org/2001/XMLSchema#string","type":"si:http://some.where/tmsparql/poem-content","value":"Hat der alte Hexenmeister\n\tsich doch einmal wegbegeben!\n\t...","scope":["si:http://some.where/tmsparql/de"],"reifier":null}]},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["http://some.where/ii/association-reifier"],"names":null,"occurrences":null},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["http://some.where/ii/role-reifier"],"names":null,"occurrences":null}],"associations":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/association-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/association-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/written-by"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/role-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/role-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/written"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/role-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/writer"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/name-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/scope-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/author"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/poem"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/name-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/first-name"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/name-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/last-name"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/name-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/title"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/scope-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/display-name"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/scope-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/de"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/date-of-birth"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/date-of-death"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/poem-content"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/years"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/isDead"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/occurrence-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/isAlive"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://psi.topicmaps.org/tmcl/topic-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/reifier-type"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/author"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/tmsparql/author/goethe"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/reifier-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"ii:http://some.where/ii/goethe-occ-reifier"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/reifier-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"ii:http://some.where/ii/goethe-name-reifier"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/poem"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"si:http://some.where/psis/poem/zauberlehrling"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/reifier-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"ii:http://some.where/ii/association-reifier"}]},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type-instance","reifier":null,"scope":null,"roles":[{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/type","reifier":null,"player":"si:http://some.where/tmsparql/reifier-type"},{"item_identifiers":null,"type":"si:http://psi.topicmaps.org/iso13250/model/instance","reifier":null,"player":"ii:http://some.where/ii/role-reifier"}]},{"item_identifiers":["http://some.where/ii/association"],"type":"si:http://some.where/tmsparql/written-by","reifier":"ii:http://some.where/ii/association-reifier","scope":null,"roles":[{"item_identifiers":null,"type":"si:http://some.where/tmsparql/writer","reifier":"ii:http://some.where/ii/role-reifier","player":"si:http://some.where/tmsparql/author/goethe"},{"item_identifiers":["http://some.where/ii/role-2"],"type":"si:http://some.where/tmsparql/written","reifier":null,"player":"si:http://some.where/psis/poem/zauberlehrling"}]}],"item_type":"topicmap","reifier":null}
Added: trunk/src/unit_tests/jtm_1.1_test.jtm ============================================================================== --- (empty file) +++ trunk/src/unit_tests/jtm_1.1_test.jtm Tue May 10 05:38:24 2011 @@ -0,0 +1 @@ +{"version":"1.1","prefixes":{"pref_1":"http://www.topicmaps.org/xtm/1.0/core.xtm#","pref_2":"http://psi.topicmaps.org/iso13250/model/","pref_5":"http://some.where/tmsparql/author/","xsd":"http://www.w3.org/2001/XMLSchema#","pref_3":"http://psi.topicmaps.org/tmcl/","pref_6":"http://some.where/psis/poem/","pref_4":"http://some.where/tmsparql/","pref_7":"http://some.where/ii/zb/","pref_8":"http://some.where/ii/"},"item_identifiers":["[pref_4:jtm-tm]"],"topics":[{"subject_identifiers":["[pref_1:topic]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:association]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:occurrence]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:class-instance]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:class]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:supertype-subtype]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:supertype]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:subtype]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:sort]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_1:display]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_2:type-instance]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_2:type]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_2:instance]"],"subject_locators":null,"item_identifiers":null,"instance_of":null,"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:topic-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:occurrence-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:association-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:written-by]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:association-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:role-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:written]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:role-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:writer]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:role-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:name-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_3:scope-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:author]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:poem]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:first-name]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:name-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:last-name]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:name-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:title]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:name-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:display-name]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:scope-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:de]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:scope-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:date-of-birth]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:date-of-death]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:poem-content]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:years]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:isDead]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:isAlive]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:occurrence-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_4:reifier-type]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_3:topic-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_5:goethe]"],"subject_locators":null,"item_identifiers":["[pref_8:goethe]"],"instance_of":["si:[pref_4:author]"],"names":[{"item_identifiers":null,"value":"Johann Wolfgang","type":"si:[pref_4:first-name]","scope":null,"variants":null,"reifier":null},{"item_identifiers":null,"value":"von Goethe","type":"si:[pref_4:last-name]","scope":null,"variants":[{"item_identifiers":["[pref_8:goethe-variant]"],"datatype":"http://www.w3.org/2001/XMLSchema#string","value":"Goethe","scope":["si:[pref_4:display-name]"],"reifier":null}],"reifier":"ii:[pref_8:goethe-name-reifier]"},{"item_identifiers":["[pref_8:goethe-untyped-name]"],"value":"Johann Wolfgang von Goethe","type":null,"scope":null,"variants":null,"reifier":null}],"occurrences":[{"item_identifiers":["[pref_8:goethe-occ]"],"datatype":"http://www.w3.org/2001/XMLSchema#date","type":"si:[pref_4:date-of-birth]","value":"28.08.1749","scope":null,"reifier":"ii:[pref_8:goethe-occ-reifier]"},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#date","type":"si:[pref_4:date-of-death]","value":"22.03.1832","scope":null,"reifier":null},{"item_identifiers":["[pref_8:goethe-years-occ]"],"datatype":"http://www.w3.org/2001/XMLSchema#integer","type":"si:[pref_4:years]","value":"82","scope":null,"reifier":null},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#boolean","type":"si:[pref_4:isDead]","value":"true","scope":null,"reifier":null},{"item_identifiers":null,"datatype":"http://www.w3.org/2001/XMLSchema#boolean","type":"si:[pref_4:isAlive]","value":"false","scope":null,"reifier":null}]},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["[pref_8:goethe-occ-reifier]"],"instance_of":["si:[pref_4:reifier-type]"],"names":null,"occurrences":null},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["[pref_8:goethe-name-reifier]"],"instance_of":["si:[pref_4:reifier-type]"],"names":null,"occurrences":null},{"subject_identifiers":["[pref_6:zauberlehrling]"],"subject_locators":null,"item_identifiers":null,"instance_of":["si:[pref_4:poem]"],"names":[{"item_identifiers":null,"value":"Der Zauberlehrling","type":"si:[pref_4:title]","scope":null,"variants":null,"reifier":null}],"occurrences":[{"item_identifiers":["[pref_7:occurrence]"],"datatype":"http://www.w3.org/2001/XMLSchema#string","type":"si:[pref_4:poem-content]","value":"Hat der alte Hexenmeister\n\tsich doch einmal wegbegeben!\n\t...","scope":["si:[pref_4:de]"],"reifier":null}]},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["[pref_8:association-reifier]"],"instance_of":["si:[pref_4:reifier-type]"],"names":null,"occurrences":null},{"subject_identifiers":null,"subject_locators":null,"item_identifiers":["[pref_8:role-reifier]"],"instance_of":["si:[pref_4:reifier-type]"],"names":null,"occurrences":null}],"associations":[{"item_identifiers":["[pref_8:association]"],"type":"si:[pref_4:written-by]","reifier":"ii:[pref_8:association-reifier]","scope":null,"roles":[{"item_identifiers":null,"type":"si:[pref_4:writer]","reifier":"ii:[pref_8:role-reifier]","player":"si:[pref_5:goethe]"},{"item_identifiers":["[pref_8:role-2]"],"type":"si:[pref_4:written]","reifier":null,"player":"si:[pref_6:zauberlehrling]"}]}],"item_type":"topicmap","reifier":null}
Modified: trunk/src/unit_tests/jtm_test.lisp ============================================================================== --- trunk/src/unit_tests/jtm_test.lisp (original) +++ trunk/src/unit_tests/jtm_test.lisp Tue May 10 05:38:24 2011 @@ -44,7 +44,12 @@ :test-import-topics :test-merge-topics :test-import-associations - :test-import-roles)) + :test-import-roles + :test-import-topic-maps-1 + :test-import-topic-maps-2 + :test-import-topic-maps-3 + :test-import-topic-maps-4 + :test-import-topic-maps-5))
(in-package :jtm-test) @@ -1022,10 +1027,10 @@ (export-as-jtm jtm-path-2 :tm-id nil :revision 0 :jtm-format :1.0) (export-as-jtm jtm-path-3 :tm-id fixtures::tm-id :revision 0 :jtm-format :1.1) (export-as-jtm jtm-path-4 :tm-id fixtures::tm-id :revision 0 :jtm-format :1.0) - (let ((jtm-str-1 (read-file jtm-path-1)) - (jtm-str-2 (read-file jtm-path-2)) - (jtm-str-3 (read-file jtm-path-3)) - (jtm-str-4 (read-file jtm-path-4)) + (let ((jtm-str-1 (read-file-to-string jtm-path-1)) + (jtm-str-2 (read-file-to-string jtm-path-2)) + (jtm-str-3 (read-file-to-string jtm-path-3)) + (jtm-str-4 (read-file-to-string jtm-path-4)) (prefixes (list (list :pref "pref_1" :value "http://www.topicmaps.org/xtm/1.0/core.xtm#") @@ -2291,10 +2296,592 @@ (json:decode-json-from-string "{"version":"1.0","item_identifiers":null,"type":null,"item_type":"role","reifier":null,"player":"ii:http:\/\/some.where\/ii-1"}") parent-1 :revision 100)))))
+ +(test test-import-topic-maps-1 + "Tests the function import-topic-map-from-jtm-list." + (with-fixture with-empty-db ("data_base") + (let ((jtm-str + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.1_test.jtm")))) + (let ((tm (import-construct-from-jtm-string + jtm-str :revision 100 :jtm-format :1.1))) + (is-true tm) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 42)) + (loop for top in (elephant:get-instances-by-class 'TopicC) do + (cond ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://www.topicmaps.org/xtm/1.0/core.xtm#topic" + "http://www.topicmaps.org/xtm/1.0/core.xtm#association" + "http://www.topicmaps.org/xtm/1.0/core.xtm#occurrence" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class-instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype-subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort" + "http://www.topicmaps.org/xtm/1.0/core.xtm#display") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-false (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find (uri (first (psis top :revision 0))) + (list "http://psi.topicmaps.org/iso13250/model/type-instance" + "http://psi.topicmaps.org/iso13250/model/type" + "http://psi.topicmaps.org/iso13250/model/instance") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is (= (length (used-as-type top :revision 0)) 29)) + (is-false (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/written-by" + "http://some.where/tmsparql/written" + "http://some.where/tmsparql/writer" + "http://some.where/tmsparql/first-name" + "http://some.where/tmsparql/last-name" + "http://some.where/tmsparql/title" + "http://some.where/tmsparql/date-of-birth" + "http://some.where/tmsparql/date-of-death" + "http://some.where/tmsparql/years" + "http://some.where/tmsparql/isDead" + "http://some.where/tmsparql/isAlive" + "http://some.where/tmsparql/poem-content") + :test 'string=)) + (is-false (used-as-theme top :revision 0)) + (is-true (used-as-type top :revision 0)) + (is (= (length (player-in-roles top :revision 0)) 1)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://psi.topicmaps.org/tmcl/topic-type" + "http://psi.topicmaps.org/tmcl/occurrence-type" + "http://psi.topicmaps.org/tmcl/association-type" + "http://psi.topicmaps.org/tmcl/name-type" + "http://psi.topicmaps.org/tmcl/scope-type" + "http://psi.topicmaps.org/tmcl/role-type") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((or (and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/author/goethe" + "http://some.where/tmsparql/author" + "http://some.where/psis/poem/zauberlehrling" + "http://some.where/tmsparql/poem" + "http://some.where/tmsparql/display-name" + "http://some.where/tmsparql/de" + "http://some.where/tmsparql/reifier-type") + :test #'string=)) + (and + (= (length (item-identifiers top :revision 0)) 1) + (find + (uri (first (item-identifiers top :revision 0))) + (list + "http://some.where/ii/goethe-occ-reifier" + "http://some.where/ii/goethe-name-reifier" + "http://some.where/ii/association-reifier" + "http://some.where/ii/role-reifier") + :test #'string=))) + nil) ;is checked in the next unit-test + (t + (is-false top)))))))) + + + + +(test test-import-topic-maps-2 + "Tests the function import-topic-map-from-jtm-list." + (with-fixture with-empty-db ("data_base") + (let ((jtm-str + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.1_test.jtm")))) + (let ((tm (import-construct-from-jtm-string + jtm-str :revision 100 :jtm-format :1.1))) + (is-true tm) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 42)) + (loop for top in (elephant:get-instances-by-class 'TopicC) do + (cond ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://psi.topicmaps.org/iso13250/model/type-instance" + "http://psi.topicmaps.org/iso13250/model/type" + "http://psi.topicmaps.org/iso13250/model/instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#topic" + "http://www.topicmaps.org/xtm/1.0/core.xtm#association" + "http://www.topicmaps.org/xtm/1.0/core.xtm#occurrence" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class-instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype-subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort" + "http://www.topicmaps.org/xtm/1.0/core.xtm#display" + "http://some.where/tmsparql/written-by" + "http://some.where/tmsparql/written" + "http://some.where/tmsparql/writer" + "http://some.where/tmsparql/first-name" + "http://some.where/tmsparql/last-name" + "http://some.where/tmsparql/title" + "http://some.where/tmsparql/date-of-birth" + "http://some.where/tmsparql/date-of-death" + "http://some.where/tmsparql/years" + "http://some.where/tmsparql/isDead" + "http://some.where/tmsparql/isAlive" + "http://some.where/tmsparql/poem-content" + "http://psi.topicmaps.org/tmcl/topic-type" + "http://psi.topicmaps.org/tmcl/occurrence-type" + "http://psi.topicmaps.org/tmcl/association-type" + "http://psi.topicmaps.org/tmcl/name-type" + "http://psi.topicmaps.org/tmcl/scope-type" + "http://psi.topicmaps.org/tmcl/role-type") + :test #'string=)) + nil) ;is checked in the unit-test before + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/author" + "http://some.where/tmsparql/poem" + "http://some.where/tmsparql/display-name" + "http://some.where/tmsparql/de" + "http://some.where/tmsparql/reifier-type") + :test #'string=)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (item-identifiers top :revision 0)) 1) + (find + (uri (first (item-identifiers top :revision 0))) + (list + "http://some.where/ii/goethe-occ-reifier" + "http://some.where/ii/goethe-name-reifier" + "http://some.where/ii/association-reifier" + "http://some.where/ii/role-reifier") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-true (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (psis top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and (= (length (psis top :revision 0)) 1) + (string= (uri (first (psis top :revision 0))) + "http://some.where/tmsparql/author/goethe")) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is (= (length (occurrences top :revision 0)) 5)) + (is (= (length (names top :revision 0)) 3)) + (is (= (length (item-identifiers top :revision 0)) 1)) + (is (string= + "http://some.where/ii/goethe" + (uri (first (item-identifiers top :revision 0))))) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and (= (length (psis top :revision 0)) 1) + (string= (uri (first (psis top :revision 0))) + "http://some.where/psis/poem/zauberlehrling")) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is (= (length (occurrences top :revision 0)) 1)) + (is (= (length (names top :revision 0)) 1)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + (t + (is-false top)))) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 30)) + (let ((assoc + (get-item-by-item-identifier "http://some.where/ii/association" + :revision 0))) + (is (typep assoc 'AssociationC)) + (is (= (length (roles assoc :revision 0)) 2)) + (is (= (length (item-identifiers assoc :revision 0)) 1)) + (is (eql (instance-of assoc :revision 0) + (get-item-by-psi "http://some.where/tmsparql/written-by" + :revision 0))) + (is (eql (reifier assoc :revision 0) + (get-item-by-item-identifier + "http://some.where/ii/association-reifier" + :revision 0)))))))) + + +(test test-import-topic-maps-3 + "Tests the function import-topic-map-from-jtm-list." + (with-fixture with-empty-db ("data_base") + (let* ((jtm-str + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.0_test.jtm"))) + (tm (import-construct-from-jtm-string + jtm-str :revision 100 :jtm-format :1.0 + :tm-id "http://some.where/jtm-tm"))) + (is-true tm) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 42)) + (loop for top in (elephant:get-instances-by-class 'TopicC) do + (cond ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://www.topicmaps.org/xtm/1.0/core.xtm#topic" + "http://www.topicmaps.org/xtm/1.0/core.xtm#association" + "http://www.topicmaps.org/xtm/1.0/core.xtm#occurrence" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class-instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype-subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort" + "http://www.topicmaps.org/xtm/1.0/core.xtm#display") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-false (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find (uri (first (psis top :revision 0))) + (list "http://psi.topicmaps.org/iso13250/model/type-instance" + "http://psi.topicmaps.org/iso13250/model/type" + "http://psi.topicmaps.org/iso13250/model/instance") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is (= (length (used-as-type top :revision 0)) 29)) + (is-false (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/written-by" + "http://some.where/tmsparql/written" + "http://some.where/tmsparql/writer" + "http://some.where/tmsparql/first-name" + "http://some.where/tmsparql/last-name" + "http://some.where/tmsparql/title" + "http://some.where/tmsparql/date-of-birth" + "http://some.where/tmsparql/date-of-death" + "http://some.where/tmsparql/years" + "http://some.where/tmsparql/isDead" + "http://some.where/tmsparql/isAlive" + "http://some.where/tmsparql/poem-content") + :test 'string=)) + (is-false (used-as-theme top :revision 0)) + (is-true (used-as-type top :revision 0)) + (is (= (length (player-in-roles top :revision 0)) 1)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://psi.topicmaps.org/tmcl/topic-type" + "http://psi.topicmaps.org/tmcl/occurrence-type" + "http://psi.topicmaps.org/tmcl/association-type" + "http://psi.topicmaps.org/tmcl/name-type" + "http://psi.topicmaps.org/tmcl/scope-type" + "http://psi.topicmaps.org/tmcl/role-type") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((or (and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/author/goethe" + "http://some.where/tmsparql/author" + "http://some.where/psis/poem/zauberlehrling" + "http://some.where/tmsparql/poem" + "http://some.where/tmsparql/display-name" + "http://some.where/tmsparql/de" + "http://some.where/tmsparql/reifier-type") + :test #'string=)) + (and + (= (length (item-identifiers top :revision 0)) 1) + (find + (uri (first (item-identifiers top :revision 0))) + (list + "http://some.where/ii/goethe-occ-reifier" + "http://some.where/ii/goethe-name-reifier" + "http://some.where/ii/association-reifier" + "http://some.where/ii/role-reifier") + :test #'string=))) + nil) ;is checked in the next unit-test + (t + (is-false top))))))) + + +(test test-import-topic-maps-4 + "Tests the function import-topic-map-from-jtm-list." + (with-fixture with-empty-db ("data_base") + (let* ((jtm-str + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.0_test.jtm"))) + (tm (import-construct-from-jtm-string + jtm-str :revision 100 :jtm-format :1.0 + :tm-id "http://some.where/jtm-tm"))) + (is-true tm) + (is (= (length (elephant:get-instances-by-class 'TopicC)) 42)) + (loop for top in (elephant:get-instances-by-class 'TopicC) do + (cond ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://psi.topicmaps.org/iso13250/model/type-instance" + "http://psi.topicmaps.org/iso13250/model/type" + "http://psi.topicmaps.org/iso13250/model/instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#topic" + "http://www.topicmaps.org/xtm/1.0/core.xtm#association" + "http://www.topicmaps.org/xtm/1.0/core.xtm#occurrence" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class-instance" + "http://www.topicmaps.org/xtm/1.0/core.xtm#class" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype-subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#supertype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#subtype" + "http://www.topicmaps.org/xtm/1.0/core.xtm#sort" + "http://www.topicmaps.org/xtm/1.0/core.xtm#display" + "http://some.where/tmsparql/written-by" + "http://some.where/tmsparql/written" + "http://some.where/tmsparql/writer" + "http://some.where/tmsparql/first-name" + "http://some.where/tmsparql/last-name" + "http://some.where/tmsparql/title" + "http://some.where/tmsparql/date-of-birth" + "http://some.where/tmsparql/date-of-death" + "http://some.where/tmsparql/years" + "http://some.where/tmsparql/isDead" + "http://some.where/tmsparql/isAlive" + "http://some.where/tmsparql/poem-content" + "http://psi.topicmaps.org/tmcl/topic-type" + "http://psi.topicmaps.org/tmcl/occurrence-type" + "http://psi.topicmaps.org/tmcl/association-type" + "http://psi.topicmaps.org/tmcl/name-type" + "http://psi.topicmaps.org/tmcl/scope-type" + "http://psi.topicmaps.org/tmcl/role-type") + :test #'string=)) + nil) ;is checked in the unit-test before + ((and + (= (length (psis top :revision 0)) 1) + (find + (uri (first (psis top :revision 0))) + (list + "http://some.where/tmsparql/author" + "http://some.where/tmsparql/poem" + "http://some.where/tmsparql/display-name" + "http://some.where/tmsparql/de" + "http://some.where/tmsparql/reifier-type") + :test #'string=)) + (is-false (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and + (= (length (item-identifiers top :revision 0)) 1) + (find + (uri (first (item-identifiers top :revision 0))) + (list + "http://some.where/ii/goethe-occ-reifier" + "http://some.where/ii/goethe-name-reifier" + "http://some.where/ii/association-reifier" + "http://some.where/ii/role-reifier") + :test #'string=)) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-true (reified-construct top :revision 0)) + (is-false (occurrences top :revision 0)) + (is-false (names top :revision 0)) + (is-false (psis top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and (= (length (psis top :revision 0)) 1) + (string= (uri (first (psis top :revision 0))) + "http://some.where/tmsparql/author/goethe")) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is (= (length (occurrences top :revision 0)) 5)) + (is (= (length (names top :revision 0)) 3)) + (is (= (length (item-identifiers top :revision 0)) 1)) + (is (string= + "http://some.where/ii/goethe" + (uri (first (item-identifiers top :revision 0))))) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + ((and (= (length (psis top :revision 0)) 1) + (string= (uri (first (psis top :revision 0))) + "http://some.where/psis/poem/zauberlehrling")) + (is-false (used-as-theme top :revision 0)) + (is-false (used-as-type top :revision 0)) + (is-true (player-in-roles top :revision 0)) + (is-false (reified-construct top :revision 0)) + (is (= (length (occurrences top :revision 0)) 1)) + (is (= (length (names top :revision 0)) 1)) + (is-false (item-identifiers top :revision 0)) + (is-false (locators top :revision 0)) + (is (= (length (in-topicmaps top :revision 0)) 1)) + (is (eql tm (first (in-topicmaps top :revision 0))))) + (t + (is-false top)))) + (is (= (length (elephant:get-instances-by-class 'AssociationC)) 30)) + (let ((assoc + (get-item-by-item-identifier "http://some.where/ii/association" + :revision 0))) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)) + (is (typep assoc 'AssociationC)) + (is (= (length (roles assoc :revision 0)) 2)) + (is (= (length (item-identifiers assoc :revision 0)) 1)) + (is (eql (instance-of assoc :revision 0) + (get-item-by-psi "http://some.where/tmsparql/written-by" + :revision 0))) + (is (eql (reifier assoc :revision 0) + (get-item-by-item-identifier + "http://some.where/ii/association-reifier" + :revision 0))))))) + + +(test test-import-topic-maps-5 + "Tests the function import-topic-map-from-jtm-list." + (with-fixture with-empty-db ("data_base") + (let* ((jtm-str-1 + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.0_test.jtm"))) + (jtm-str-2 + (read-file-to-string + (merge-pathnames + (asdf:component-pathname + (asdf:find-component constants:*isidorus-system* "unit_tests")) + "jtm_1.1_test.jtm")))) + (signals exceptions::JTM-error + (import-construct-from-jtm-string + jtm-str-1 :revision 100 :jtm-format :1.1)) + (let ((tm (import-construct-from-jtm-string + jtm-str-2 :revision 100 :jtm-format :1.1 + :tm-id "http://some.where/new-tm-id"))) + (is-false (set-exclusive-or + (list "http://some.where/new-tm-id" + "http://some.where/tmsparql/jtm-tm") + (map 'list #'uri (item-identifiers tm :revision 0)) + :test #'string=)) + (is (= (length (elephant:get-instances-by-class 'TopicMapC)) 1)))))) + + + + + + ;TODO: -; *import-construct-from-jtm-string ; *import-from-jtm -; *import-topic-map-from-jtm-list
(defun run-jtm-tests() "Runs all tests of this test-suite."