[isidorus-cvs] r330 - in trunk/src: . unit_tests xml/xtm
Lukas Giessmann
lgiessmann at common-lisp.net
Sat Oct 16 16:15:50 UTC 2010
Author: lgiessmann
Date: Sat Oct 16 12:15:50 2010
New Revision: 330
Log:
fixed ticket #64 --> reifier of the TopicMap-element for xtm 1.0; added a corresponding unit-test; this problem was solved for the xtm 2.0 importer in revision 329
Added:
trunk/src/unit_tests/poems_light_tm_reification_xtm1.0.xtm
Modified:
trunk/src/isidorus.asd
trunk/src/unit_tests/importer_test.lisp
trunk/src/unit_tests/poems_light_tm_ii.xtm
trunk/src/unit_tests/poems_light_tm_ii_merge.xtm
trunk/src/unit_tests/unittests-constants.lisp
trunk/src/xml/xtm/exporter.lisp
trunk/src/xml/xtm/importer_xtm1.0.lisp
Modified: trunk/src/isidorus.asd
==============================================================================
--- trunk/src/isidorus.asd (original)
+++ trunk/src/isidorus.asd Sat Oct 16 12:15:50 2010
@@ -115,6 +115,7 @@
(:static-file "poems_light.xtm")
(:static-file "poems_light_tm_ii.xtm")
(:static-file "poems_light_tm_ii_merge.xtm")
+ (:static-file "poems_light_tm_reification_xtm1.0.xtm")
(:static-file "full_mapping.rdf")
(:static-file "reification_xtm1.0.xtm")
(:static-file "reification_xtm2.0.xtm")
Modified: trunk/src/unit_tests/importer_test.lisp
==============================================================================
--- trunk/src/unit_tests/importer_test.lisp (original)
+++ trunk/src/unit_tests/importer_test.lisp Sat Oct 16 12:15:50 2010
@@ -40,7 +40,8 @@
:test-topicmaps
:test-variants
:test-variants-xtm1.0
- :test-merge-topicmaps))
+ :test-merge-topicmaps
+ :test-merge-topicmaps-xtm1.0))
(declaim (optimize (debug 3) (speed 0) (safety 3) (space 0) (compilation-speed 0)))
(in-package :importer-test)
@@ -710,6 +711,9 @@
"http://some.where/poems_light_tm_ii_1"
"http://some.where/poems_light_tm_ii_2")
:test #'string=))
+ (is (eql (reifier tm-1)
+ (d:get-item-by-item-identifier
+ "http://some.where/poems/topicMap-reifier")))
(is (= (length (d:topics tm-1)) 9))
(is (= (length (d:associations tm-1)) (+ 1 3)))
(is (= (length (d:in-topicmaps (d:get-item-by-id "schiller"))) 1))
@@ -727,6 +731,25 @@
(is-false schiller-2)))))))
+(test test-merge-topicmaps-xtm1.0
+ (let ((dir "data_base")
+ (tm-id-1 "tm-id-1"))
+ (with-fixture with-empty-db (dir)
+ (xml-importer:setup-repository *poems_light_tm_reification_xtm1.0.xtm*
+ dir :tm-id tm-id-1 :xtm-format '1.0)
+ (elephant:open-store (xml-importer:get-store-spec dir))
+ (with-revision 0
+ (let ((tm-1
+ (d:identified-construct
+ (first (elephant:get-instances-by-value
+ 'd:ItemIdentifierC 'd:uri tm-id-1)))))
+ (is-true tm-1)
+ (is (= (length (topics tm-1)) 8))
+ (is (= (length (associations tm-1)) (+ 1 2)))
+ (is (eql (reifier tm-1)
+ (get-item-by-psi "#tm-reifier"))))))))
+
+
(defun run-importer-tests ()
(run! 'importer-test))
Modified: trunk/src/unit_tests/poems_light_tm_ii.xtm
==============================================================================
--- trunk/src/unit_tests/poems_light_tm_ii.xtm (original)
+++ trunk/src/unit_tests/poems_light_tm_ii.xtm Sat Oct 16 12:15:50 2010
@@ -13,9 +13,6 @@
<tm:topicMap version="2.0" xmlns:tm="http://www.topicmaps.org/xtm/"
reifier="http://some.where/poems/topicMap-reifier">
- <!-- this file contains constructs that are originally defined as TM and
- RDF. So certain constructs are not consistent because of test cases,
- but all are valid! -->
<tm:itemIdentity href="http://some.where/poems_light_tm_ii_1"/>
<tm:itemIdentity href="http://some.where/poems_light_tm_ii_2"/>
Modified: trunk/src/unit_tests/poems_light_tm_ii_merge.xtm
==============================================================================
--- trunk/src/unit_tests/poems_light_tm_ii_merge.xtm (original)
+++ trunk/src/unit_tests/poems_light_tm_ii_merge.xtm Sat Oct 16 12:15:50 2010
@@ -12,9 +12,6 @@
<!-- ======================================================================= -->
<tm:topicMap version="2.0" xmlns:tm="http://www.topicmaps.org/xtm/">
- <!-- this file contains constructs that are originally defined as TM and
- RDF. So certain constructs are not consistent because of test cases,
- but all are valid! -->
<tm:itemIdentity href="http://some.where/poems_light_tm_ii_1"/>
<tm:topic id="author">
Added: trunk/src/unit_tests/poems_light_tm_reification_xtm1.0.xtm
==============================================================================
--- (empty file)
+++ trunk/src/unit_tests/poems_light_tm_reification_xtm1.0.xtm Sat Oct 16 12:15:50 2010
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ======================================================================= -->
+<!-- Isidorus -->
+<!-- (c) 2008-2010 Marc Kuester, Christoph Ludwig, Lukas Georgieff -->
+<!-- -->
+<!-- Isidorus is freely distributable under the LLGPL license. -->
+<!-- This ajax module uses the frameworks PrototypeJs and Scriptaculous, -->
+<!-- both are distributed under the MIT license. -->
+<!-- You can find a detailed description in trunk/docs/LLGPL-LICENSE.txt, -->
+<!-- trunk/docs/LGPL-LICENSE.txt and in -->
+<!-- trunk/src/ajax/javascripts/external/MIT-LICENSE.txt. -->
+<!-- ======================================================================= -->
+
+<tm:topicMap xmlns:tm="http://www.topicmaps.org/xtm/1.0/"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ id="tm-reifier">
+
+ <tm:topic id="tm-reifier-topic">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="#tm-reifier"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="author">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/types/Author"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="poem">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/types/Poem"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="writer">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/roletype/writer"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="written">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/roletype/written"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="wrote">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/relationship/wrote"/>
+ </tm:subjectIdentity>
+ </tm:topic>
+
+ <tm:topic id="goethe">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/author/Goethe"/>
+ </tm:subjectIdentity>
+ <tm:instanceOf>
+ <tm:topicRef xlink:href="#author"/>
+ </tm:instanceOf>
+ </tm:topic>
+
+ <tm:topic id="zauberlehrling">
+ <tm:subjectIdentity>
+ <tm:subjectIndicatorRef xlink:href="http://some.where/poem/Der_Zauberlehrling"/>
+ </tm:subjectIdentity>
+ <tm:instanceOf>
+ <tm:topicRef xlink:href="#poem"/>
+ </tm:instanceOf>
+ </tm:topic>
+
+ <tm:association>
+ <tm:instanceOf>
+ <tm:topicRef xlink:href="#wrote"/>
+ </tm:instanceOf>
+ <tm:member>
+ <tm:roleSpec>
+ <tm:topicRef xlink:href="#writer"/>
+ </tm:roleSpec>
+ <tm:topicRef xlink:href="#goethe"/>
+ </tm:member>
+ <tm:member>
+ <tm:roleSpec>
+ <tm:topicRef xlink:href="#written"/>
+ </tm:roleSpec>
+ <tm:topicRef xlink:href="#zauberlehrling"/>
+ </tm:member>
+ </tm:association>
+</tm:topicMap>
Modified: trunk/src/unit_tests/unittests-constants.lisp
==============================================================================
--- trunk/src/unit_tests/unittests-constants.lisp (original)
+++ trunk/src/unit_tests/unittests-constants.lisp Sat Oct 16 12:15:50 2010
@@ -36,7 +36,8 @@
:*reification_xtm2.0.xtm*
:*reification.rdf*
:*poems_light_tm_ii.xtm*
- :*poems_light_tm_ii_merge.xtm*))
+ :*poems_light_tm_ii_merge.xtm*
+ :*poems_light_tm_reification_xtm1.0.xtm*))
(in-package :unittests-constants)
@@ -122,12 +123,14 @@
(asdf:component-pathname
(asdf:find-component *unit-tests-component* "reification.rdf")))
-
(defparameter *poems_light_tm_ii.xtm*
(asdf:component-pathname
(asdf:find-component *unit-tests-component* "poems_light_tm_ii.xtm")))
-
(defparameter *poems_light_tm_ii_merge.xtm*
(asdf:component-pathname
(asdf:find-component *unit-tests-component* "poems_light_tm_ii_merge.xtm")))
+
+(defparameter *poems_light_tm_reification_xtm1.0.xtm*
+ (asdf:component-pathname
+ (asdf:find-component *unit-tests-component* "poems_light_tm_reification_xtm1.0.xtm")))
Modified: trunk/src/xml/xtm/exporter.lisp
==============================================================================
--- trunk/src/xml/xtm/exporter.lisp (original)
+++ trunk/src/xml/xtm/exporter.lisp Sat Oct 16 12:15:50 2010
@@ -53,12 +53,14 @@
, at body)))
-(defmacro with-xtm1.0 (&body body)
+(defmacro with-xtm1.0 ((tm revision) &body body)
"helper macro to build the Topic Map element"
`(cxml:with-namespace ("t" *xtm1.0-ns*)
(cxml:with-namespace ("xlink" *xtm1.0-xlink*)
(cxml:with-element
"t:topicMap" :empty
+ (when ,tm
+ (to-reifier-elem-xtm1.0 ,tm ,revision))
, at body))))
@@ -98,7 +100,7 @@
(with-xtm2.0 (tm revision)
(export-to-elem tm #'(lambda(elem)
(to-elem elem revision))))
- (with-xtm1.0
+ (with-xtm1.0 (tm revision)
(export-to-elem tm #'(lambda(elem)
(to-elem-xtm1.0 elem revision)))))))))))
@@ -117,7 +119,7 @@
(with-xtm2.0 (tm revision)
(export-to-elem tm #'(lambda(elem)
(to-elem elem revision))))
- (with-xtm1.0
+ (with-xtm1.0 (tm revision)
(export-to-elem tm #'(lambda(elem)
(to-elem-xtm1.0 elem revision))))))))))
@@ -130,5 +132,5 @@
(if (eq xtm-format '2.0)
(with-xtm2.0 (nil nil)
(to-elem fragment (revision fragment)))
- (with-xtm1.0
+ (with-xtm1.0 (nil nil)
(to-elem-xtm1.0 fragment (revision fragment))))))))
\ No newline at end of file
Modified: trunk/src/xml/xtm/importer_xtm1.0.lisp
==============================================================================
--- trunk/src/xml/xtm/importer_xtm1.0.lisp (original)
+++ trunk/src/xml/xtm/importer_xtm1.0.lisp Sat Oct 16 12:15:50 2010
@@ -549,4 +549,7 @@
(format t "a")
(from-association-elem-xtm1.0 assoc-elem revision
:tm tm
- :xtm-id xtm-id))))))
+ :xtm-id xtm-id))
+ (let ((reifier-topic (get-reifier-topic-xtm1.0 xtm-dom revision)))
+ (when reifier-topic
+ (add-reifier tm reifier-topic :revision revision)))))))
\ No newline at end of file
More information about the Isidorus-cvs
mailing list