Author: lgiessmann
Date: Thu Dec 10 09:44:47 2009
New Revision: 168
Log:
all topic-stubs of a fragment are exported explicitely if they do own more than one psi or another identifier
Modified:
trunk/src/xml/rdf/exporter.lisp
Modified: trunk/src/xml/rdf/exporter.lisp
==============================================================================
--- trunk/src/xml/rdf/exporter.lisp (original)
+++ trunk/src/xml/rdf/exporter.lisp Thu Dec 10 09:44:47 2009
@@ -569,7 +569,13 @@
(defmethod to-rdf-elem ((construct FragmentC))
"Exports TM-Fragments as RDF/XML data."
(topic-to-rdf-elem (topic construct))
- ;all stubs are exported implicitely by references of the topic or associations
+ (map 'list #'(lambda(top)
+ (when (or (> (length (psis top)) 1)
+ (item-identifiers top)
+ (locators top))
+ (topic-to-rdf-stub-elem top)))
+ (referenced-topics construct))
+ ;all other stubs are exported implicitely by references of the main topic or associations
(map 'list #'to-rdf-elem (intersection (list-tm-associations) (associations construct))))
@@ -612,6 +618,26 @@
(union t-occs t-assocs))))))
+(defun topic-to-rdf-stub-elem (construct)
+ "Exports a topic as a stub."
+ (declare (TopicC construct))
+ (cxml:with-element "rdf:Description"
+ (let ((psi (get-reifier-psi construct))
+ (ii (item-identifiers construct))
+ (sl (locators construct)))
+ (if psi
+ (if (reified construct)
+ (let ((reifier-uri (get-reifier-uri construct)))
+ (if reifier-uri
+ (cxml:attribute "rdf:about" (concatenate 'string "#" (get-reifier-uri construct)))
+ (cxml:attribute "rdf:about" (uri psi))))
+ (cxml:attribute "rdf:about" (uri psi)))
+ (cxml:attribute "rdf:nodeID" (make-object-id construct)))
+ (map 'list #'to-rdf-elem (remove psi (psis construct)))
+ (map 'list #'to-rdf-elem sl)
+ (map 'list #'to-rdf-elem ii))))
+
+
(defgeneric to-rdf-string (construct)
(:documentation "Prints the string representation of a Fragment element as RDF/XML"))