ããŒã1ããŒã2èšäºã®ã¿ã€ãã«ã«ãã
ãLivingããšããèšèã¯ããããã®èšäºã®ã¡ã«ããºã ãã³ãŒããããã³ããŒã¿ãã¯ãŒãã³ã°ãã©ããã§äœ¿çšãããŠããããšãæå³ããŸãã
ããŒã¿ããŒã¹ãéçºããããã®ãœãªã¥ãŒã·ã§ã³ïŒæ§é ãã¡ã«ããºã ïŒã®ããã€ãã«èå³ããããããããŸããã
ãã®å³ã¯ããã£ã¬ã¯ããªã®
ã°ããŒãã«ã«ãŒã«ã説æããã³ãŒãã瀺ããŠããŸãã
C
R UDã¡ãœããã¯ãäœæ¥äžã«åžžã«ãããã®ã«ãŒã«ãåç
§ããŠãå®è¡ããå¿
èŠãããã¢ã¯ã·ã§ã³ãæ£ç¢ºã«èŠã€ããŸãã
以åãç§ãã¡ã¯æ¬¡ã®ã°ããŒãã«ãæã£ãŠãããšããäºå®ã«èœã¡çããŸããã
ã°ããŒãã«ã衚瀺^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62086,66625" ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62086,66625" ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 ^NameDictionaryElement(1,"partUri",0)="akp" ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(1,"ru",0)="" ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(2,"partUri",0)="meh" ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(2,"ru",0)="" ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62086,66625" ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1
ã°ããŒãã«ã®äœæCtrl + C / V set ^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62086,66625" set ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 set ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62086,66625" set ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 set ^NameDictionaryElement(1,"partUri",0)="akp" set ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(1,"ru",0)="" set ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(2,"partUri",0)="meh" set ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(2,"ru",0)="" set ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62086,66625" set ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 set ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 set ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1
ã°ããŒãã«ãã£ã¬ã¯ããªã«ãŒã«
ãã¹ãŠã®ãªã³ãããžãŒãšãã£ã¬ã¯ããªã®ã¿ã€ãã®èª¬æã¯ããã®ã°ããŒãã«ã«ä¿åãããŸãã ç¹å®ã®ããããã£ãç¹æ§ãããŸããŸãªã¿ã€ãã®ã€ã³ããã¯ã¹ã瀺ãããŠããŸãã ããŒã¿æ€èšŒé¢æ°ã®åŒã³åºããç»é²ãããŸãã å
¥ãåæ§é ã®éå±€ãæ§ç¯ãããŸãã åŸã
ã«è©±ãããäŸãæããŠèª¬æããŸãã æéãçµã€ã«ã€ããŠãã°ããŒãã«ã«ãŒã«ã倧ãããªããŸãã ãããžã§ã¯ãã®åç¶äžã«ãåãããšãèµ·ãããŸããæ°ããã¿ã€ãã®ãã£ã¬ã¯ããªã衚瀺ãããŸãã æ°ããããããã£ã远å ãããŸããã ãµãŒãã¹ããŒã¿åŠçæ©èœã¯å€åããŠããŸãã æ°ããæ©èœãããã°ã©ã ãããŠããŸãã ãã®ã°ããŒãã«ã®äž»ãªç®çã¯ã
åç
§ããŒã¿ã®åŠçã®ãã¹ãŠã®è©³çްãä¿åããããšã§ãã
^ RuleDictionaryã«ãŒã«
ã°ããŒãã«ã®æ§é ãèããŠã¿ãŸããã-ã€ã³ããã¯ã¹ã®æå³ã¯æ¬¡ã®ãšããã§ãã
- ãªã³ãããžãŒ
- ãã£ã¬ã¯ããªã®ã¿ã€ã
- CRUDã¡ãœããã®1ã€ã®åå
- å®è¡ãããŠããã¢ã¯ã·ã§ã³ã®ã¿ã€ãã®è¡šç€º
- ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹
3çªç®ããå§ãŸãã«ãŒã«ã®ã°ããŒãã«ã€ã³ããã¯ã¹ã¯ãä»ã®å Žåã«ã¯äœãä»ã®ãã®ãæå³ããå¯èœæ§ããããšããäºå®ã«æ³šæãä¿ããŸãïŒäŸãšããŠããã«åºããããå Žåã詳现ã«èª¬æããŸãïŒã
ãªã³ãããžãŒã®ãã¹ãŠã®ã«ãŒã«ãåºåããŸã
SimpleOntologyãã³ãã³ããå®è¡ããŸãïŒ
zwrite ^ RuleDictionaryïŒ "SimpleOntology"ïŒãMONTOLOGYãã¯åå空éã®ååã§ããããšãæãåºããŠãã ããã
MONTOLOGY>zwrite ^RuleDictionary("SimpleOntology") ^RuleDictionary("SimpleOntology","SimpleType","create","check",10)="do clearPunctuationAndControlCharAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","create","check",20)="do checkUniqueNameElementAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","update","check",10)="do clearPunctuationAndControlCharAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","update","check",20)="do checkUniqueNameElementAllLang()" MONTOLOGY>
ã°ããŒãã«ã®äœæCtrl + C / V set ^RuleDictionary("SimpleOntology","SimpleType","create","check",10)="do clearPunctuationAndControlCharAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","create","check",20)="do checkUniqueNameElementAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","update","check",10)="do clearPunctuationAndControlCharAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","update","check",20)="do checkUniqueNameElementAllLang()"
ç§ãã¡ãæšè«ããããšã詳ããèŠãŠã¿ãŸãããã ã芧ã®ãšããã
SimpleOntologyãªã³ãããžãŒã«ã¯ã1ã€ã®ã¿ã€ãã®
SimpleTypeåç
§ããããŸãã ãã®ãã£ã¬ã¯ããªã«ã¯è¿œå ã®ãã©ã¡ãŒã¿ãŒã¯ãããŸããïŒããã©ã«ãã®ããããã£ãé€ãïŒã
createã¡ãœããã«ã¯ã2ã€ã®ååŠçæ©èœãšããŒã¿æ€èšŒæ©èœãå®çŸ©ãããŠã
ãŸã ã
æŽæ°ã¡ãœããã«ãåãæ©èœãå®çŸ©ãããŠããŸãã ãããã¯ã°ããŒãã«å€ã«ä¿åãããŸãã ã¢ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ïŒ10ã20ïŒã¯ãå¿
ãããæŽæ°ã§ããå¿
èŠã¯ãããŸããã å®è¡ã®é åºã¯å°ãããã®ãã倧ãããã®ãžãšé²ã¿ãŸãã
SimpleOntologyããã³
SimpleTypeã®ã«ãŒã«ã¯ãããã©ã«ãã§ãã¹ãŠã®åçŽãªãã£ã¬ã¯ããªã«äœ¿çšãããæšæºã®ããããã£ã®ã¿ãååšããŸãïŒååãæŽæ°æ¥ãããã³ãŠãŒã¶ãŒ
uid ã
äœæãã
ãããã©ã®ããã«æ©èœããããçè§£ããã«ã¯ã
createã¡ãœãããæ€èšã
ãŠãã ãã ã ç°¡åã«ããããã«ãããã¯ããã©ã³ã¶ã¯ã·ã§ã³åŠçãããã³ããŸããŸãªã¿ã€ãã®ãšã©ãŒãæžãããŸãã ãã®åŸãããã«æ»ããŸãã
createïŒïŒã¡ãœããã«ãã©ã¡ãŒã¿ãŒãæç€ºçã«æž¡ãããªãããšãããããŸãã ã¡ãœãããåŒã³åºãããåã«å®çŸ©ããå¿
èŠãããããŒã«ã«å€æ°
mapã«æžã蟌ãŸããããšãåæãšããŠããŸãã
map倿°ã§ã¯ã
mapïŒ "in"ïŒãš
mapïŒ "out"ïŒã® 2ã€ã®ã¡ã€ã³ãã©ã³ãã䜿çšããŸãã ããŒã«ã«å€æ°ã¯ããã£ã¹ã¯ã«ä¿åããããæå€§ãµã€ãºã«å¶éããããšããç¹ã§ã®ã¿ã°ããŒãã«å€æ°ãšç°ãªããŸãã ãã以å€ã®å Žåãã°ããŒãã«ãšåãã€ã³ããã¯ã¹ãä»ããããŸãã 颿°ã«ãã©ã¡ãŒã¿ãŒãšããŠæž¡ãããšãã§ããŸãïŒ
$ orderïŒïŒ ã
$ qsubscriptïŒïŒ ã
$ qlengthïŒïŒ ã
$ nameïŒïŒãªã©ã å€ãã®å€æ°ãçæãããã¹ã³ãŒããç£èŠããªãããã«ã¯ãåäžã®å€æ°
new tã宣èšããã ãã§ååã§ãã 倿°
tã¯ã
createã¡ãœããå
ã®ã©ãããã§ãããŸããããããåŒã³åºãããä»ã®ãã¹ãŠã®ããã°ã©ã ãšã«ãŒãã³å
ã§ã䜿çšã§ããŸãã
ããã倿°ã«ã€ããŠãåãããšãèšããŸãã
createäžã«åŒã³åºããã颿°å
ã§
new tãæ€åºãããå Žåããã®é¢æ°ã¯
createã¡ãœããå
ã§å®£èšããã倿°
tã«ã¢ã¯ã»ã¹ã§ããŸããã ã¹ã³ãŒãå
ïŒå€æ°ã¹ã¿ãã¯ã®ã©ããïŒã«ãã倿°
tã§åäœããŸãã
ãããããç§ã説æããCachéã®å€æ°ã®ç¯å²ã®åçã¯ååã«æç¢ºã§ã¯ãããŸãããã³ã¡ã³ãã§è³ªåããŠãã ããã確èªãã
次ã«ã
tïŒãerrãïŒã«ã颿°
$$ checkïŒãcreateãïŒã®çµæãæžã蟌ã¿
ãŸã ã ãã¹ãŠã®ãã§ãã¯ãæåããå Žåã颿°ã¯
0ãè¿ã
ãŸã ããã以å€ã®å Žåãçµæã¯è² ã«ãªããŸãã
$$ checkïŒïŒé¢æ°ãã©ã®ããã«æ©èœããããããåŒã³åºãããã¡ãœãããèŠãŠã¿ãŸãããã ãããã®èšäºã§ã¯ã
ã¡ãœããã颿°ããµãã«ãŒãã³-åèªã¯å矩èªã§ããããšã«æ³šæããŠãã ãã
ã ãµãŒãã¹ã¯ãŒã
private-ã¡ãœããã¯ã
Dictionaryããã°ã©ã å
ã§ã®ã¿åŒã³åºãããšãã§ããããšãæå³ããŸãã
checkïŒïŒã¡ãœããã®æåã«ãçŸåšã®ã¢ã¯ã·ã§ã³ã«å¿
èŠãªãã§ãã¯æ©èœãå®è¡ããŸãã ç§ãã¡ã®å Žåãããã¯
checkCreateïŒïŒé¢æ°ã§ãã
checkUpdateïŒïŒããã³
checkDeleteïŒïŒé¢æ°ã®ã¹ã¿ãã¯ã³ãŒãå
ã«ãååšããããšã«æ³šæããŠãã ãã-ããã¯ã
Dictionaryããã°ã©ã ãèªåã§ã³ããŒããŠã³ã³ãã€ã«ããå Žåã«å¿
èŠã§ãã
checkCreateïŒïŒã«ãŒãã³ã¯ããªã³ãããžãŒãã©ã¡ãŒã¿ãŒã®ååšãšå
¥åãããå
ã®ãã£ã¬ã¯ããªã¿ã€ãããã§ãã¯ããŸãã å
éš
checkNamesïŒïŒ -åèšèªã®ååã®ååšããã§ãã¯ãããå°ãªããšã1ã€ã®èšèªãååšããããã®åææ¡ä»¶ããããŸãïŒã·ã¹ãã ã§ã¯ãååãªãã§ãã£ã¬ã¯ããªèŠçŽ ãäœæããããšã¯ã§ããŸããïŒã åãæ¹æ³ã§ãäœæããããã£ã¬ã¯ããªèŠçŽ ã®èå¥åã¯ãå®å
šãªé¢æ°
$ incrementïŒïŒã«ãã£ãŠçæãã
ãŸã ã ãã£ã¬ã¯ããªèŠçŽ ã®çŸåšã®æå€§èå¥åïŒãªã³ãããžãŒãšã¿ã€ãã®å ŽåïŒã¯
^ DictionaryïŒ "MaxID"ïŒã«ä¿åãããŸãã
ãã¹ãŠã®èå¥åã¯ãç°ãªããã£ã¬ã¯ããªããªã³ãããžãŒå
ã§ãäžæã§ã
checkCreateïŒïŒã¡ãœããã®æåŸã§ã
tïŒ "ãã¹"ïŒå€æ°ã«ãäœæããããã£ã¬ã¯ããªèŠçŽ ãæ ŒçŽãããã°ããŒãã«ãã©ã³ã
^ Dictionaryã®æ£èŠåãæžã蟌ã¿ãŸãã
checkNamesïŒïŒã¡ãœããã®çšèª
merge tïŒ "nameList"ïŒ= mapïŒ "in"ã "nameList"ïŒã«æ³šæããŠãã ããã
mergeã³ãã³ãã¯ãããŒã«ã«ãŸãã¯ã°ããŒãã«ãšããŠå®çŸ©ãããŠãããã©ããã«ããããããã€ã³ããã¯ã¹ä»ã倿°ã®ãµãããªãŒå
šäœãçžäºã«ã³ããŒããŸãã æ¬ããåãããå®çŸ©ïŒ Wolfgang Kirstenã ãã€ã±ã«ã»ã¢ã€ãªã³ãžã£ãŒã ããã£ã¢ã¹ã»ã¯ãã ãã«ã³ãã«ãã»ã«ãŒãªã°ã ãã¹ããªã¬ãŒã·ã§ãã«DBMSCaché5.ãªããžã§ã¯ãæåã®ã¢ããªã±ãŒã·ã§ã³éçºã 第äºçã ã¢ã¹ã¯ã¯ åºç瀟BINOM ã 2005. A.ãã¹ãããKãã¢ãªã¹ããã«ãã翻蚳ã 116ããŒãž
ãããã£ãŠã
checkCreateïŒïŒã¡ãœãããå®è¡ãããšã次ã®éèŠãªããŒã¿ãããŒã«ã«å€æ°
tã«å«ãŸããŸãã
- tïŒããªã³ãããžãŒãïŒ -ãã£ã¬ã¯ããªèŠçŽ ã®ãªã³ãããžãŒ
- tïŒ "type"ïŒ -åç
§ã¿ã€ã
- tïŒ "nameList"ïŒ -æå®ããããã¹ãŠã®èšèªã®åå
- tïŒ "id"ïŒ -èå¥å
- tïŒ "ãã¹"ïŒ -ã°ããŒãã«ãã©ã³ãã®æšæºå^èŸæž ãèŠçŽ ã«é¢ããæ
å ±ãä¿åãããå Žæ
checkïŒïŒé¢æ°ãå®è¡ãç¶ããŸãã
checkCreateïŒïŒãå®è¡ãããåŸããŠãŒã¶ãŒ
uid ïŒ
888-ããã©ã«ãïŒãååŸããŸãã æ¬¡ã«ã倿°
tïŒ "map"ïŒã«ããã£ã¬ã¯ããªãã¢ã¯ã·ã§ã³ãªã©ã®ãªã³ãããžãŒã«å¿
èŠãªæ€èšŒé¢æ°ãå«ãã°ããŒãã«ã«ãŒã«ã®ãã©ã³ãã®æ£èŠåãæžã蟌ã¿ãŸãã çŸåšããªã³ãããžãŒãšããã©ã«ãã¿ã€ãã®ã«ãŒã«ã®ã¿ã
^ RuleDictionary globalã§å®çŸ©ãããŠããããã
^ RuleDictionaryãã©ã³ãã®æšæºãã¥ãŒ
ïŒ "SimpleOntology"ã "SimpleType"ã "create"ã "check"ã¯
tïŒ "map"ïŒã«èšè¿°ãã
ãŸãã ïŒè¡ã詳现ã«åæããŠã¿ãŸãããã
set check("i")=$order(@t("map")@(check("i")))
@ã¯éæ¥æŒç®åã§ããããšãæãåºãããŠãã ããã åæå€ã¯
checkïŒ "i"ïŒ =
""ã§ãã ãããã£ãŠãã«ãŒãã®éå§æã«ã¯ããã®è¡ã¯æ¬¡ã®è¡ãšåçã§ãã
set check("i")=$order(^RuleDictionary("SimpleOntology","SimpleType","create","check",""))
ã€ãŸãã
ãã§ãã¯ïŒãiãïŒã¯10ã«ãªããŸãã
鿥æŒç®åã®æ§æã§çåãçãã
å Žåã¯ãã³ã¡ã³ãã§è³ªåããŸããæ¬¡ã«èŠãŠã¿ãŸãããïŒ
xecute $get(@t("map")@(check("i")))
xecuteã³ãã³ã㯠ãæååãåäžè¡ã®ãµãã«ãŒãã³ãšããŠå®è¡ããŸããããŒãž115ã åãæ¬ã
ã€ãŸããã«ãŒãã®æåã«
^ RuleDictionaryïŒ "SimpleOntology"ã "SimpleType"ã "create"ã "check"ã10ïŒã§èšè¿°ãããŠããããšãè¡ã
ãŸã ã ãããŠããïŒ
do clearPunctuationAndControlCharAllLang()
ãã®ãµãã«ãŒãã³ãå®è¡ãããšãæå®ããããã¹ãŠã®èšèªã®ååããå¥èªç¹ãšè£å©æåãã¹ããŒãããŸãã
ã«ãŒãã®æ¬¡ã®å埩ã§ã¯ãå€
^ RuleDictionaryïŒ "SimpleOntology"ã "SimpleType"ã "create"ã "check"ã20ïŒãå®è¡ããŸãã ãããŠããïŒ
do checkUniqueNameElementAllLang()
ãã®ã«ãŒãã³ã¯ãæå®ããããã¹ãŠã®èšèªã®ååã®äžææ§ãæ€èšŒããŸãã å°ãªããšã1ã€ã®ååãäžæã§ãªãå Žåã
checkïŒïŒã¡ãœããã§å®çŸ©ããã
ãã§ãã¯å€æ°ã«ãšã©ãŒãæžã蟌ãŸããŸãã
ãµãã«ãŒãã³ã³ãŒãïŒ #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlCharAllLang() set t("lang")="" for { #; set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #; set t("nameList",t("lang"))=$$clearPunctuationAndControlChar($get(t("nameList",t("lang")),"")) } quit #; -------------------------------------------------------------------------------------------------- checkUniqueNameElementAllLang() set t("lang")="" for { #; set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #; set t("name")=$get(t("nameList",t("lang")),"") #; check (0 - ) set check=$$checkUniqueNameElement() #; - quit:check<0 } quit #; -------------------------------------------------------------------------------------------------- #; . #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlChar(str) new t #; t("str") set t("str")="" #; for t("i")=1:1:$length(str) { #; set t("ch")=$extract(str,t("i")) if '((t("ch")?1P)||(t("ch")?1C)) { #; set t("str")=t("str")_t("ch") } } #; quit t("str") #; -------------------------------------------------------------------------------------------------- #; -------------------------------------------------------------------------------------------------- #; , , . #; , . #; -------------------------------------------------------------------------------------------------- checkUniqueNameElement() #; set t("q")=0 set t("uniqueId")="" for { #; , #; , , ( ) set t("uniqueId")=$order(^IndexDictionary(t("ontology"),t("type"),"name",t("lang"),$zconvert(t("name"),"l"),t("uniqueId"))) #; quit:t("uniqueId")="" #; , #; update if (t("uniqueId")'=t("id")) { #; , set t("q")=-1 quit } } #; quit t("q") #; --------------------------------------------------------------------------------------------------
ã«ãŒãã³ã¯æ°ãã颿°ã䜿çšããŸãïŒ
$ zconvertïŒïŒ ã
$ lengthïŒïŒ ã
$ extractïŒïŒ ; ãã³ãã¬ãŒããã§ãã¯æŒç®åãšåæ§ã«ãèšå·
ãïŒã ã æååå
ã®å¥èªç¹ãšãµãŒãã¹æåã®ååšã®ç¢ºèªã¯ãçµã¿èŸŒã¿ã®Kashev颿°ã䜿çšããŠå¥ã®æ¹æ³ã§å®è¡ã§ããŸãããç§ã®ãããžã§ã¯ãã§ã¯æåããšã®åæã®æ¹æ³ã䜿çšããŠããŸãã
ãããã£ãŠã
createïŒïŒã¡ãœããã¯æ¬¡ã®è¡ãæ£åžžã«å®äºããŸããïŒ
set tïŒ "err"ïŒ= $$ checkïŒ "create"ïŒ ãããã³
t倿°ã«ã¯éèŠãªãµãŒãã¹æ
å ±ãå«ãŸããŠããŸãã
setProperty
次ã«ã
setPropertyïŒïŒé¢æ°ã䜿çšããŠã
ãUpdateTimeãããã³
ãuidãããããã£ãèšå®ããŸãã
$ horologã¯ãCaché圢åŒã®çŸåšã®æ¥ä»ãšæå»ã§ãã ãUpdateTimeãããããã£ã«ã¯ã€ã³ããã¯ã¹ãä»ããããŠããªãããšã«æ³šæããŠãã ããïŒæ¥µç«¯ãªãã©ã¡ãŒã¿ãŒã¯
index =â falseâã§ã ïŒã åãæ¹æ³ã§ãã°ããŒãã«
^ RefsDictionaryãæåã«è¡šç€ºãããŸãã ã€ã³ããã¯ã¹ã®æ§é ã¯åçŽã§ãïŒ
- ã¢ã€ãã ID
- æ£èŠã€ã³ããã¯ã¹ã®ã°ããŒãã«ãã©ã³ãå
ã€ãŸããå¿
èŠãªå ŽåïŒããšãã°ãèŠçŽ ãåé€ãããšãïŒ-ãã®èŠçŽ ã®èšåãå«ããã¹ãŠã®ç°ãªãã€ã³ããã¯ã¹ã»ããããã°ããååŸããŸãã
setName
次ã«ã
setNameïŒïŒé¢æ°ã䜿çšããŠååã®å€ãèšå®ããŸãã
ãã®åŸã
saveOntoAndTypeID颿°ãåŒã³åºããŸãã
ãã®é¢æ°ã¯ããªã³ãããžãŒãšèŠçŽ ã¿ã€ããã°ããŒãã«ãã©ã³ã
^ IndexDictionaryïŒ "ID"ãtïŒ "id"ïŒïŒã«æžã蟌ã¿ãŸãã ããã¯å°æ¥ã®å Žåã«å¿
èŠã§ããããã£ã¬ã¯ããªã®èŠçŽ ã«ãã£ãŠãã©ã®ã¿ã€ããšãªã³ãããžãŒãå±ããŠããããç¥ãå¿
èŠããããŸãã æ¬¡ã«ãåããã©ã³ãã®
saveElementPath颿°ã¯ããã£ã¬ã¯ããªã¢ã€ãã ãžã®ãã¹ãèšé²ããŸãã
ã°ããŒãã«^ RefsDictionaryã®ãã¹ãŠã®ãšã³ããªã«ã¯ãæç€ºçãªããŒã ã¹ããŒã¹åãå«ãŸããŠããããšã«æ³šæããŠãã ãã| "MONTOLOGY" | ã
å°æ¥ãå¥ã®ããŒã ã¹ããŒã¹ãããã®ã°ããŒãã«ã䜿çšããå Žåãåžžã«æ£ãããã«ãã¹ã䜿çšã§ããŸãããã¡ãããDictionaryããã°ã©ã èªäœã®äžã§ãããã«ãã¹ãèšè¿°ããå¿
èŠããããŸãïŒä»ã®åå空éããã¡ãœãããåŒã³åºãå ŽåïŒãç§ã®ãããžã§ã¯ãã§ã¯ãããã¯ãã¯ããä»ããŠå®è£
ãããŠããŸãããç°¡åã«ããããã«ãããã§ã¯ç°¡åãªã³ãŒããæäŸããŸããããã¹ãŠã®èŸæžã³ãŒãïŒ #; -------------------------------------------------------------------------------------------------- #; #; -------------------------------------------------------------------------------------------------- Dictionary #; -------------------------------------------------------------------------------------------------- #; . #; -------------------------------------------------------------------------------------------------- retrieve(id,lang="ru",version=0) quit $get(^NameDictionaryElement(id,lang,version),"") #; -------------------------------------------------------------------------------------------------- #; . #; -------------------------------------------------------------------------------------------------- retrieveListByIndex(ontology,type,index,value,str="",lang="ru") #; , set str=$zconvert(str,"L") set id="" for { #; () set id=$order(^IndexDictionary(ontology,type,index,value,id)) #; , quit:id="" #; set name=$$retrieve(id,lang) #; str if $extract($zconvert(name,"L"),1,$length(str))=str { #; ( ) write id_" "_name,! } } quit #; -------------------------------------------------------------------------------------------------- #; . #; . #; -------------------------------------------------------------------------------------------------- create() #; kill map("out") #; t #; create new t #; set t("err")=$$check("create") #; , if t("err")<0 { quit t("err") } #; "UpdateTime" do setProperty(t("ontology"),t("type"),"UpdateTime",$horolog,t("id"),"false") #; "uid" do setProperty(t("ontology"),t("type"),"uid",t("uid"),t("id"),"true") set t("lang")="" for { #; ( ) set t("lang")=$order(t("nameList",t("lang"))) #; , quit:t("lang")="" #; set t("name")=$get(t("nameList",t("lang"))) #; do setName(t("ontology"),t("type"),t("lang"),t("name"),t("id")) } #; do saveOntoAndTypeID #; do saveElementPath #; set map("out","id")=t("id") #; kill map("in") #; quit t("id") #; -------------------------------------------------------------------------------------------------- #; . #; ^RuleDictionary . #; -------------------------------------------------------------------------------------------------- check(action)private #; check new check #; action set check=$case(action,"create":$$checkCreate(),"update":$$checkUpdate(),"delete":$$checkDelete(),:-1) #; quit:check<0 check #; "uid" set t("uid")=$get(map("in","uid"),888) #; , "check", if $data(^RuleDictionary(t("ontology"),t("type"),action,"check")) { #; t("map") set t("map")=$name(^RuleDictionary(t("ontology"),t("type"),action,"check")) } else { #; t("map") set t("map")=$name(^RuleDictionary("SimpleOntology","SimpleType",action,"check")) } set check("i")="" for { #; set check("i")=$order(@t("map")@(check("i"))) #; , quit:check("i")="" #; xecute $get(@t("map")@(check("i"))) #; , quit:check<0 } #; quit check #; -------------------------------------------------------------------------------------------------- #; . #; id, ontology, type, . #; -------------------------------------------------------------------------------------------------- checkCreate()private #; st("ontology")=$get(map("in","ontology"),"") #; quit:t("ontology")="" -1 #; set t("type")=$get(map("in","type"),"") #; , quit:t("type")="" -1 #; set t("check")=$$checkNames() #; , quit:t("check")<0 t("check") #; set t("id")=$increment(^Dictionary("MaxID")) #; ^Dictionary set t("path")=$name(^Dictionary(t("ontology"),t("type"),t("id"))) #; quit 0 #; -------------------------------------------------------------------------------------------------- checkUpdate() quit 0 #; -------------------------------------------------------------------------------------------------- checkDelete() quit 0 #; -------------------------------------------------------------------------------------------------- #; . #; -------------------------------------------------------------------------------------------------- checkNames()private #; merge t("nameList")=map("in","nameList") #; t("check") #; set t("check")=-1 set t("lang")="" for { #; set t("lang")=$order(t("nameList",t("lang"))) #; , quit:t("lang")="" #; set t("name")=$get(t("nameList",t("lang")),"") #; if t("name")="" { #; t("check") set t("check")=-1 #; quit } else { #; t("check") , set t("check")=0 } } #; quit t("check") #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlCharAllLang() set t("lang")="" for { #; set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #; set t("nameList",t("lang"))=$$clearPunctuationAndControlChar($get(t("nameList",t("lang")),"")) } quit #; -------------------------------------------------------------------------------------------------- checkUniqueNameElementAllLang() set t("lang")="" for { #; set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #; set t("name")=$get(t("nameList",t("lang")),"") #; check (0 - ) set check=$$checkUniqueNameElement() #; - quit:check<0 } quit #; -------------------------------------------------------------------------------------------------- #; . #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlChar(str) new t #; t("str") set t("str")="" #; for t("i")=1:1:$length(str) { #; set t("ch")=$extract(str,t("i")) if '((t("ch")?1P)||(t("ch")?1C)) { #; set t("str")=t("str")_t("ch") } } #; quit t("str") #; -------------------------------------------------------------------------------------------------- #; -------------------------------------------------------------------------------------------------- #; , , . #; , . #; -------------------------------------------------------------------------------------------------- checkUniqueNameElement() #; set t("q")=0 set t("uniqueId")="" for { #; , #; , , ( ) set t("uniqueId")=$order(^IndexDictionary(t("ontology"),t("type"),"name",t("lang"),$zconvert(t("name"),"l"),t("uniqueId"))) #; quit:t("uniqueId")="" #; , #; update if (t("uniqueId")'=t("id")) { #; , set t("q")=-1 quit } } #; quit t("q") #; -------------------------------------------------------------------------------------------------- #; , . #; . #; -------------------------------------------------------------------------------------------------- setProperty(ontology,type,property,value,id,index="true")private #; () set ^Dictionary(ontology,type,id,0,property)=value #; if index="true" { #; set ^IndexDictionary(ontology,type,property,value,id)=1 #; set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,property,value,id)))=1 } quit 0 #; -------------------------------------------------------------------------------------------------- #; , . #; ( ) . #; -------------------------------------------------------------------------------------------------- setName(ontology,type,lang,value,id)private #; set ^NameDictionaryElement(id,lang,0)=value #; / set ^NameDictionaryElement(id,lang,0,"UpdateTime")=$horolog #; set ^IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)=1 #; set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)))=1 quit 0 #; -------------------------------------------------------------------------------------------------- saveOntoAndTypeID set ^IndexDictionary("ID",t("id"),"ontology")=t("ontology") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"ontology")))=1 set ^IndexDictionary("ID",t("id"),"type")=t("type") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"type")))=1 quit #; -------------------------------------------------------------------------------------------------- saveElementPath set ^IndexDictionary("ID",t("id"),"path")=t("path") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"path")))=1 quit #; --------------------------------------------------------------------------------------------------
^ RuleDictionaryã«ãŒã«globalãé€ããã¹ãŠã®ã°ããŒãã«ãåé€ããŸãã MONTOLOGY>kill ^Dictionary,^IndexDictionary,^NameDictionaryElement,^RefsDictionary MONTOLOGY>
ãããŠããã£ã¬ã¯ããªã®æåã®2ã€ã®èŠçŽ ãäœæããŸãã MONTOLOGY>kill map MONTOLOGY>set map("in","ontology")="Vehicle",map("in","type")="TransmissionType" MONTOLOGY>set map("in","nameList","ru")=" ,",map("in","nameList","partUri")="akp" MONTOLOGY>write $$create^Dictionary() 1 MONTOLOGY>kill map MONTOLOGY>set map("in","ontology")="Vehicle",map("in","type")="TransmissionType" MONTOLOGY>set map("in","nameList","ru")="",map("in","nameList","partUri")="meh" MONTOLOGY>write $$create^Dictionary() 2 MONTOLOGY>
ãã¹ãŠã®ã°ããŒãã«ãå°å·ããŸãã MONTOLOGY>zwrite ^Dictionary,^IndexDictionary,^NameDictionaryElement,^RefsDictionary ^Dictionary("MaxID")=2 ^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62948,47015" ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62948,47022" ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 ^IndexDictionary("ID",1,"ontology")="Vehicle" ^IndexDictionary("ID",1,"path")="^Dictionary(""Vehicle"",""TransmissionType"",1)" ^IndexDictionary("ID",1,"type")="TransmissionType" ^IndexDictionary("ID",2,"ontology")="Vehicle" ^IndexDictionary("ID",2,"path")="^Dictionary(""Vehicle"",""TransmissionType"",2)" ^IndexDictionary("ID",2,"type")="TransmissionType" ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 ^NameDictionaryElement(1,"partUri",0)="akp" ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62948,47015" ^NameDictionaryElement(1,"ru",0)="" ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62948,47015" ^NameDictionaryElement(2,"partUri",0)="meh" ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62948,47022" ^NameDictionaryElement(2,"ru",0)="" ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62948,47022" ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""ontology"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""path"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""type"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""ontology"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""path"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""type"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1
ã芧ã®ãšããããããã®ã°ããŒãã«ã¯èšäºã®åé ã«ç€ºãããã®ãšã¯ç°ãªããŸããå€ã¯ãUpdateTimeãã®ã¿ã§ã-仿¥ãããã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã-ãããã£ãŠãæ¥ä»ã¯ææ°ã§ããæ°ãããã©ã³ã^ IndexDictionaryïŒ "ID"ïŒãç»å Žããã°ããŒãã«^ RefsDictionaryã§ãããžã®ããã¯ãªã³ã¯ããããŸããã§ã¯^èŸå
žïŒÂ«MAXID»ïŒåç
§ãµãã·ã¹ãã ã§ç§ãã¡ã®ã¢ã€ãã³ãã£ãã£ãŒã®æå€§ã®èŠçŽ ãä¿ã¡ãŸãããèŸæžããã°ã©ã ã®ã³ãŒãã¯äœæ¥äžã®ãããžã§ã¯ãã§äœ¿çšãããŠããŸãããæç¢ºåãšåçŽåã®ããã«ãããã€ãã®æ§æãèŠéããã³ãã³ãã®å®å
šãªååã䜿çšããŸãããããããã©ããã§ãšã©ãŒãå¿ã³å¯ã£ã-ãã誰ãããããèŠã€ããã-ã³ã¡ã³ãã«æžããŠãã ãããæ¬¡ã®èšäºã§ã¯ããã¹ãæ§é ã«ã€ããŠèª¬æããŸãããã£ãšã³ã³ãã¯ãã«ããããšæããŸãããæž
èŽããããšãããããŸããã
ç§ã¯è³ªåãã³ã¡ã³ããææ¡ãåãã§ããŸãã