Change default SQL server host
[umlisp.git] / classes.lisp
index 9bbd1714e0a0e1bb2336742fe0f8df1fdd6992df..ce08ece3ac09671aebc21c4f17686e955b3d129a 100644 (file)
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name:          classes.lisp
-;;;; Purpose:       Class defintions for UMLisp
-;;;; Programmer:    Kevin M. Rosenberg
-;;;; Date Started:  Apr 2000
-;;;;
-;;;; $Id: classes.lisp,v 1.3 2002/10/09 23:03:41 kevin Exp $
+;;;; Name:     classes.lisp
+;;;; Purpose:  Class defintions for UMLisp
+;;;; Author:   Kevin M. Rosenberg
+;;;; Created:  Apr 2000
 ;;;;
 ;;;; This file, part of UMLisp, is
-;;;;    Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
+;;;;    Copyright (c) 2000-2010 by Kevin M. Rosenberg, M.D.
 ;;;;
 ;;;; UMLisp users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the GNU General Public License.
 ;;;; *************************************************************************
 
-(in-package :umlisp)
-(declaim (optimize (speed 3) (safety 1) (compilation-speed 0) (debug 3)))
+(in-package #:umlisp)
 
-(defclass umlsclass ()
+(defclass umlsclass (hyperobject)
   ()
-  (:metaclass kmrcl:ml-class)
-  (:documentation "Parent class of all UMLS objects. It is based on the KMRCL:ML-CLASS metaclass that provides object printing functions."))
+  (:metaclass hyperobject-class)
+  (:description "Parent class of all UMLS objects. It is based on the HYPEROBJECT-CLASS metaclass that provides object printing functions."))
 
 
-(defmethod print-object ((obj umlsclass) (s stream))
-  (print-unreadable-object (obj s :type t :identity t)
-    (let ((fmt (make-instance 'kmrcl::textformat)))
-      (apply #'format 
-            s (funcall (kmrcl::obj-data-fmtstr fmt) obj)
-            (multiple-value-list 
-             (funcall (funcall (kmrcl::obj-data-value-func fmt) obj) obj))))))
+(defclass usrl (umlsclass)
+  ((sab :value-type string :initarg :sab :reader sab)
+   (srl :value-type fixnum :initarg :srl :reader srl))
+  (:metaclass hyperobject-class)
+  (:user-name "Source Restriction Level")
+  (:default-print-slots sab srl)
+  (:description "Custom Table: Source Restriction Level"))
 
 
 (defclass urank (umlsclass)
-  ((rank :type fixnum :initarg :rank :reader rank)
-   (sab :type string :initarg :sab :reader sab)
-   (tty :type string :initarg :tty :reader tty)
-   (supres :type string :initarg :supres :reader supres))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :rank nil :sab nil :tty nil :supres nil)
-  (:title "Rank")
-  (:fields (rank :fixnum) (sab :string) (tty :string) (supres :string)))
+  ((rank :value-type fixnum :initarg :rank :reader rank)
+   (sab :value-type string :initarg :sab :reader sab)
+   (tty :value-type string :initarg :tty :reader tty)
+   (suppress :value-type string :initarg :suppress :reader suppress))
+  (:metaclass hyperobject-class)
+  (:user-name "Rank")
+  (:default-print-slots rank sab tty suppress))
 
 (defclass udef (umlsclass)
-  ((def :type string :initarg :def :reader def)
-   (sab :type string :initarg :sab :reader sab))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :def nil :sab nil)
-  (:title "Definition")
-  (:ref-fields (sab find-bsab-sab))
-  (:fields (sab :string) (def :cdata)))
+  ((def :value-type cdata :initarg :def :reader def)
+   (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
+   (suppress :value-type string :initarg :suppress :reader suppress))
+  (:metaclass hyperobject-class)
+  (:user-name "Definition")
+  (:default-print-slots sab def))
 
 (defclass usat (umlsclass)
-  ((sab :type string :initarg :sab :reader sab)
-   (code :type string :initarg :code :reader code)
-   (atn :type string :initarg :atn :reader atn)
-   (atv :type string :initarg :atv :reader atv))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :sab nil :code nil :atn nil :atv nil)
-  (:title "Simple Attribute")
-  (:ref-fields (sab find-bsab-sab))
-  (:fields (sab :string) (code :string) (atn :string) (atv :cdata)))
-
-(defclass uso (umlsclass)
-  ((sab :type string :initarg :sab :reader sab)
-   (code :type string :initarg :code :reader code)
-   (tty :type string :initarg :tty :reader tty)
-   (srl :type fixnum :initarg :srl :reader srl))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :sab nil :code nil :tty nil :srl nil)
-  (:title "Source")
-  (:ref-fields (sab find-bsab-sab) (tty find-btty-tty))
-  (:fields (sab :string) (code :string) (tty :string) (srl :fixnum)))
-
-(defclass ucxt (umlsclass)
-  ((sab :type string :initarg :sab :reader sab)
-   (code :type string :initarg :code :reader code)
-   (rnk :type fixnum :initarg :rnk :reader rnk)
-   (cxn :type fixnum :initarg :cxn :reader cxn)
-   (cxl :type string :initarg :cxl :reader cxl)
-   (cxs :type string :initarg :cxs :reader cxs)
-   (cui2 :type fixnum :initarg :cui2 :reader cui2)
-   (hcd :type string :initarg :hcd :reader hcd)
-   (rela :type string :initarg :rela :reader rela)
-   (xc :type string  :initarg :xc :reader xc))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :sab nil :code nil :rnk nil :cxn nil :cxl nil :cxs nil
-                    :cui2 nil :hcd nil :rela nil :xc nil)
-  (:title "Context")
-  (:ref-fields (sab find-bsab-sab) (cui2 find-ucon-cui))
-  (:fields 
-   (sab :string) (code :string) (rnk :fixnum) (cxn :fixnum) (cxl :string)
-   (hcd :string) (rela :string) (xc :string) (cui2 :string fmt-cui) 
-   (cxs :cdata)))
+  ((sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
+   (code :value-type string :initarg :code :reader code)
+   (atn :value-type string :initarg :atn :reader atn)
+   (atv :value-type cdata :initarg :atv :reader atv))
+  (:metaclass hyperobject-class)
+  (:user-name "Simple Attribute")
+  (:default-print-slots sab code atn atv))
+
+(defclass usab (umlsclass)
+  ((vcui :value-type fixnum :initarg :vcui :reader vcui :print-formatter fmt-cui)
+   (rcui :value-type fixnum :initarg :rcui :reader rcui :print-formatter fmt-cui)
+   (vsab :value-type string :initarg :vsab :reader vsab)
+   (rsab :value-type string :initarg :rsab :reader rsab :hyperlink find-ustr-sab
+         :hyperlink-parameters (("subobjects" . "no")))
+   (son :value-type string :initarg :son :reader son)
+   (sf :value-type string :initarg :sf :reader sf)
+   (sver :value-type string :initarg :sver :reader sver)
+   (vstart :value-type string :initarg :vstart :reader vstart)
+   (vend :value-type string :initarg :vend :reader vend)
+   (imeta :value-type string :initarg :imeta :reader imeta)
+   (rmeta :value-type string :initarg :rmeta :reader rmeta)
+   (slc :value-type cdata :initarg :slc :reader slc)
+   (scc :value-type cdata :initarg :scc :reader scc)
+   (srl :value-type fixnum :initarg :srl :reader srl)
+   (tfr :value-type fixnum :initarg :tfr :reader tfr :print-formatter fmt-comma-integer)
+   (cfr :value-type fixnum :initarg :cfr :reader cfr :print-formatter fmt-comma-integer)
+   (cxty :value-type string :initarg :cxty :reader cxty)
+   (ttyl :value-type string :initarg :ttyl :reader ttyl)
+   (atnl :value-type string :initarg :atnl :reader atnl)
+   (lat :value-type string :initarg :lat :reader lat)
+   (cenc :value-type string :initarg :cenc :reader cenc)
+   (curver :value-type string :initarg :curver :reader curver)
+   (sabin :value-type string :initarg :sabin :reader sabin)
+   (ssn :value-type string :initarg :ssn :reader ssn)
+   (scit :value-type string :initarg :scit :reader scit))
+  (:metaclass hyperobject-class)
+  (:user-name "Source Abbreviation")
+  (:default-print-slots vcui rcui vsab rsab son sf sver vstart vend imeta
+                rmeta slc scc srl tfr cfr cxty ttyl atnl lat cenc
+                curver sabin ssn scit))
+
+(defclass uhier (umlsclass)
+  ((cui :value-type fixnum :initarg :cui :reader cui :hyperlink find-ucon-cui
+        :print-formatter fmt-cui)
+   (aui :value-type fixnum :initarg :aui :reader aui :hyperlink find-ucon-aui
+         :print-formatter fmt-aui)
+   (cxn :value-type fixnum :initarg :cxn :reader cxn)
+   (paui :value-type fixnum :initarg :paui :reader paui
+         :print-formatter fmt-aui)
+   (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
+   (rela :value-type string :initarg :rela :reader rela)
+   (ptr :value-type string :initarg :ptr :reader ptr)
+   (hcd :value-type string :initarg :hcd :reader hcd)
+   (cvf :value-type string  :initarg :cvf :reader cvf))
+  (:metaclass hyperobject-class)
+  (:user-name "Context")
+  (:default-print-slots cxn paui sab rela ptr hcd))
 
 (defclass ustr (umlsclass)
-  ((sui :type fixnum :initarg :sui :reader sui)
-   (cui :type fixnum :initarg :cui :reader cui)
-   (lui :type fixnum :initarg :lui :reader lui)
-   (cuisui :type integer :initarg :cuisui :reader cuisui )
-   (str :type string :initarg :str :reader str)
-   (lrl :type fixnum :initarg :lrl :reader lrl)
-   (stt :type string :initarg :stt :reader stt)
-   (s#sat :reader s#sat)
-   (s#so :reader s#so)
-   (s#cxt :reader s#cxt))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs 
-   :sui nil :cui nil :lui nil :cuisui nil :str nil :lrl nil :stt nil)
-  (:title "String")
-  (:subobjects-lists (s#sat usat) (s#so uso) (s#cxt ucxt))
-  (:fields (sui :string fmt-sui) (stt :string) (lrl :fixnum) (str :cdata))
-  (:ref-fields (sui find-ustr-sui)))
-
-(defclass ulo (umlsclass)
-  ((isn :type string :initarg :isn :reader isn)
-   (fr :type fixnum :initarg :fr :reader fr)
-   (un :type string :initarg :un :reader un)
-   (sui :type fixnum :initarg :sui :reader sui)
-   (sna :type string :initarg :sna :reader sna)
-   (soui :type string :initarg :soui :reader soui))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :isn nil :fr nil :un nil :sui nil :sna nil :soui nil)
-  (:title "Locator")
-  (:fields (isn :string) (fr :fixnum) (un :string) (sna :string)
-          (soui :string) (sui :string fmt-sui) (suistr :string)))
+  ((sui :value-type fixnum :initarg :sui :reader sui :print-formatter fmt-sui
+        :hyperlink find-ustr-sui)
+   (cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
+        :hyperlink find-ucon-cui)
+   (lui :value-type fixnum :initarg :lui :reader lui :print-formatter fmt-lui
+        :hyperlink find-uterm-lui)
+   (cuisui :value-type integer :initarg :cuisui :reader cuisui )
+   (str :value-type cdata :initarg :str :reader str)
+   (lrl :value-type fixnum :initarg :lrl :reader lrl)
+   (stt :value-type string :initarg :stt :reader stt)
+   (suppress :value-type string :initarg :suppress :reader suppress)
+   (s#so :reader s#so :subobject (find-uso-cuisui cui sui))
+   (s#sat :reader s#sat :subobject (find-usat-ui cui lui sui)))
+  (:metaclass hyperobject-class)
+  (:user-name "String")
+  (:default-print-slots sui stt lrl str suppress))
+
+
+(defclass uso (umlsclass)
+  ((aui :value-type fixnum :initarg :aui :reader aui :print-formatter fmt-aui
+        :hyperlink find-ucon-aui)
+   (cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
+        :hyperlink find-ucon-cui)
+   (sui :value-type fixnum :initarg :sui :reader sui :print-formatter fmt-sui
+        :hyperlink find-ucon-sui)
+   (saui :value-type string :initarg :saui :reader saui)
+   (sdui :value-type string :initarg :sdui :reader sdui)
+   (scui :value-type string :initarg :scui :reader scui)
+   (tty :value-type string :initarg :tty :reader tty)
+   (code :value-type string :initarg :code :reader code)
+   (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
+   (lat :value-type string :initarg :lat :reader lat)
+   (str :value-type cdata :initarg :str :reader str)
+   (srl :value-type fixnum :initarg :srl :reader srl)
+   (ts :value-type string :initarg :ts :reader ts))
+  (:metaclass hyperobject-class)
+  (:user-name "Source")
+  (:default-print-slots aui sab code saui sdui scui tty srl ts))
 
 (defclass uterm (umlsclass)
-  ((lui :type fixnum :initarg :lui :reader lui)
-   (cui :type fixnum :initarg :cui :reader cui)
-   (lat :type string :initarg :lat :reader lat)
-   (ts :type string  :initarg :ts :reader ts)
-   (lrl :type fixnum :initarg :lrl :reader lrl)
-   (s#str :reader s#str)
-   (s#sat :reader s#sat))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :lui nil :cui nil :lat nil :ts nil :lrl nil)
-  (:title "Term")
-  (:subobjects-lists (s#sat usat) (s#str ustr))
-  (:fields (lui :string fmt-lui) (lat :string) (ts :string) (lrl :fixnum))
-  (:ref-fields (lui find-uterm-lui)))
+  ((lui :value-type fixnum :initarg :lui :reader lui :print-formatter fmt-lui
+        :hyperlink find-uterm-lui)
+   (cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
+        :hyperlink find-ucon-cui)
+   (lat :value-type string :initarg :lat :reader lat)
+   (ts :value-type string  :initarg :ts :reader ts)
+   (lrl :value-type fixnum :initarg :lrl :reader lrl)
+   (s#str :reader s#str :subobject (find-ustr-cuilui cui lui))
+   (s#sat :reader s#sat :subobject (find-usat-ui cui lui)))
+  (:metaclass hyperobject-class)
+  (:user-name "Term")
+  (:default-print-slots lui lat ts lrl))
 
 (defclass usty (umlsclass)
-  ((tui :type fixnum :initarg :tui :reader tui)
-   (sty :type string :initarg :sty :reader sty))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :tui nil :sty nil)
-  (:title "Semantic Type")
-  (:ref-fields (tui find-ucon-tui (("subobjects" "no"))))
-  (:fields (tui :string fmt-tui) (sty :string)))
+  ((tui :value-type fixnum :initarg :tui :reader tui :print-formatter fmt-tui
+        :hyperlink find-ucon-tui
+        :hyperlink-parameters (("subobjects" . "no")))
+   (sty :value-type string :initarg :sty :reader sty))
+  (:metaclass hyperobject-class)
+  (:user-name "Semantic Type")
+  (:default-print-slots tui sty))
 
 (defclass urel (umlsclass)
-  ((rel :type string :initarg :rel :reader rel)
-   (cui1 :type fixnum :initarg :cui1 :reader cui1)
-   (cui2 :type fixnum :initarg :cui2 :reader cui2)
-   (pfstr2 :type string :initarg :pfstr2 :reader pfstr2)
-   (rela :type string :initarg :rela :reader rela)
-   (sab :type string :initarg :sab :reader sab)
-   (sl :type string  :initarg :sl :reader sl)
-   (mg :type string  :initarg :mg :reader mg))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs 
-   :rel nil :cui1 nil :cui2 nil :pfstr2 nil :rela nil :sab nil :sl nil :mg nil)
-  (:title "Relationship")
-  (:ref-fields (rel find-brel-rel) (sab find-bsab-sab) (cui2 find-ucon-cui))
-  (:fields (rel :string) (rela :string) (sab :string) (sl :string) 
-          (mg :string) (cui2 :string fmt-cui) (pfstr2 :cdata)))
-       
+  ((rel :value-type string :initarg :rel :reader rel)
+   (cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
+   (aui1 :value-type fixnum :initarg :aui1 :reader aui1 :print-formatter fmt-aui)
+   (stype1 :value-type string  :initarg :stype1 :reader stype1)
+   (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :hyperlink find-ucon-cui
+         :print-formatter fmt-cui)
+   (aui2 :value-type fixnum :initarg :aui2 :reader aui2 :hyperlink find-ucon-aui
+         :print-formatter fmt-aui)
+   (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
+   (stype2 :value-type string  :initarg :stype2 :reader stype2)
+   (rela :value-type string :initarg :rela :reader rela)
+   (rui :value-type fixnum  :initarg :rui :reader rui :print-formatter fmt-rui)
+   (srui :value-type string  :initarg :srui :reader srui)
+   (sab :value-type string :initarg :sab :reader sab :hyperlink find-usab-rsab)
+   (sl :value-type string  :initarg :sl :reader sl)
+   (rg :value-type string  :initarg :rg :reader rg)
+   (dir :value-type string  :initarg :dir :reader dir)
+   (suppress :value-type string  :initarg :suppress :reader suppress)
+   (cvf :value-type string  :initarg :cvf :reader cvf))
+  (:metaclass hyperobject-class)
+  (:user-name "Relationship")
+  (:default-print-slots stype1 rel cui2 aui2 stype2 rela rui srui sab sl rg dir suppress pfstr2))
+
+#+mrcoc
 (defclass ucoc (umlsclass)
-  ((cui1 :type fixnum :initarg :cui1 :reader cui1)
-   (cui2 :type fixnum :initarg :cui2 :reader cui2)
-   (pfstr2 :type string :initarg :pfstr2 :reader pfstr2)
-   (soc :type string :initarg :soc :reader soc)
-   (cot :type string :initarg :cot :reader cot)
-   (cof :type fixnum :initarg :cof :reader cof)
-   (coa :type string :initarg :coa :reader coa))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs 
-   :cui1 nil :cui2 nil :pfstr2 nil :soc nil :cot nil :cof nil :coa nil)
-  (:title "Co-occuring Concept")
-  (:ref-fields (cui2 find-ucon-cui))
-  (:fields (soc :string) (cot :string) (cof :fixnum) (coa :cdata)
-          (cui2 :string fmt-cui) (pfstr2 :cdata)))
-
-       
-(defclass uatx (umlsclass)
-  ((sab :type string :initarg :sab :reader sab)
-   (rel :type string :initarg :rel :reader rel)
-   (atx :type string :initarg :atx :reader atx))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :sab nil :rel nil :atx nil)
-  (:title "Associated Expression")
-  (:fields (sab :string) (rel :string) (atx :cdata)))
+  ((cui1 :value-type fixnum :initarg :cui1 :reader cui1 :print-formatter fmt-cui)
+   (aui1 :value-type fixnum :initarg :aui1 :reader aui1 :print-formatter fmt-aui)
+   (cui2 :value-type fixnum :initarg :cui2 :reader cui2 :print-formatter fmt-cui
+         :hyperlink find-ucon-cui)
+   (aui2 :value-type fixnum :initarg :aui2 :reader aui2 :print-formatter fmt-aui
+         :hyperlink find-ucon-aui)
+   (pfstr2 :value-type cdata :initarg :pfstr2 :reader pfstr2)
+   (sab :value-type string :initarg :sab :reader sab)
+   (cot :value-type string :initarg :cot :reader cot)
+   (cof :value-type fixnum :initarg :cof :reader cof)
+   (coa :value-type cdata :initarg :coa :reader coa)
+   (cvf :value-type string  :initarg :cvf :reader cvf))
+  (:metaclass hyperobject-class)
+  (:user-name "Co-occuring Concept")
+  (:default-print-slots cot cof coa cui2 aui2 sab pfstr2))
 
 (defclass ucon (umlsclass)
-  ((cui :type fixnum :initarg :cui :reader cui )
-   (pfstr :initarg :pfstr :reader pfstr)
-   (lrl :initarg :lrl :reader lrl)
-   (s#term :reader s#term)
-   (s#def :reader s#def)
-   (s#lo :reader s#lo)
-   (s#rel :reader s#rel)
-   (s#coc :reader s#coc)
-   (s#sat :reader s#sat)
-   (s#atx :reader s#atx)
-   (s#sty :reader s#sty))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :cui nil :pfstr nil :lrl nil)
-  (:title "Concept")
-  (:subobjects-lists 
-   (s#def udef) (s#sty usty) (s#lo ulo) (s#atx uatx) (s#sat usat) (s#rel urel) 
-   (s#coc ucoc) (s#term uterm))
-  (:fields (cui :string fmt-cui) (lrl :fixum) (pfstr :cdata))
-  (:ref-fields (cui find-ucon-cui)))
+  ((cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
+        :hyperlink find-ucon-cui)
+   (lrl :value-type fixnum :initarg :lrl :reader lrl
+        :compute-cached-value (find-lrl-cui cui))
+   (pfstr :value-type cdata :initarg :pfstr :reader pfstr
+          :compute-cached-value (find-pfstr-cui cui))
+   (s#def :reader s#def :subobject (find-udef-cui cui))
+   (s#so :reader s#so :subobject (find-uso-cui cui))
+   (s#hier :reader s#hier :subobject (find-uhier-cui cui))
+   (s#map :reader s#map :subobject (find-umap-cui cui))
+   (s#smap :reader s#smap :subobject (find-usmap-cui cui))
+   (s#sty :reader s#sty :subobject (find-usty-cui cui))
+   (s#term :reader s#term :subobject (find-uterm-cui cui))
+   (s#sat :reader s#sat :subobject (find-usat-ui cui))
+   (s#rel :reader s#rel :subobject (find-urel-cui cui))
+   #+mrcoc (s#coc :reader s#coc :subobject (find-ucoc-cui cui))
+   )
+  (:metaclass hyperobject-class)
+  (:user-name "Concept")
+  (:default-print-slots cui lrl pfstr))
+
+
+(defclass uconso (umlsclass)
+  ((cui :value-type fixnum :initarg :cui :reader cui :print-formatter fmt-cui
+        :hyperlink find-ucon-cui)
+   (pfstr :value-type cdata :initarg :pfstr :reader pfstr
+          :compute-cached-value (find-pfstr-cui cui))
+   (lat :value-type string :initarg :lat :reader lat)
+   (ts :value-type string :initarg :ts :reader ts)
+   (lui :value-type fixnum :initarg :lui :reader lui :print-formatter fmt-lui)
+   (stt :value-type string :initarg :stt :reader stt)
+   (sui :value-type fixnum :initarg :sui :reader sui :print-formatter fmt-sui)
+   (ispref :value-type string :initarg :ispref :reader ispref)
+   (aui :value-type fixnum :initarg :aui :reader aui :print-formatter fmt-aui)
+   (saui :value-type string :initarg :saui :reader saui)
+   (scui :value-type string :initarg :scui :reader scui)
+   (sdui :value-type string :initarg :sdui :reader sdui)
+   (sab :value-type string :initarg :sab :reader sab)
+   (tty :value-type string :initarg :tty :reader tty)
+   (code :value-type string :initarg :code :reader code)
+   (str :value-type string :initarg :str :reader str)
+   (srl :value-type fixnum :initarg :srl :reader srl)
+   (suppress :value-type string :initarg :suppress :reader suppress)
+   (cvf :value-type string :initarg :cvf :reader cvf)
+   (kpfeng :value-type string :initarg :kpfeng :reader kpfeng)
+   (kcuisui :value-type bigint :initarg :kcuisui :reader kcuisui)
+   (kcuilui :value-type bigint :initarg :kcuilui :reader kcuilui)
+   (kcuilrl :value-type fixnum :initarg :kcuilrl :reader kcuilrl)
+   (kluilrl :value-type fixnum :initarg :kluilrl :reader kluilrl)
+   (ksuilrl :value-type fixnum :initarg :ksuilrl :reader ksuilrl)
+   (s#def :reader s#def :subobject (find-udef-cui cui))
+   (s#so :reader s#so :subobject (find-uso-cui cui))
+   (s#hier :reader s#hier :subobject (find-uhier-cui cui))
+   (s#map :reader s#map :subobject (find-umap-cui cui))
+   (s#smap :reader s#smap :subobject (find-usmap-cui cui))
+   (s#sty :reader s#sty :subobject (find-usty-cui cui))
+   (s#term :reader s#term :subobject (find-uterm-cui cui))
+   (s#sat :reader s#sat :subobject (find-usat-ui cui))
+   (s#rel :reader s#rel :subobject (find-urel-cui cui))
+   #+mrcoc (s#coc :reader s#coc :subobject (find-ucoc-cui cui))
+   )
+  (:documentation "CONSO is a new concept from the RRF files.")
+  (:metaclass hyperobject-class)
+  (:user-name "Concept")
+  (:default-print-slots cui kcuilrl str sab))
+
+(defclass umap (umlsclass)
+  ((mapsetcui :value-type fixnum :initarg :mapsetcui :reader mapsetcui)
+   (mapsetsab :value-type string :initarg :mapsetsab :reader mapsetsab)
+   (mapsubsetid :value-type string :initarg :mapsubsetid :reader mapsubsetid)
+   ;; fixme: will convert to integer
+   (maprank :value-type string :initarg :maprank :reader maprank)
+   (fromid :value-type string :initarg :fromid :reader fromid)
+   (fromsid :value-type string :initarg :fromsid :reader fromsid)
+   (fromexpr :value-type string :initarg :fromexpr :reader fromexpr)
+   (fromtype :value-type string :initarg :fromtype :reader fromtype)
+   (fromrule :value-type string :initarg :fromrule :reader fromrule)
+   (fromres :value-type string :initarg :fromres :reader fromres)
+   (rel :value-type string :initarg :rel :reader rel)
+   (rela :value-type string :initarg :rela :reader rela)
+   (toid :value-type string :initarg :toid :reader toid)
+   (tosid :value-type string :initarg :tosid :reader tosid)
+   (toexpr :value-type string :initarg :toexpr :reader toexpr)
+   (totype :value-type string :initarg :totype :reader totype)
+   (torule :value-type string :initarg :torule :reader torule)
+   (tores :value-type string :initarg :tores :reader tores)
+   (maprule :value-type string :initarg :maprule :reader maprule)
+   (maptype :value-type string :initarg :maptype :reader maptype)
+   (mapatn :value-type string :initarg :mapatn :reader mapatn)
+   (mapatv :value-type string :initarg :mapatv :reader mapatv)
+   (cvf :value-type string  :initarg :cvf :reader cvf))
+  (:metaclass hyperobject-class)
+  (:user-name "Mapping")
+  (:default-print-slots mapsetcui mapsetsab mapsubsetid maprank fromid fromsid fromexpr fromtype
+                        fromrule fromres rel rela toid tosid toexpr totype torule tores maprule
+                        maptype mapatn mapatv))
+
+(defclass usmap (umlsclass)
+  ((mapsetcui :value-type fixnum :initarg :mapsetcui :reader mapsetcui)
+   (mapsetsab :value-type string :initarg :mapsetsab :reader mapsetsab)
+   (fromexpr :value-type string :initarg :fromexpr :reader fromexpr)
+   (fromtype :value-type string :initarg :fromtype :reader fromtype)
+   (rel :value-type string :initarg :rel :reader rel)
+   (rela :value-type string :initarg :rela :reader rela)
+   (toexpr :value-type string :initarg :toexpr :reader toexpr)
+   (totype :value-type string :initarg :totype :reader totype)
+   (cvf :value-type string  :initarg :cvf :reader cvf))
+  (:metaclass hyperobject-class)
+  (:user-name "Simple Mapping")
+  (:default-print-slots mapsetcui mapsetsab fromexpr fromtype rel rela toexpr totype))
 
 (defclass uxw (umlsclass)
-  ((wd :type string :initarg :wd :reader wd)
-   (cui :type fixnum :initform nil :initarg :cui :reader cui)
-   (lui :type fixnum :initform nil :initarg :lui :reader lui)
-   (sui :type fixnum :initform nil :initarg :sui :reader sui))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :wd nil :cui nil :lui nil :sui nil)
-  (:title "XW Index")
-  (:fields (wd :string) (cui :string fmt-cui) (lui :string fmt-lui) 
-          (sui :string fmt-sui)))
+  ((wd :value-type string :initarg :wd :reader wd)
+   (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
+   (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
+   (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui))
+  (:metaclass hyperobject-class)
+  (:user-name "XW Index" "XW Indices")
+  (:default-print-slots wd cui lui sui))
+
+(defclass uxw-noneng (umlsclass)
+  ((lat :value-type string :initarg :lat :reader lat)
+   (wd :value-type string :initarg :wd :reader wd)
+   (cui :value-type fixnum :initform nil :initarg :cui :reader cui :print-formatter fmt-cui)
+   (lui :value-type fixnum :initform nil :initarg :lui :reader lui :print-formatter fmt-lui)
+   (sui :value-type fixnum :initform nil :initarg :sui :reader sui :print-formatter fmt-sui)
+   (lrl :value-type fixnum :initform nil :initarg :lrl :reader lrl))
+  (:metaclass hyperobject-class)
+  (:user-name "XW Non-English Index" "XW Non-English Indices")
+  (:default-print-slots wd cui lui sui))
 
 (defclass uxnw (umlsclass)
-  ((lat :type string :initarg :lat :reader lat)
-   (nwd :type string :initarg :nwd :reader nwd)
-  (cuilist :type list :initarg :cuilist :reader uxnw-cuilist))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :lat nil :nwd nil :cuilist nil)
-  (:title "XNW Index")
-  (:fields (lat :string) (nwd :string) (cuilist :string)))
+  ((lat :value-type string :initarg :lat :reader lat)
+   (nwd :value-type string :initarg :nwd :reader nwd)
+   (cuilist :value-type list :initarg :cuilist :reader uxnw-cuilist))
+  (:metaclass hyperobject-class)
+  (:user-name "XNW Index" "XNW Indices")
+  (:default-print-slots lat nwd cuilist))
 
 (defclass uxns (umlsclass)
-  ((lat :type string :initarg :lat :reader lat)
-   (nstr :type string :initarg :nstr :reader nstr)
-   (cuilist :type list :initarg :cuilist :reader cuilist))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :lat nil :nstr nil :cuilist nil)
-  (:title "XNS Index")
-  (:fields (lat :string) (nstr :string) (cuilist :string)))
+  ((lat :value-type string :initarg :lat :reader lat)
+   (nstr :value-type string :initarg :nstr :reader nstr)
+   (cuilist :value-type list :initarg :cuilist :reader cuilist))
+  (:metaclass hyperobject-class)
+  (:user-name "XNS Index" "XNS Indices")
+  (:default-print-slots lat nstr cuilist))
+
+(defclass udoc (umlsclass)
+  ((dockey :value-type string :initarg :dockey :reader dockey)
+   (expl :value-type cdata :initarg :expl :reader expl)
+   (dtype :value-type cdata :initarg :dtype :reader dtype)
+   (dvalue :value-type cdata :initarg :dvalue :reader dvalue))
+  (:metaclass hyperobject-class)
+  (:user-name "Documentation record")
+  (:default-print-slots dockey expl dtype dvalue))
 
 
 ;;; LEX objects
 
 (defclass lexterm (umlsclass)
-  ((eui :type fixnum :initarg :eui :reader eui)
-   (wrd :type string :initarg :wrd :reader wrd)
-   (s#abr :reader s#abr)
-   (s#agr :reader s#agr)
-   (s#cmp :reader s#cmp)
-   (s#mod :reader s#mod)
-   (s#nom :reader s#nom)
-   (s#prn :reader s#prn)
-   (s#prp :reader s#prp)
-   (s#spl :reader s#spl)
-   (s#trm :reader s#trm)
-   (s#typ :reader s#typ))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :wrd nil)
-  (:title "Lexical Term")
-  (:subobjects-lists 
-   (s#abr labr) (s#agr lagr) (s#cmp lcmp) (s#mod lmod) (s#nom unom) 
-   (s#prn lprn) (s#prp lprp) (s#spl lspl) (s#trm ltrm) (s#typ ltyp))
-  (:fields (eui :string fmt-eui) (wrd :string))
-  (:ref-fields (eui find-lexterm-eui)))
+  ((eui :value-type fixnum :initarg :eui :reader eui :print-formatter fmt-eui
+        :hyperlink find-lexterm-eui)
+   (wrd :value-type string :initarg :wrd :reader wrd)
+   (s#abr :reader s#abr :subobject (find-labr-eui eui))
+   (s#agr :reader s#agr :subobject (find-lagr-eui eui))
+   (s#cmp :reader s#cmp :subobject (find-lcmp-eui eui))
+   (s#mod :reader s#mod :subobject (find-lmod-eui eui))
+   (s#nom :reader s#nom :subobject (find-lnom-eui eui))
+   (s#prn :reader s#prn :subobject (find-lprn-eui eui))
+   (s#prp :reader s#prp :subobject (find-lprp-eui eui))
+   (s#spl :reader s#spl :subobject (find-lspl-eui eui))
+   (s#trm :reader s#trm :subobject (find-ltrm-eui eui))
+   (s#typ :reader s#typ :subobject (find-ltyp-eui eui)))
+  (:metaclass hyperobject-class)
+  (:user-name "Lexical Term")
+  (:default-print-slots eui wrd))
 
 
 (defclass labr  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (abr :type string :initarg :abr :reader abr)
-   (eui2 :type integer :initarg :eui2 :reader eui2)
-   (bas2 :type string :initarg :bas2 :reader bas2))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :abr nil :eui2 nil :bas2 nil)
-  (:title "Abbreviations and Acronyms")
-  (:fields (eui :string fmt-eui) (bas :string) (abr :string) 
-          (eui2 :string fmt-eui) (bas2 :string )))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (abr :value-type string :initarg :abr :reader abr)
+   (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
+   (bas2 :value-type string :initarg :bas2 :reader bas2))
+  (:metaclass hyperobject-class)
+  (:user-name "Abbreviations and Acronym")
+  (:default-print-slots eui bas abr eui2 bas2))
 
 (defclass lagr  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (str :type string :initarg :str :reader str)
-   (sca :type string :initarg :sca :reader sca)
-   (agr :type string :initarg :agr :reader agr)
-   (cit :type string :initarg :cit :reader cit)
-   (bas :type string :initarg :bas :reader bas))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :str nil :sca nil :agr nil :cit nil :bas nil)
-  (:title "Agreement and Inflection")
-  (:fields (eui :string fmt-eui) (str :string) (sca :string) (agr :string)
-          (cit :string) (bas :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (str :value-type string :initarg :str :reader str)
+   (sca :value-type string :initarg :sca :reader sca)
+   (agr :value-type string :initarg :agr :reader agr)
+   (cit :value-type string :initarg :cit :reader cit)
+   (bas :value-type string :initarg :bas :reader bas))
+  (:metaclass hyperobject-class)
+  (:user-name "Agreement and Inflection")
+  (:default-print-slots eui str sca agr cit bas))
 
 (defclass lcmp  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (sca :type string :initarg :sca :reader sca)
-   (com :type string :initarg :com :reader com))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :sca nil :com nil)
-  (:title "Complementation")
-  (:fields (eui :string fmt-eui) (bas :string) (sca :string) (com :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (sca :value-type string :initarg :sca :reader sca)
+   (com :value-type string :initarg :com :reader com))
+  (:metaclass hyperobject-class)
+  (:user-name "Complementation")
+  (:default-print-slots eui bas sca com))
 
 (defclass lmod  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (sca :type string :initarg :sca :reader sca)
-   (psnmod :type string :initarg :psnmod :reader psnmod)
-   (fea :type string :initarg :fea :reader fea))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :sca nil :psnmod nil :fea nil)
-  (:title "Modifiers")
-  (:fields (eui :string fmt-eui) (bas :string) (sca :string) (psnmod :string) 
-          (fea :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (sca :value-type string :initarg :sca :reader sca)
+   (psnmod :value-type string :initarg :psnmod :reader psnmod)
+   (fea :value-type string :initarg :fea :reader fea))
+  (:metaclass hyperobject-class)
+  (:user-name "Modifier")
+  (:default-print-slots eui bas sca psnmod fea))
 
 (defclass lnom  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (sca :type string :initarg :sca :reader sca)
-   (eui2 :type integer :initarg :eui2 :reader eui2)
-   (bas2 :type string :initarg :bas2 :reader bas2)
-   (sca2 :type string :initarg :sca2 :reader sca2))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :sca nil :eui2 nil :bas2 nil :sca2 nil)
-  (:title "Nominalizations")
-  (:fields (eui :string fmt-eui) (bas :string) (sca :string) 
-          (eui2 :string fmt-eui) (bas2 :string) (sca2 :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (sca :value-type string :initarg :sca :reader sca)
+   (eui2 :value-type integer :initarg :eui2 :reader eui2 :print-formatter fmt-eui)
+   (bas2 :value-type string :initarg :bas2 :reader bas2)
+   (sca2 :value-type string :initarg :sca2 :reader sca2))
+  (:metaclass hyperobject-class)
+  (:user-name "Nominalization")
+  (:default-print-slots eui bas sca eui2 bas2 sca2))
 
 (defclass lprn  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (num :type string :initarg :num :reader num)
-   (gnd :type string :initarg :gnd :reader gnd)
-   (cas :type string :initarg :cas :reader cas)
-   (pos :type string :initarg :pos :reader pos)
-   (qnt :type string :initarg :qnt :reader qnt)
-   (fea :type string :initarg :fea :reader fea))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :num nil :gnd nil :cas nil
-                    :pos nil :qnt nil :fea nil)
-  (:title "Pronouns")
-  (:fields (eui :string fmt-eui) (bas :string) (num :string) (gnd :string)
-          (cas :string) (pos :string) (qnt :string) (fea :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (num :value-type string :initarg :num :reader num)
+   (gnd :value-type string :initarg :gnd :reader gnd)
+   (cas :value-type string :initarg :cas :reader cas)
+   (pos :value-type string :initarg :pos :reader pos)
+   (qnt :value-type string :initarg :qnt :reader qnt)
+   (fea :value-type string :initarg :fea :reader fea))
+  (:metaclass hyperobject-class)
+  (:user-name "Pronoun")
+  (:default-print-slots eui bas num gnd cas pos qnt fea))
 
 (defclass lprp  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (str :type string :initarg :str :reader str)
-   (sca :type string :initarg :sca :reader sca)
-   (fea :type string :initarg :fea :reader fea))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :str nil :sca nil :fea nil)
-  (:title "Properties")
-  (:fields (eui :string fmt-eui) (bas :string) (str :string) (sca :string) 
-          (fea :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (str :value-type string :initarg :str :reader str)
+   (sca :value-type string :initarg :sca :reader sca)
+   (fea :value-type string :initarg :fea :reader fea))
+  (:metaclass hyperobject-class)
+  (:user-name "Property" "Properties")
+  (:default-print-slots eui bas str sca fea))
 
 
 (defclass lspl  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (spv :type string :initarg :spv :reader spv)
-   (bas :type string :initarg :bas :reader bas))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :spv nil :bas nil)
-  (:title "Spelling Variants")
-  (:fields (eui :string fmt-eui) (spv :string) (bas :string)))
-
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (spv :value-type string :initarg :spv :reader spv)
+   (bas :value-type string :initarg :bas :reader bas))
+  (:metaclass hyperobject-class)
+  (:user-name "Spelling Variant")
+  (:default-print-slots eui spv bas))
 
 
 (defclass ltrm  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (gen :type string :initarg :gen :reader gen))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :gen nil)
-  (:title "Trade Marks")
-  (:fields (eui :string fmt-eui) (bas :string) (gen :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (gen :value-type string :initarg :gen :reader gen))
+  (:metaclass hyperobject-class)
+  (:user-name "Trade Mark")
+  (:default-print-slots eui bas gen))
 
 (defclass ltyp  (umlsclass)
-  ((eui :type integer :initarg :eui :reader eui)
-   (bas :type string :initarg :bas :reader bas)
-   (sca :type string :initarg :sca :reader sca)
-   (typ :type string :initarg :typ :reader typ))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :eui nil :bas nil :sca nil :typ nil)
-  (:title "Inflection Type")
-  (:fields (eui :string fmt-eui) (bas :string) (sca :string) (typ :string)))
+  ((eui :value-type integer :initarg :eui :reader eui :print-formatter fmt-eui)
+   (bas :value-type string :initarg :bas :reader bas)
+   (sca :value-type string :initarg :sca :reader sca)
+   (typ :value-type string :initarg :typ :reader typ))
+  (:metaclass hyperobject-class)
+  (:user-name "Inflection Type")
+  (:default-print-slots eui bas sca typ))
 
 (defclass lwd (umlsclass)
-  ((wrd :type string :initarg :wrd :reader wrd)
-   (euilist :type list :initarg :euilist :reader euilist))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :wrd nil :euilist nil)
-  (:title "Lexical Word Index")
-  (:fields (wrd :string) (euilist :string)))
+  ((wrd :value-type string :initarg :wrd :reader wrd)
+   (euilist :value-type list :initarg :euilist :reader euilist))
+  (:metaclass hyperobject-class)
+  (:user-name "Lexical Word Index" "Lexical Word Indices")
+  (:default-print-slots wrd euilist))
 
 ;;; Semantic NET objects
 
 (defclass sdef (umlsclass)
-  ((rt :type string :initarg :rt :reader rt)
-   (ui :type integer :initarg :ui :reader ui)
-   (styrl :type string :initarg :styrl :reader styrl)
-   (stnrtn :type string :initarg :stnrtn :reader stnrtn)
-   (def :type string :initarg :def :reader def)
-   (ex :type string :initarg :ex :reader ex)
-   (un :type string :initarg :un :reader un)
-   (rh :type string :initarg :rh :reader rh)
-   (abr :type string :initarg :abr :reader abr)
-   (rin :type string :initarg :rin :reader rin))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs 
-   :rt nil :ui nil :styrl nil :stnrtn nil :def nil :ex nil :un nil :rh nil 
-   :abr nil :rin nil)
-  (:title "Basic information about Semantic Types and Relations")
-  (:fields 
-   (rt :string) (ui :string fmt-tui) (styrl :string) (stnrtn :string-tui) 
-   (def :string) (ex :string) (un :string) (rh :string) (abr :string) 
-   (rin :string)))
+  ((rt :value-type string :initarg :rt :reader rt)
+   (ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
+   (styrl :value-type string :initarg :styrl :reader styrl)
+   (stnrtn :value-type string :initarg :stnrtn :reader stnrtn)
+   (def :value-type string :initarg :def :reader def)
+   (ex :value-type string :initarg :ex :reader ex)
+   (un :value-type string :initarg :un :reader un)
+   (rh :value-type string :initarg :rh :reader rh)
+   (abr :value-type string :initarg :abr :reader abr)
+   (rin :value-type string :initarg :rin :reader rin))
+  (:metaclass hyperobject-class)
+  (:user-name "Basic information about Semantic Types and Relation")
+  (:default-print-slots rt ui styrl stnrtn def ex un rh abr rin))
 
 (defclass sstr (umlsclass)
-  ((styrl :type string :initarg :styrl :reader styrl)
-   (rl :type string :initarg :rl :reader rl)
-   (styrl2 :type string :initarg :styrl2 :reader styrl2)
-   (ls :type string :initarg :ls :reader ls))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :styrl nil :rl nil :styrl2 nil :ls nil)
-  (:title "Structure of the Network")
-  (:fields (styrl :string) (rl :string) (styrl2 :string) (ls :string)))
+  ((styrl :value-type string :initarg :styrl :reader styrl)
+   (rl :value-type string :initarg :rl :reader rl)
+   (styrl2 :value-type string :initarg :styrl2 :reader styrl2)
+   (ls :value-type string :initarg :ls :reader ls))
+  (:metaclass hyperobject-class)
+  (:user-name "Structure of the Network")
+  (:default-print-slots styrl rl styrl2 ls))
 
 (defclass sstre1 (umlsclass)
-  ((ui :type integer :initarg :ui :reader ui)
-   (ui2 :type integer :initarg :ui2 :reader ui2)
-   (ui3 :type integer :initarg :ui3 :reader ui3))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :ui nil :ui2 nil :ui3 nil)
-  (:title "Fully Inherited Set of Releatons (TUI's)")
-  (:fields (ui :string fmt-tui) (ui2 :string fmt-tui) (ui3 :string fmt-tui)))
+  ((ui :value-type integer :initarg :ui :reader ui :print-formatter fmt-tui)
+   (ui2 :value-type integer :initarg :ui2 :reader ui2 :print-formatter fmt-tui)
+   (ui3 :value-type integer :initarg :ui3 :reader ui3 :print-formatter fmt-tui))
+  (:metaclass hyperobject-class)
+  (:user-name "Fully Inherited Set of Relation (TUIs)"
+              "Fully Inherited Set of Relations (TUIs)")
+  (:default-print-slots ui ui2 ui3))
 
 (defclass sstre2 (umlsclass)
-  ((sty :type string :initarg :ui :reader sty)
-   (rl :type string :initarg :ui2 :reader rl)
-   (sty2 :type string :initarg :ui3 :reader sty2))
-  (:metaclass kmrcl:ml-class)
-  (:default-initargs :sty nil :rl nil :sty2 nil)
-  (:title "Fully Inherited Set of Releatons (strings)")
-  (:fields (sty :string) (rl :string) (sty2 :string)))
-
-;;; Formatting routines
-
-(defmethod fmt-cui ((c ucon))
-  (format nil "C~7,'0d" (cui c)))
-
-(defmethod fmt-cui ((c fixnum))
-  (format nil "C~7,'0d" c))
-
-(defmethod fmt-cui ((c string))
-  (if (eql (aref c 0) #\C)
-      c
-    (format nil "C~7,'0d" (parse-integer c))))
-
-(defmethod fmt-cui ((c null))
-  (format nil "nil"))
-
-(defmethod fmt-lui ((l uterm))
-  (format nil "L~7,'0d" (lui l)))
-
-(defmethod fmt-lui ((l fixnum))
-  (format nil "L~7,'0d" l))
-
-(defmethod fmt-lui ((l string))
-  (if (eql (aref l 0) #\L)
-      l
-  (format nil "L~7,'0d" (parse-integer l))))
-
-(defmethod fmt-sui ((s ustr))
-  (format nil "S~7,'0d" (sui s)))
-
-(defmethod fmt-sui ((s fixnum))
-  (format nil "S~7,'0d" s))
-
-(defmethod fmt-sui ((s string))
-  (if (eql (aref s 0) #\S)
-      s
-  (format nil "S~7,'0d" (parse-integer s))))
-
-(defmethod fmt-tui ((s fixnum))
-  (format nil "T~3,'0d" s))
-
-(defmethod fmt-tui ((s string))
-  (if (eql (aref s 0) #\T)
-      s
-  (format nil "T~3,'0d" (parse-integer s))))
-
-(defmethod fmt-eui ((e fixnum))
-  (format nil "E~7,'0d" e))
-
-(defmethod fmt-eui ((e string))
-  (if (eql (aref e 0) #\E)
-      e
-    (format nil "E~7,'0d" (parse-integer e))))
-
-(defmethod fmt-eui ((e null))
-  (format nil "nil"))
-
-;;; Generic display functions
-
-(eval-when (:compile-toplevel :load-toplevel :execute)
-(defun english-term-p (obj)
-  (and (eq (class-name (class-of obj)) 'uterm)
-       (string-equal (lat obj) "ENG"))))
-
-(defun display-umls-obj 
-  (obj &key (os *standard-output*) (format :text) (label nil) 
-       (file-wrapper t) (english-only nil) (subobjects nil)
-       (refvars nil))
-  (display-ml-class 
-   obj :os os :format format :label label :subobjects subobjects
-   :file-wrapper file-wrapper
-   :english-only-function (if english-only #'english-term-p nil)
-   :refvars refvars))
-                    
-(defmacro defludisp-ml-class (newfuncname lookup-func)
-  "Defines functions for looking up and displaying objects"
-  `(defun ,newfuncname 
-     (keyval &key (os *standard-output*) (format :text) (label nil)
-            (file-wrapper t) (english-only nil) (subobjects nil))
-     (let ((obj (funcall ,lookup-func keyval)))
-       (display-umls-obj obj :os os :format format :label label 
-                        :file-wrapper file-wrapper :english-only english-only
-                        :subobjects subobjects))))
-
-(defludisp-ml-class disp-con #'find-ucon-cui)
-(defludisp-ml-class disp-term #'find-uterm-lui)
-(defludisp-ml-class disp-str #'find-ustr-sui)
-
+  ((sty :value-type string :initarg :ui :reader sty)
+   (rl :value-type string :initarg :ui2 :reader rl)
+   (sty2 :value-type string :initarg :ui3 :reader sty2))
+  (:metaclass hyperobject-class)
+  (:user-name "Fully Inherited Set of Relation (strings)"
+              "Fully Inherited Set of Relations (strings)")
+  (:default-print-slots sty rl sty2))
+
+
+;;; **************************
+;;; Local Classes
+;;; **************************
+
+(defclass ustats (umlsclass)
+  ((name :value-type string :initarg :name :reader name)
+   (hits :value-type integer :initarg :hits :reader hits
+         :user-name "count"
+         :print-formatter fmt-comma-integer)
+   (srl :value-type fixnum :initarg :srl :reader srl))
+  (:metaclass hyperobject-class)
+  (:default-initargs :name nil :hits nil :srl nil)
+  (:user-name "UMLS Statistic")
+  (:default-print-slots name hits srl)
+  (:documentation "Custom Table: UMLS Database statistics."))