(chise-turtle-uri-encode-feature-name):
[chise/tomoyo-tools.git] / isd-turtle.el
1 ;;; isd-turtle.el --- Utility to dump ideographic-structure as Turtle files; -*- coding: utf-8-mcs-er -*-
2
3 ;; Copyright (C) 2017, 2018 MORIOKA Tomohiko
4
5 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
6 ;; Keywords: Ideographic Structures (漢字構造、解字), IDS, CHISE, RDF, Turtle
7
8 ;; This file is a part of CHISE-ISD (Ideographic Structure Database).
9
10 ;; This program is free software; you can redistribute it and/or
11 ;; modify it under the terms of the GNU General Public License as
12 ;; published by the Free Software Foundation; either version 2, or (at
13 ;; your option) any later version.
14
15 ;; This program is distributed in the hope that it will be useful, but
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 ;; General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with this program; see the file COPYING.  If not, write to
22 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
24
25 ;;; Code:
26
27 (require 'chiset-common)
28
29 (defvar isd-url-prefix "http://rdf.chise.org/data/")
30
31 ;; (setq est-coded-charset-priority-list
32 ;;   '(; =ucs
33 ;;     =mj
34 ;;     =adobe-japan1-0
35 ;;     =adobe-japan1-1
36 ;;     =adobe-japan1-2
37 ;;     =adobe-japan1-3
38 ;;     =adobe-japan1-4
39 ;;     =adobe-japan1-5
40 ;;     =adobe-japan1-6
41 ;;     =ucs@iso
42 ;;     =jis-x0208 =jis-x0208@1990
43 ;;     =jis-x0213-1
44 ;;     =jis-x0213-1@2000 =jis-x0213-1@2004
45 ;;     =jis-x0213-2
46 ;;     =jis-x0212
47 ;;     =gt
48 ;;     =hanyo-denshi/ks
49 ;;     =hanyo-denshi/tk
50 ;;     =ucs-itaiji-001
51 ;;     =ucs-itaiji-002
52 ;;     =ucs-itaiji-003
53 ;;     =ucs-itaiji-004
54 ;;     =ucs-itaiji-005
55 ;;     =ucs-itaiji-006
56 ;;     =ucs-itaiji-007
57 ;;     =ucs-itaiji-008
58 ;;     =ucs-itaiji-009
59 ;;     =ucs-itaiji-010
60 ;;     =ucs-itaiji-084
61 ;;     =ucs-var-001
62 ;;     =ucs-var-002
63 ;;     =ucs-var-003
64 ;;     =ucs-var-004
65 ;;     =ucs-var-005
66 ;;     =cns11643-1 =cns11643-2 =cns11643-3
67 ;;     =cns11643-4 =cns11643-5 =cns11643-6 =cns11643-7
68 ;;     =gb2312
69 ;;     =big5-cdp
70 ;;     =ks-x1001
71 ;;     =gt-k
72 ;;     =ucs@unicode
73 ;;     =ucs@JP/hanazono
74 ;;     =gb12345
75 ;;     =ucs@cns
76 ;;     =ucs@gb
77 ;;     =zinbun-oracle =>zinbun-oracle
78 ;;     =daikanwa
79 ;;     =ruimoku-v6
80 ;;     =cbeta =jef-china3
81 ;;     =daikanwa/+2p
82 ;;     =+>ucs@iso =+>ucs@unicode
83 ;;     =+>ucs@jis
84 ;;     =+>ucs@cns
85 ;;     =+>ucs@ks
86 ;;     =+>ucs@jis/1990
87 ;;     =>mj
88 ;;     =>jis-x0208 =>jis-x0213-1
89 ;;     =>jis-x0208@1997
90 ;;     =>ucs@iwds-1
91 ;;     =>ucs@cognate
92 ;;     =>ucs@component
93 ;;     =>iwds-1
94 ;;     =>ucs@iso
95 ;;     =>ucs@unicode
96 ;;     =>ucs@jis =>ucs@cns =>ucs@ks
97 ;;     =>gt
98 ;;     =>gt-k
99 ;;     =>>ucs@iso =>>ucs@unicode
100 ;;     =>>ucs@jis =>>ucs@cns =>>ucs@ks
101 ;;     =>>gt-k
102 ;;     =>>hanyo-denshi/ks
103 ;;     ==mj
104 ;;     ==ucs@iso
105 ;;     ==ucs@unicode
106 ;;     ==adobe-japan1-0
107 ;;     ==adobe-japan1-1
108 ;;     ==adobe-japan1-2
109 ;;     ==adobe-japan1-3
110 ;;     ==adobe-japan1-4
111 ;;     ==adobe-japan1-5
112 ;;     ==adobe-japan1-6
113 ;;     ==ks-x1001
114 ;;     ==hanyo-denshi/ks
115 ;;     ==hanyo-denshi/tk
116 ;;     ==ucs@jis
117 ;;     ==gt
118 ;;     ==cns11643-1 ==cns11643-2 ==cns11643-3
119 ;;     ==cns11643-4 ==cns11643-5 ==cns11643-6 ==cns11643-7
120 ;;     ==jis-x0212
121 ;;     ==ucs@cns
122 ;;     ==koseki
123 ;;     ==daikanwa
124 ;;     ==gt-k
125 ;;     ==ucs@gb
126 ;;     ==ucs-itaiji-003
127 ;;     ==ucs@JP/hanazono
128 ;;     ==daikanwa/+2p
129 ;;     =>>jis-x0208 =>>jis-x0213-1 =>>jis-x0213-2
130 ;;     =+>jis-x0208 =+>jis-x0213-1 =+>jis-x0213-2
131 ;;     =+>hanyo-denshi/jt
132 ;;     =+>jis-x0208@1978
133 ;;     =>>gt
134 ;;     =+>adobe-japan1
135 ;;     =>>adobe-japan1
136 ;;     =jis-x0208@1983 =jis-x0208@1978
137 ;;     =>ucs-itaiji-001
138 ;;     =>ucs-itaiji-002
139 ;;     =>ucs-itaiji-003
140 ;;     =>ucs-itaiji-004
141 ;;     =>ucs-itaiji-005
142 ;;     =>ucs-itaiji-006
143 ;;     =>ucs-itaiji-007
144 ;;     =>ucs-itaiji-009
145 ;;     ==>ucs@bucs
146 ;;     =big5
147 ;;     =>cbeta
148 ;;     ===mj
149 ;;     ===ucs@iso
150 ;;     ===ucs@unicode
151 ;;     ===hanyo-denshi/ks
152 ;;     ===ks-x1001
153 ;;     ===gt
154 ;;     ===gt-k
155 ;;     ===ucs@ks
156 ;;     ===ucs@gb
157 ;;     =shinjigen
158 ;;     =shinjigen@rev
159 ;;     =shinjigen@1ed
160 ;;     =shinjigen/+p@rev
161 ;;     ==shinjigen
162 ;;     ==shinjigen@rev
163 ;;     ==daikanwa/+p
164 ;;     ==shinjigen@1ed
165 ;;     ===daikanwa/+p
166 ;;     =>daikanwa/ho
167 ;;     ===daikanwa/ho
168 ;;     ))
169
170 ;; (defvar isd-turtle-ccs-list nil)
171 (defvar chise-turtle-ccs-prefix-alist nil)
172
173 (defun charset-code-point-format-spec (ccs)
174   (cond ((memq ccs '(=ucs))
175          "0x%04X")
176         (t
177          (let ((ccs-name (symbol-name ccs)))
178            (cond
179             ((string-match
180               "\\(shinjigen\\|daikanwa/ho\\|=>iwds-1\\)"
181               ccs-name)
182              "%04d")
183             ((string-match
184               "\\(gt\\|daikanwa\\|adobe-japan1\\|cbeta\\|zinbun-oracle\\|hng\\)"
185               ccs-name)
186              "%05d")
187             ((string-match "\\(hanyo-denshi/ks\\|koseki\\|mj\\)" ccs-name)
188              "%06d")
189             ((string-match "hanyo-denshi/tk" ccs-name)
190              "%08d")
191             (t
192              "0x%X"))))))
193
194 ;; (defun isd-turtle-uri-encode-feature-name (feature-name)
195 ;;   (cond
196 ;;    ((eq '=ucs feature-name)
197 ;;     "a.ucs")
198 ;;    ((eq '==>ucs@bucs feature-name)
199 ;;     "bucs")
200 ;;    (t
201 ;;     (mapconcat (lambda (c)
202 ;;                  (if (eq c ?@)
203 ;;                      "_"
204 ;;                    (char-to-string c)))
205 ;;                (www-uri-encode-feature-name feature-name)
206 ;;                ""))))
207
208 ;; (defun isd-turtle-format-ccs-code-point (ccs code-point)
209 ;;   (unless (memq ccs isd-turtle-ccs-list)
210 ;;     (setq isd-turtle-ccs-list (cons ccs isd-turtle-ccs-list)))
211 ;;   (format "%s:%s"
212 ;;           (isd-turtle-uri-encode-feature-name ccs)
213 ;;           (format (charset-code-point-format-spec ccs)
214 ;;                   code-point)))
215 (defun chise-turtle-format-ccs-code-point (ccs code-point)
216   (let ((ccs-uri (chise-turtle-uri-encode-ccs-name ccs)))
217     (unless (assoc ccs-uri chise-turtle-ccs-prefix-alist)
218       (setq chise-turtle-ccs-prefix-alist
219             (cons (cons ccs-uri ccs)
220                   chise-turtle-ccs-prefix-alist)))
221     (format "%s:%s"
222             ccs-uri
223             (format (charset-code-point-format-spec ccs)
224                     code-point))))
225
226 ;; (defun isd-turtle-encode-char (object)
227 ;;   (let ((ccs-list est-coded-charset-priority-list)
228 ;;         ccs ret)
229 ;;     (if (setq ret (encode-char object '=ucs))
230 ;;         (chise-turtle-format-ccs-code-point '=ucs ret)
231 ;;       (while (and ccs-list
232 ;;                   (setq ccs (pop ccs-list))
233 ;;                   (not (setq ret (encode-char object ccs 'defined-only)))))
234 ;;       (cond (ret
235 ;;              (chise-turtle-format-ccs-code-point ccs ret)
236 ;;              )
237 ;;             ((and (setq ccs (car (split-char object)))
238 ;;                   (setq ret (encode-char object ccs)))
239 ;;              (chise-turtle-format-ccs-code-point ccs ret)
240 ;;              )
241 ;;             (t
242 ;;              (format (if est-hide-cgi-mode
243 ;;                          "system-char-id=0x%X"
244 ;;                        "system-char-id:0x%X")
245 ;;                      (encode-char object 'system-char-id))
246 ;;              )))))
247
248 (defun isd-turtle-format-component (component separator level prefix)
249   (cond ((characterp component)
250          (format "%s %c # %c"
251                  (chise-turtle-encode-char component)
252                  separator
253                  component)
254          )
255         ((consp component)
256          (let ((ret (find-char component)))
257            (cond (ret
258                   (format "%s %c # %c"
259                           (chise-turtle-encode-char ret) separator ret))
260                  ((setq ret (assq 'ideographic-structure component))
261                   (if (eq separator ?\;)
262                       (format "%s ;"
263                               (isd-turtle-format-char nil nil (cdr ret) (1+ level)
264                                                       prefix))
265                     (isd-turtle-format-char nil nil (cdr ret) (1+ level)
266                                             prefix))))))))
267
268 (defun isd-turtle-format-char (ccs code-point &optional ids-list level
269                                    prefix without-head-char)
270   (unless level
271     (setq level 0))
272   (unless prefix
273     (setq prefix ""))
274   (let ((indent (make-string (* level 4) ?\ ))
275         char
276         idc idc-str
277         p1 p2 p3
278         c1 c2 c3
279         ret)
280     (unless ids-list
281       (if (and ccs code-point
282                (setq char (decode-char ccs code-point)))
283           (setq ids-list (get-char-attribute char 'ideographic-structure))))
284     (setq idc (car ids-list))
285     (setq c1 (nth 1 ids-list)
286           c2 (nth 2 ids-list)
287           c3 (nth 3 ids-list))
288     (if (char-ref-p idc)
289         (setq idc (plist-get idc :char)))
290     (if (and (consp idc)
291              (setq ret (find-char idc)))
292         (setq idc ret))
293     (if (and (consp c1)
294              (setq ret (find-char c1)))
295         (setq c1 ret))
296     (if (and (consp c2)
297              (setq ret (find-char c2)))
298         (setq c2 ret))
299     (if (and (consp c3)
300              (setq ret (find-char c3)))
301         (setq c3 ret))
302     (cond
303      ((eq idc ?\u2FF0) ; ⿰
304       (setq p1 'left
305             p2 'right)
306       )
307      ((eq idc ?⿱)
308       (setq p1 'above
309             p2 'below)
310       )
311      ((eq idc ?⿲)
312       (setq p1 'left
313             p2 'middle
314             p3 'right)
315       )
316      ((eq idc ?⿳)
317       (setq p1 'above
318             p2 'middle
319             p3 'below)
320       )
321      ((memq idc '(?⿴ ?⿵ ?⿶ ?⿷ ?⿸ ?⿹ ?⿺))
322       (setq p1 'surround
323             p2 'filling)
324       )
325      ((eq idc ?⿻)
326       (setq p1 'underlying
327             p2 'overlaying)
328       )
329      ((and idc (eq (encode-char idc '=ucs-itaiji-001) #x2FF6))
330       (setq idc-str "SLR")
331       (setq p1 'surround
332             p2 'filling)
333       )
334      ((and idc (eq (encode-char idc '=ucs-var-001) #x2FF0))
335       (setq idc-str "⿰・SLR")
336       (setq p1 'left
337             p2 'right)
338       )
339      ((and idc (eq (encode-char idc '=>iwds-1) 307))
340       (setq idc-str "⿰・⿺")
341       (setq p1 'left
342             p2 'right)
343       )
344      ((and idc (eq (encode-char idc '=>iwds-1) 305))
345       (setq idc-str "⿱・⿸")
346       (setq p1 'above
347             p2 'below)
348       )
349      ((and idc (eq (encode-char idc '=>ucs@component) #x2FF5))
350       (setq idc-str "⿱・⿵")
351       (setq p1 'above
352             p2 'below)
353       )
354      )
355     (cond
356      (p3
357       (format "%s
358 %s    %s:structure [ a idc:%s ;
359 %s        %s:%-8s %s
360 %s        %s:%-8s %s
361 %s        %s:%-8s %s
362 %s    ]%s"
363               (if without-head-char
364                   ""
365                 (if (and ccs code-point)
366                     (format "%s   # %c"
367                             (chise-turtle-format-ccs-code-point ccs code-point)
368                             char)
369                   "["))
370               indent prefix (or idc-str (char-to-string idc))
371               indent prefix p1 (isd-turtle-format-component c1 ?\; (1+ level) prefix)
372               indent prefix p2 (isd-turtle-format-component c2 ?\; (1+ level) prefix)
373               indent prefix p3 (isd-turtle-format-component c3 ?\  (1+ level) prefix)
374               indent
375               (if without-head-char
376                   ""
377                 (if (null char)
378                     (format "\n%s]"
379                             indent)
380                   "")))
381       )
382      (idc
383       (format "%s
384 %s    %s:structure [ a idc:%s ;
385 %s        %s:%-8s %s
386 %s        %s:%-8s %s
387 %s    ]%s"
388               (if without-head-char
389                   ""
390                 (if (and ccs code-point)
391                     (format "%s   # %c"
392                             (chise-turtle-format-ccs-code-point ccs code-point)
393                             char)
394                   "["))
395               indent prefix (or idc-str (char-to-string idc))
396               indent prefix p1 (isd-turtle-format-component c1 ?\; (1+ level) prefix)
397               indent prefix p2 (isd-turtle-format-component c2 ?\  (1+ level) prefix)
398               indent
399               (if without-head-char
400                   ""
401                 (if (null char)
402                     (format "\n%s]"
403                             indent)
404                   "")))))
405     ))
406
407 (defun isd-turtle-insert-char (ccs code-point)
408   (let ((ret (isd-turtle-format-char ccs code-point)))
409     (when ret
410       (insert ret)
411       (insert " .\n"))))
412
413 (defun isd-turtle-insert-ccs-ranges (ccs &rest ranges)
414   (let (range code max-code)
415     (while ranges
416       (setq range (car ranges))
417       (cond ((consp range)
418              (setq code (car range)
419                    max-code (cdr range))
420              (while (<= code max-code)
421                (isd-turtle-insert-char ccs code)
422                (setq code (1+ code)))
423              )
424             ((integerp range)
425              (isd-turtle-insert-char ccs range)
426              )
427             (t (error 'wrong-type-argument range)))
428       (setq ranges (cdr ranges)))))
429
430 (defun isd-turtle-dump-range (file path func &rest args)
431   (with-temp-buffer
432     (let ((coding-system-for-write 'utf-8-mcs-er)
433           ;; isd-turtle-ccs-list
434           chise-turtle-ccs-prefix-alist)
435       (if (file-directory-p path)
436           (setq path (expand-file-name file path)))
437       (apply func args)
438       (goto-char (point-min))
439       ;; (dolist (ccs (sort isd-turtle-ccs-list
440       ;;                    #'char-attribute-name<))
441       ;;   (insert (format "@prefix %s: <%s%s=> .\n"
442       ;;                   (isd-turtle-uri-encode-feature-name ccs)
443       ;;                   "http://www.chise.org/est/view/character/"
444       ;;                   (www-uri-encode-feature-name ccs))))
445       (dolist (cell (sort chise-turtle-ccs-prefix-alist
446                           (lambda (a b)
447                             (char-attribute-name< (cdr a)(cdr b)))))
448         (insert (format "@prefix %s: <%s/%s=> .\n"
449                         (car cell)
450                         "http://www.chise.org/est/view/character"
451                         (www-uri-encode-feature-name (cdr cell)))))
452       (insert "\n")
453       (goto-char (point-min))
454       (insert "# -*- coding: utf-8-mcs-er -*-\n")
455       (insert "@prefix : <http://rdf.chise.org/rdf/property/character/isd/> .
456 @prefix idc: <http://rdf.chise.org/rdf/type/character/idc/> .\n")
457       (write-region (point-min)(point-max) path))))
458
459 ;;;###autoload
460 (defun isd-turtle-dump-ucs-basic (filename)
461   (interactive "Fdump ISD-UCS-Basic : ")
462   (isd-turtle-dump-range "ISD-UCS-Basic.ttl" filename
463                          #'isd-turtle-insert-ccs-ranges
464                          '=ucs '(#x4E00 . #x9FA5)))
465
466 ;;;###autoload
467 (defun isd-turtle-dump-ucs-ext-a (filename)
468   (interactive "Fdump ISD-UCS-Ext-A : ")
469   (isd-turtle-dump-range "ISD-UCS-Ext-A.ttl" filename
470                          #'isd-turtle-insert-ccs-ranges
471                          '=ucs '(#x3400 . #x4DB5) #xFA1F #xFA23))
472
473 ;;;###autoload
474 (defun isd-turtle-dump-ucs-ext-b-1 (filename)
475   (interactive "Fdump IDS-UCS-Ext-B-1 : ")
476   (isd-turtle-dump-range "ISD-UCS-Ext-B-1.ttl" filename
477                          #'isd-turtle-insert-ccs-ranges
478                          'ucs '(#x20000 . #x21FFF)))
479
480 ;;;###autoload
481 (defun isd-turtle-dump-ucs-ext-b-2 (filename)
482   (interactive "Fdump IDS-UCS-Ext-B-2 : ")
483   (isd-turtle-dump-range "ISD-UCS-Ext-B-2.ttl" filename
484                          #'isd-turtle-insert-ccs-ranges
485                          'ucs '(#x22000 . #x23FFF)))
486
487 ;;;###autoload
488 (defun isd-turtle-dump-ucs-ext-b-3 (filename)
489   (interactive "Fdump IDS-UCS-Ext-B-3 : ")
490   (isd-turtle-dump-range "ISD-UCS-Ext-B-3.ttl" filename
491                          #'isd-turtle-insert-ccs-ranges
492                          'ucs '(#x24000 . #x25FFF)))
493
494 ;;;###autoload
495 (defun isd-turtle-dump-ucs-ext-b-4 (filename)
496   (interactive "Fdump IDS-UCS-Ext-B-4 : ")
497   (isd-turtle-dump-range "ISD-UCS-Ext-B-4.ttl" filename
498                          #'isd-turtle-insert-ccs-ranges
499                          'ucs '(#x26000 . #x27FFF)))
500
501 ;;;###autoload
502 (defun isd-turtle-dump-ucs-ext-b-5 (filename)
503   (interactive "Fdump IDS-UCS-Ext-B-5 : ")
504   (isd-turtle-dump-range "ISD-UCS-Ext-B-5.ttl" filename
505                          #'isd-turtle-insert-ccs-ranges
506                          'ucs '(#x28000 . #x29FFF)))
507
508 ;;;###autoload
509 (defun isd-turtle-dump-ucs-ext-b-6 (filename)
510   (interactive "Fdump IDS-UCS-Ext-B-6 : ")
511   (isd-turtle-dump-range "ISD-UCS-Ext-B-6.ttl" filename
512                          #'isd-turtle-insert-ccs-ranges
513                          'ucs '(#x2A000 . #x2A6D6)))
514
515 ;;;###autoload
516 (defun isd-turtle-dump-ucs-ext-c (filename)
517   (interactive "Fdump IDS-UCS-Ext-C : ")
518   (isd-turtle-dump-range "ISD-UCS-Ext-C.ttl" filename
519                          #'isd-turtle-insert-ccs-ranges
520                          'ucs '(#x2A700 . #x2B734)))
521
522 ;;;###autoload
523 (defun isd-turtle-dump-ucs-ext-d (filename)
524   (interactive "Fdump IDS-UCS-Ext-D : ")
525   (isd-turtle-dump-range "ISD-UCS-Ext-D.ttl" filename
526                          #'isd-turtle-insert-ccs-ranges
527                          'ucs '(#x2B740 . #x2B81D)))
528
529 ;;;###autoload
530 (defun isd-turtle-dump-ucs-ext-e (filename)
531   (interactive "Fdump IDS-UCS-Ext-E : ")
532   (isd-turtle-dump-range "ISD-UCS-Ext-E.ttl" filename
533                          #'isd-turtle-insert-ccs-ranges
534                          'ucs '(#x2B820 . #x2CEA1)))
535
536 ;;;###autoload
537 (defun isd-turtle-dump-mj-0 (filename)
538   (interactive "Fdump ISD-MJ-0 : ")
539   (isd-turtle-dump-range "ISD-MJ-0.ttl" filename
540                          #'isd-turtle-insert-ccs-ranges
541                          '=mj '(1 . 9999)))
542
543 ;;;###autoload
544 (defun isd-turtle-dump-mj-1 (filename)
545   (interactive "Fdump ISD-MJ-1 : ")
546   (isd-turtle-dump-range "ISD-MJ-1.ttl" filename
547                          #'isd-turtle-insert-ccs-ranges
548                          '=mj '(10000 . 19999)))
549
550 ;;;###autoload
551 (defun isd-turtle-dump-mj-2 (filename)
552   (interactive "Fdump ISD-MJ-2 : ")
553   (isd-turtle-dump-range "ISD-MJ-2.ttl" filename
554                          #'isd-turtle-insert-ccs-ranges
555                          '=mj '(20000 . 29999)))
556
557 ;;;###autoload
558 (defun isd-turtle-dump-mj-3 (filename)
559   (interactive "Fdump ISD-MJ-3 : ")
560   (isd-turtle-dump-range "ISD-MJ-3.ttl" filename
561                          #'isd-turtle-insert-ccs-ranges
562                          '=mj '(30000 . 39999)))
563
564 ;;;###autoload
565 (defun isd-turtle-dump-mj-4 (filename)
566   (interactive "Fdump ISD-MJ-4 : ")
567   (isd-turtle-dump-range "ISD-MJ-4.ttl" filename
568                          #'isd-turtle-insert-ccs-ranges
569                          '=mj '(40000 . 49999)))
570
571 ;;;###autoload
572 (defun isd-turtle-dump-mj-5 (filename)
573   (interactive "Fdump ISD-MJ-5 : ")
574   (isd-turtle-dump-range "ISD-MJ-5.ttl" filename
575                          #'isd-turtle-insert-ccs-ranges
576                          '=mj '(50000 . 59999)))
577
578 ;;;###autoload
579 (defun isd-turtle-dump-mj-6 (filename)
580   (interactive "Fdump ISD-MJ-6 : ")
581   (isd-turtle-dump-range "ISD-MJ-6.ttl" filename
582                          #'isd-turtle-insert-ccs-ranges
583                          '=mj '(60000 . 69999)))
584
585 ;;;###autoload
586 (defun isd-turtle-dump-all (directory)
587   (interactive "DISD directory : ")
588   (isd-turtle-dump-ucs-basic directory)
589   (isd-turtle-dump-ucs-ext-a directory)
590   (isd-turtle-dump-ucs-ext-b-1 directory)
591   (isd-turtle-dump-ucs-ext-b-2 directory)
592   (isd-turtle-dump-ucs-ext-b-3 directory)
593   (isd-turtle-dump-ucs-ext-b-4 directory)
594   (isd-turtle-dump-ucs-ext-b-5 directory)
595   (isd-turtle-dump-ucs-ext-b-6 directory)
596   (isd-turtle-dump-ucs-ext-c directory)
597   (isd-turtle-dump-ucs-ext-d directory)
598   (isd-turtle-dump-ucs-ext-e directory)
599   (isd-turtle-dump-mj-0 directory)
600   (isd-turtle-dump-mj-1 directory)
601   (isd-turtle-dump-mj-2 directory)
602   (isd-turtle-dump-mj-3 directory)
603   (isd-turtle-dump-mj-4 directory)
604   (isd-turtle-dump-mj-5 directory)
605   (isd-turtle-dump-mj-6 directory)
606   )
607
608
609 ;;; @ End.
610 ;;;
611
612 (provide 'isd-turtle)
613
614 ;;; isd-turtle.el ends here