X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=concord-turtle-dump.el;h=6cf3684376ca479988802f7dbf32853a205acbc1;hb=0b80009075cff7c8c0796668f7b7033b6354b265;hp=90f504a44814429a43145f569df0001c5962f68a;hpb=7bb8df82f38b2040104766fb35ff127882a77151;p=chise%2Ftomoyo-tools.git diff --git a/concord-turtle-dump.el b/concord-turtle-dump.el index 90f504a..6cf3684 100644 --- a/concord-turtle-dump.el +++ b/concord-turtle-dump.el @@ -1,6 +1,6 @@ ;;; concord-turtle-dump.el --- Character Database utility -*- coding: utf-8-er; -*- -;; Copyright (C) 2017,2018 MORIOKA Tomohiko. +;; Copyright (C) 2017,2018,2019 MORIOKA Tomohiko. ;; Author: MORIOKA Tomohiko ;; Keywords: CHISE, Character Database, RDF, Turtle, ISO/IEC 10646, UCS, Unicode, MULE. @@ -193,36 +193,66 @@ (cond ((eq '->subsumptive feature-name) ":subsume") + ((eq '<-subsumptive feature-name) + ":subsumed-in") + ((eq '->denotational feature-name) + ":unify") ((eq '<-denotational feature-name) - ":denotation-of") + ":unified-by") + ((eq '->formed feature-name) + ":formed") ((eq '<-formed feature-name) ":form-of") + ((eq '->same feature-name) + "ideo:same") ((eq '<-same feature-name) "ideo:same-as") + ((eq '->simplified feature-name) + "ideo:simplified-form") ((eq '<-simplified feature-name) "ideo:simplified-form-of") + ((eq '->vulgar feature-name) + "ideo:vulgar-form") ((eq '<-vulgar feature-name) "ideo:vulgar-form-of") + ((eq '->wrong feature-name) + "ideo:wrong-form") ((eq '<-wrong feature-name) "ideo:wrong-form-of") + ((eq '->original feature-name) + "ideo:original-form") ((eq '<-original feature-name) "ideo:original-form-of") + ((eq '->ancient feature-name) + "ideo:ancient-form") ((eq '<-ancient feature-name) "ideo:ancient-form-of") + ((eq '->Small-Seal feature-name) + "ideo:Small-Seal-form") ((eq '<-Small-Seal feature-name) - "ideo:Small-Seal-of") - ((eq '<-interchangeable feature-name) - "ideo:interchangeable-form-of") + "ideo:Small-Seal-form-of") + ((eq '->Oracle-Bones feature-name) + "ideo:Oracle-Bone-character") + ((eq '<-Oracle-Bones feature-name) + "ideo:Oracle-Bone-character-of") ((eq '->interchangeable feature-name) + "ideo:interchangeable-form") + ((eq '<-interchangeable feature-name) "ideo:interchangeable") ((eq '->mistakable feature-name) - "ideo:mistakable") + "ideo:mistakable-character") + ((eq '<-mistakable feature-name) + "ideo:mistakable-character-of") ((eq 'hanyu-dazidian feature-name) "ideo:hanyu-dazidian") ((eq '*note feature-name) "rdfs:comment") + ((eq '*references feature-name) + ":reference") ((eq '*instance feature-name) ":instance") + ((eq '*source-file feature-name) + ":source-file") (t (concat ":" (chise-turtle-uri-encode-ccs-name feature-name))))) @@ -412,15 +442,19 @@ (defun concord-turtle-insert-relation-feature (char name value line-breaking ccss readable) - (insert (format " %s%s " - (chise-turtle-uri-encode-feature-name name) - line-breaking)) + (if (and (consp value) + (cdr value)) + (insert (format " %s%s " + (chise-turtle-uri-encode-feature-name name) + line-breaking)) + (insert (format " %-20s " + (chise-turtle-uri-encode-feature-name name)))) (concord-turtle-insert-relations value readable) (insert " ;") ) (defun concord-turtle-insert-metadata (name value) - (let (col indent ret) + (let (col indent) (insert (format "%-7s " name)) (cond ((or (eq name :sources) @@ -434,14 +468,7 @@ (chise-turtle-uri-encode-ccs-name source)))) nil) ((eq name :references) - (setq ret (car value)) - (setq ret (plist-get (nth 1 ret) :ref)) - (setq col (current-column)) - (setq indent (make-string col ?\ )) - (insert (format "<%s>" ret)) - (dolist (refspec (cdr value)) - (setq ret (plist-get (nth 1 refspec) :ref)) - (insert (format " ,\n%s<%s>" indent ret))) + (concord-turtle-insert-references value) nil) (t (insert (format "%S" value)) @@ -482,7 +509,9 @@ al nil 'for-sub-node) (setq separator lbs)) - (setq ret (prin1-to-string cell)) + (setq ret (if (concord-object-p cell) + (concord-turtle-encode-object cell) + (prin1-to-string cell))) (if separator (if (< (+ (current-column) (length ret) @@ -542,6 +571,17 @@ (insert " ;") 'with-separator)) +(defun concord-turtle-insert-references (value &optional readable) + (let (ret col indent) + (setq ret (car value)) + (setq ret (plist-get (nth 1 ret) :ref)) + (setq col (current-column)) + (setq indent (make-string col ?\ )) + (insert (format "<%s>" ret)) + (dolist (refspec (cdr value)) + (setq ret (plist-get (nth 1 refspec) :ref)) + (insert (format " ,\n%s<%s>" indent ret))))) + (defun concord-turtle-insert-object (cell &optional readable) (if (integerp cell) (setq cell (decode-char '=ucs cell))) @@ -609,8 +649,12 @@ ((eq feature-name-base '=decomposition) (concord-turtle-insert-decomposition value readable) ) + ((eq feature-name-base '*references) + (concord-turtle-insert-references value readable) + ) ((or (eq feature-name-base 'ideographic-combination) (eq feature-name-base '*instance) + (eq feature-name-base 'abstract-glyph) (eq feature-name-base '<-formed) (string-match "^\\(->\\|<-\\)[^*]*$" (symbol-name feature-name-base))) (concord-turtle-insert-relations value readable) @@ -763,15 +807,15 @@ ccss readable) (setq obj-spec (delete feature-pair obj-spec)) ) - (when (and (setq feature-pair (assq '<-denotational@component obj-spec)) - (setq value (cdr feature-pair))) - (insert line-separator) - (concord-turtle-insert-relation-feature - object '<-denotational@component value - line-breaking - ccss readable) - (setq obj-spec (delete feature-pair obj-spec)) - ) + ;; (when (and (setq feature-pair (assq '<-denotational@component obj-spec)) + ;; (setq value (cdr feature-pair))) + ;; (insert line-separator) + ;; (concord-turtle-insert-relation-feature + ;; object '<-denotational@component value + ;; line-breaking + ;; ccss readable) + ;; (setq obj-spec (delete feature-pair obj-spec)) + ;; ) (when (and (setq feature-pair (assq 'name obj-spec)) (setq value (cdr feature-pair))) (insert (format "%s " line-separator)) @@ -989,19 +1033,18 @@ (insert (format "%s ideo:total-strokes [ " line-separator)) (setq col (current-column)) + (setq indent (make-string col ?\ )) (insert (format ":context domain:%-7s ;\n%srdf:value %S" (chise-turtle-uri-encode-ccs-name domain) - (make-string col ?\ ) + indent value)) (setq obj-spec (delete feature-pair obj-spec)) (setq skey (intern (format "%s*sources" key))) (when (and (setq feature-pair (assq skey obj-spec)) (setq value (cdr feature-pair))) - (insert (format " ;\n%s" indent)) + (insert (format " ;\n%s" indent)) (concord-turtle-insert-metadata :sources value) ;; (insert (format " ;\n%s:sources (" indent)) - ;; (setq col (current-column)) - ;; (setq indent (make-string col ?\ )) ;; (insert (format " chisebib:%s" (car value))) ;; (dolist (cell (cdr value)) ;; (insert (format "\n%s chisebib:%s" indent cell)))