source: fmts/trunk/kids/C0X_1_0_0_T9.KID@ 1522

Last change on this file since 1522 was 1522, checked in by George Lilly, 12 years ago

fileman triple store with smart container support

File size: 104.6 KB
Line 
1KIDS Distribution saved on Sep 07, 2012@18:24:21
2smart container support
3**KIDS**:C0X*1.0*0^
4
5**INSTALL NAME**
6C0X*1.0*0
7"BLD",7921,0)
8C0X*1.0*0^^0^3120907^n
9"BLD",7921,4,0)
10^9.64PA^172.201^2
11"BLD",7921,4,172.101,0)
12172.101
13"BLD",7921,4,172.101,222)
14y^y^f^^^^n
15"BLD",7921,4,172.201,0)
16172.201
17"BLD",7921,4,172.201,222)
18y^y^f^^^^n
19"BLD",7921,4,"B",172.101,172.101)
20
21"BLD",7921,4,"B",172.201,172.201)
22
23"BLD",7921,6.3)
248
25"BLD",7921,"KRN",0)
26^9.67PA^779.2^20
27"BLD",7921,"KRN",.4,0)
28.4
29"BLD",7921,"KRN",.4,"NM",0)
30^9.68A^1^1
31"BLD",7921,"KRN",.4,"NM",1,0)
32C0X PRINT GRAPH FILE #172.101^172.101^0
33"BLD",7921,"KRN",.4,"NM","B","C0X PRINT GRAPH FILE #172.101",1)
34
35"BLD",7921,"KRN",.401,0)
36.401
37"BLD",7921,"KRN",.402,0)
38.402
39"BLD",7921,"KRN",.403,0)
40.403
41"BLD",7921,"KRN",.5,0)
42.5
43"BLD",7921,"KRN",.84,0)
44.84
45"BLD",7921,"KRN",3.6,0)
463.6
47"BLD",7921,"KRN",3.8,0)
483.8
49"BLD",7921,"KRN",9.2,0)
509.2
51"BLD",7921,"KRN",9.8,0)
529.8
53"BLD",7921,"KRN",9.8,"NM",0)
54^9.68A^7^7
55"BLD",7921,"KRN",9.8,"NM",1,0)
56C0XMAIN^^0^B115393527
57"BLD",7921,"KRN",9.8,"NM",2,0)
58C0XF2N^^0^B367797666
59"BLD",7921,"KRN",9.8,"NM",3,0)
60C0XTEST^^0^B14490662
61"BLD",7921,"KRN",9.8,"NM",4,0)
62C0XINIT^^0^B21176787
63"BLD",7921,"KRN",9.8,"NM",5,0)
64C0XUTIL^^0^B11155926
65"BLD",7921,"KRN",9.8,"NM",6,0)
66C0XTKSB^^0^B17580555
67"BLD",7921,"KRN",9.8,"NM",7,0)
68C0XRDF^^0^B4392
69"BLD",7921,"KRN",9.8,"NM","B","C0XF2N",2)
70
71"BLD",7921,"KRN",9.8,"NM","B","C0XINIT",4)
72
73"BLD",7921,"KRN",9.8,"NM","B","C0XMAIN",1)
74
75"BLD",7921,"KRN",9.8,"NM","B","C0XRDF",7)
76
77"BLD",7921,"KRN",9.8,"NM","B","C0XTEST",3)
78
79"BLD",7921,"KRN",9.8,"NM","B","C0XTKSB",6)
80
81"BLD",7921,"KRN",9.8,"NM","B","C0XUTIL",5)
82
83"BLD",7921,"KRN",19,0)
8419
85"BLD",7921,"KRN",19.1,0)
8619.1
87"BLD",7921,"KRN",101,0)
88101
89"BLD",7921,"KRN",409.61,0)
90409.61
91"BLD",7921,"KRN",771,0)
92771
93"BLD",7921,"KRN",779.2,0)
94779.2
95"BLD",7921,"KRN",870,0)
96870
97"BLD",7921,"KRN",8989.51,0)
988989.51
99"BLD",7921,"KRN",8989.52,0)
1008989.52
101"BLD",7921,"KRN",8994,0)
1028994
103"BLD",7921,"KRN","B",.4,.4)
104
105"BLD",7921,"KRN","B",.401,.401)
106
107"BLD",7921,"KRN","B",.402,.402)
108
109"BLD",7921,"KRN","B",.403,.403)
110
111"BLD",7921,"KRN","B",.5,.5)
112
113"BLD",7921,"KRN","B",.84,.84)
114
115"BLD",7921,"KRN","B",3.6,3.6)
116
117"BLD",7921,"KRN","B",3.8,3.8)
118
119"BLD",7921,"KRN","B",9.2,9.2)
120
121"BLD",7921,"KRN","B",9.8,9.8)
122
123"BLD",7921,"KRN","B",19,19)
124
125"BLD",7921,"KRN","B",19.1,19.1)
126
127"BLD",7921,"KRN","B",101,101)
128
129"BLD",7921,"KRN","B",409.61,409.61)
130
131"BLD",7921,"KRN","B",771,771)
132
133"BLD",7921,"KRN","B",779.2,779.2)
134
135"BLD",7921,"KRN","B",870,870)
136
137"BLD",7921,"KRN","B",8989.51,8989.51)
138
139"BLD",7921,"KRN","B",8989.52,8989.52)
140
141"BLD",7921,"KRN","B",8994,8994)
142
143"FIA",172.101)
144C0X TRIPLE
145"FIA",172.101,0)
146^C0X(101,
147"FIA",172.101,0,0)
148172.101I
149"FIA",172.101,0,1)
150y^y^f^^^^n
151"FIA",172.101,0,10)
152
153"FIA",172.101,0,11)
154
155"FIA",172.101,0,"RLRO")
156
157"FIA",172.101,172.101)
1580
159"FIA",172.101,172.1011)
1600
161"FIA",172.201)
162C0X STRING
163"FIA",172.201,0)
164^C0X(201,
165"FIA",172.201,0,0)
166172.201
167"FIA",172.201,0,1)
168y^y^f^^^^n
169"FIA",172.201,0,10)
170
171"FIA",172.201,0,11)
172
173"FIA",172.201,0,"RLRO")
174
175"FIA",172.201,172.201)
1760
177"FIA",172.201,172.2011)
1780
179"IX",172.101,172.101,"G",0)
180172.101^G^REGULAR INDEX OF THE GRAPH FIELD^R^^F^IR^I^172.101^^^^^LS
181"IX",172.101,172.101,"G",1)
182S ^C0X(101,"G",X,DA)=""
183"IX",172.101,172.101,"G",2)
184K ^C0X(101,"G",X,DA)
185"IX",172.101,172.101,"G",2.5)
186K ^C0X(101,"G")
187"IX",172.101,172.101,"G",11.1,0)
188^.114IA^1^1
189"IX",172.101,172.101,"G",11.1,1,0)
1901^F^172.101^.02^^1^F
191"IX",172.101,172.101,"G",11.1,1,3)
192
193"IX",172.101,172.101,"GOPS",0)
194172.101^GOPS^GRAPH ONLY OBJECT PREDICATE SUBJECT^R^^R^IR^I^172.101^^^^^LS
195"IX",172.101,172.101,"GOPS",1)
196S ^C0X(101,"GOPS",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
197"IX",172.101,172.101,"GOPS",2)
198K ^C0X(101,"GOPS",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
199"IX",172.101,172.101,"GOPS",2.5)
200K ^C0X(101,"GOPS")
201"IX",172.101,172.101,"GOPS",11.1,0)
202^.114IA^4^4
203"IX",172.101,172.101,"GOPS",11.1,1,0)
2041^F^172.101^.02^240^1^F
205"IX",172.101,172.101,"GOPS",11.1,1,3)
206
207"IX",172.101,172.101,"GOPS",11.1,2,0)
2082^F^172.101^.05^240^2^F
209"IX",172.101,172.101,"GOPS",11.1,2,3)
210
211"IX",172.101,172.101,"GOPS",11.1,3,0)
2123^F^172.101^.04^240^3^F
213"IX",172.101,172.101,"GOPS",11.1,3,3)
214
215"IX",172.101,172.101,"GOPS",11.1,4,0)
2164^F^172.101^.03^240^4^F
217"IX",172.101,172.101,"GOPS",11.1,4,3)
218
219"IX",172.101,172.101,"GOSP",0)
220172.101^GOSP^GRAPH ONLY OBJECT SUBJECT PREDICATE^R^^R^IR^I^172.101^^^^^LS
221"IX",172.101,172.101,"GOSP",1)
222S ^C0X(101,"GOSP",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
223"IX",172.101,172.101,"GOSP",2)
224K ^C0X(101,"GOSP",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
225"IX",172.101,172.101,"GOSP",2.5)
226K ^C0X(101,"GOSP")
227"IX",172.101,172.101,"GOSP",11.1,0)
228^.114IA^4^4
229"IX",172.101,172.101,"GOSP",11.1,1,0)
2301^F^172.101^.02^240^1^F
231"IX",172.101,172.101,"GOSP",11.1,1,3)
232
233"IX",172.101,172.101,"GOSP",11.1,2,0)
2342^F^172.101^.05^240^2^F
235"IX",172.101,172.101,"GOSP",11.1,2,3)
236
237"IX",172.101,172.101,"GOSP",11.1,3,0)
2383^F^172.101^.03^240^3^F
239"IX",172.101,172.101,"GOSP",11.1,3,3)
240
241"IX",172.101,172.101,"GOSP",11.1,4,0)
2424^F^172.101^.04^240^4^F
243"IX",172.101,172.101,"GOSP",11.1,4,3)
244
245"IX",172.101,172.101,"GPSO",0)
246172.101^GPSO^GRAPH ONLY PREDICATE SUBJECT OBJECT^R^^R^IR^I^172.101^^^^^LS
247"IX",172.101,172.101,"GPSO",1)
248S ^C0X(101,"GPSO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
249"IX",172.101,172.101,"GPSO",2)
250K ^C0X(101,"GPSO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
251"IX",172.101,172.101,"GPSO",2.5)
252K ^C0X(101,"GPSO")
253"IX",172.101,172.101,"GPSO",11.1,0)
254^.114IA^4^4
255"IX",172.101,172.101,"GPSO",11.1,1,0)
2561^F^172.101^.02^240^1^F
257"IX",172.101,172.101,"GPSO",11.1,1,3)
258
259"IX",172.101,172.101,"GPSO",11.1,2,0)
2602^F^172.101^.04^240^2^F
261"IX",172.101,172.101,"GPSO",11.1,2,3)
262
263"IX",172.101,172.101,"GPSO",11.1,3,0)
2643^F^172.101^.03^240^3^F
265"IX",172.101,172.101,"GPSO",11.1,3,3)
266
267"IX",172.101,172.101,"GPSO",11.1,4,0)
2684^F^172.101^.05^240^4^F
269"IX",172.101,172.101,"GPSO",11.1,4,3)
270
271"IX",172.101,172.101,"GSPO",0)
272172.101^GSPO^GROUP ONLY SUBJECT PREDICATE OBJECT^R^^R^IR^I^172.101^^^^^LS
273"IX",172.101,172.101,"GSPO",1)
274S ^C0X(101,"GSPO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
275"IX",172.101,172.101,"GSPO",2)
276K ^C0X(101,"GSPO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
277"IX",172.101,172.101,"GSPO",2.5)
278K ^C0X(101,"GSPO")
279"IX",172.101,172.101,"GSPO",11.1,0)
280^.114IA^4^4
281"IX",172.101,172.101,"GSPO",11.1,1,0)
2821^F^172.101^.02^240^1^F
283"IX",172.101,172.101,"GSPO",11.1,1,3)
284
285"IX",172.101,172.101,"GSPO",11.1,2,0)
2862^F^172.101^.03^240^2^F
287"IX",172.101,172.101,"GSPO",11.1,2,3)
288
289"IX",172.101,172.101,"GSPO",11.1,3,0)
2903^F^172.101^.04^240^3^F
291"IX",172.101,172.101,"GSPO",11.1,3,3)
292
293"IX",172.101,172.101,"GSPO",11.1,4,0)
2944^F^172.101^.05^240^4^F
295"IX",172.101,172.101,"GSPO",11.1,4,3)
296
297"IX",172.101,172.101,"OPS",0)
298172.101^OPS^REGULAR INDEX OF OBJECT PREDICATE SUBJECT^R^^R^IR^I^172.101^^^^^LS
299"IX",172.101,172.101,"OPS",1)
300S ^C0X(101,"OPS",X(1),X(2),X(3),DA)=""
301"IX",172.101,172.101,"OPS",2)
302K ^C0X(101,"OPS",X(1),X(2),X(3),DA)
303"IX",172.101,172.101,"OPS",2.5)
304K ^C0X(101,"OPS")
305"IX",172.101,172.101,"OPS",11.1,0)
306^.114IA^3^3
307"IX",172.101,172.101,"OPS",11.1,1,0)
3081^F^172.101^.05^^1^F
309"IX",172.101,172.101,"OPS",11.1,1,3)
310
311"IX",172.101,172.101,"OPS",11.1,2,0)
3122^F^172.101^.04^^2^F
313"IX",172.101,172.101,"OPS",11.1,2,3)
314
315"IX",172.101,172.101,"OPS",11.1,3,0)
3163^F^172.101^.03^^3^F
317"IX",172.101,172.101,"OPS",11.1,3,3)
318
319"IX",172.101,172.101,"OSP",0)
320172.101^OSP^REGULAR INDEX OF OBJECT SUBJECT PREDICATE^R^^R^IR^I^172.101^^^^^LS
321"IX",172.101,172.101,"OSP",1)
322S ^C0X(101,"OSP",X(1),X(2),X(3),DA)=""
323"IX",172.101,172.101,"OSP",2)
324K ^C0X(101,"OSP",X(1),X(2),X(3),DA)
325"IX",172.101,172.101,"OSP",2.5)
326K ^C0X(101,"OSP")
327"IX",172.101,172.101,"OSP",11.1,0)
328^.114IA^3^3
329"IX",172.101,172.101,"OSP",11.1,1,0)
3301^F^172.101^.05^^1^F
331"IX",172.101,172.101,"OSP",11.1,1,3)
332
333"IX",172.101,172.101,"OSP",11.1,2,0)
3342^F^172.101^.03^^2^F
335"IX",172.101,172.101,"OSP",11.1,2,3)
336
337"IX",172.101,172.101,"OSP",11.1,3,0)
3383^F^172.101^.04^^3^F
339"IX",172.101,172.101,"OSP",11.1,3,3)
340
341"IX",172.101,172.101,"PSO",0)
342172.101^PSO^REGULAR INDEX OF PREDICATE SUBJECT OBJECT^R^^R^IR^I^172.101^^^^^LS
343"IX",172.101,172.101,"PSO",1)
344S ^C0X(101,"PSO",X(1),X(2),X(3),DA)=""
345"IX",172.101,172.101,"PSO",2)
346K ^C0X(101,"PSO",X(1),X(2),X(3),DA)
347"IX",172.101,172.101,"PSO",2.5)
348K ^C0X(101,"PSO")
349"IX",172.101,172.101,"PSO",11.1,0)
350^.114IA^3^3
351"IX",172.101,172.101,"PSO",11.1,1,0)
3521^F^172.101^.04^^1^F
353"IX",172.101,172.101,"PSO",11.1,1,3)
354
355"IX",172.101,172.101,"PSO",11.1,2,0)
3562^F^172.101^.03^^2^F
357"IX",172.101,172.101,"PSO",11.1,2,3)
358
359"IX",172.101,172.101,"PSO",11.1,3,0)
3603^F^172.101^.05^^3^F
361"IX",172.101,172.101,"PSO",11.1,3,3)
362
363"IX",172.101,172.101,"SPO",0)
364172.101^SPO^REGULAR INDEX OF SUBJECT PREDICATE OBJECT^R^^R^IR^I^172.101^^^^^LS
365"IX",172.101,172.101,"SPO",1)
366S ^C0X(101,"SPO",X(1),X(2),X(3),DA)=""
367"IX",172.101,172.101,"SPO",2)
368K ^C0X(101,"SPO",X(1),X(2),X(3),DA)
369"IX",172.101,172.101,"SPO",2.5)
370K ^C0X(101,"SPO")
371"IX",172.101,172.101,"SPO",11.1,0)
372^.114IA^3^3
373"IX",172.101,172.101,"SPO",11.1,1,0)
3741^F^172.101^.03^^1^F
375"IX",172.101,172.101,"SPO",11.1,1,3)
376
377"IX",172.101,172.101,"SPO",11.1,2,0)
3782^F^172.101^.04^^2^F
379"IX",172.101,172.101,"SPO",11.1,2,3)
380
381"IX",172.101,172.101,"SPO",11.1,3,0)
3823^F^172.101^.05^^3^F
383"IX",172.101,172.101,"SPO",11.1,3,3)
384
385"IX",172.201,172.201,"B",0)
386172.201^B^regular B index for strings to support long strings^R^^F^IR^I^172.201^^^^^LS
387"IX",172.201,172.201,"B",1)
388S ^C0X(201,"B",$E(X,1,240),DA)=""
389"IX",172.201,172.201,"B",2)
390K ^C0X(201,"B",$E(X,1,240),DA)
391"IX",172.201,172.201,"B",2.5)
392K ^C0X(201,"B")
393"IX",172.201,172.201,"B",11.1,0)
394^.114IA^1^1
395"IX",172.201,172.201,"B",11.1,1,0)
3961^F^172.201^.01^240^1^F
397"KRN",.4,1511,-1)
3980^1
399"KRN",.4,1511,0)
400C0X PRINT GRAPH^3111207.1727^@^172.101^^@^3120605
401"KRN",.4,1511,"F",1)
402.03;W25;S~.04;C28;W25~.05;C54;W24~
403"KRN",.4,1511,"H")
404C0X TRIPLE LIST
405"MBREQ")
4060
407"ORD",5,.4)
408.4;5;;;EDEOUT^DIFROMSO(.4,DA,"",XPDA);FPRE^DIFROMSI(.4,"",XPDA);EPRE^DIFROMSI(.4,DA,$E("N",$G(XPDNEW)),XPDA,"",OLDA);;EPOST^DIFROMSI(.4,DA,"",XPDA);DEL^DIFROMSK(.4,"",%)
409"ORD",5,.4,0)
410PRINT TEMPLATE
411"QUES","XPF1",0)
412Y
413"QUES","XPF1","??")
414^D REP^XPDH
415"QUES","XPF1","A")
416Shall I write over your |FLAG| File
417"QUES","XPF1","B")
418YES
419"QUES","XPF1","M")
420D XPF1^XPDIQ
421"QUES","XPF2",0)
422Y
423"QUES","XPF2","??")
424^D DTA^XPDH
425"QUES","XPF2","A")
426Want my data |FLAG| yours
427"QUES","XPF2","B")
428YES
429"QUES","XPF2","M")
430D XPF2^XPDIQ
431"QUES","XPI1",0)
432YO
433"QUES","XPI1","??")
434^D INHIBIT^XPDH
435"QUES","XPI1","A")
436Want KIDS to INHIBIT LOGONs during the install
437"QUES","XPI1","B")
438NO
439"QUES","XPI1","M")
440D XPI1^XPDIQ
441"QUES","XPM1",0)
442PO^VA(200,:EM
443"QUES","XPM1","??")
444^D MG^XPDH
445"QUES","XPM1","A")
446Enter the Coordinator for Mail Group '|FLAG|'
447"QUES","XPM1","B")
448
449"QUES","XPM1","M")
450D XPM1^XPDIQ
451"QUES","XPO1",0)
452Y
453"QUES","XPO1","??")
454^D MENU^XPDH
455"QUES","XPO1","A")
456Want KIDS to Rebuild Menu Trees Upon Completion of Install
457"QUES","XPO1","B")
458NO
459"QUES","XPO1","M")
460D XPO1^XPDIQ
461"QUES","XPZ1",0)
462Y
463"QUES","XPZ1","??")
464^D OPT^XPDH
465"QUES","XPZ1","A")
466Want to DISABLE Scheduled Options, Menu Options, and Protocols
467"QUES","XPZ1","B")
468NO
469"QUES","XPZ1","M")
470D XPZ1^XPDIQ
471"QUES","XPZ2",0)
472Y
473"QUES","XPZ2","??")
474^D RTN^XPDH
475"QUES","XPZ2","A")
476Want to MOVE routines to other CPUs
477"QUES","XPZ2","B")
478NO
479"QUES","XPZ2","M")
480D XPZ2^XPDIQ
481"RTN")
4827
483"RTN","C0XF2N")
4840^2^B367797666
485"RTN","C0XF2N",1,0)
486C0XF2N ; GPL - Fileman Triples entry point routine ;10/13/11 17:05
487"RTN","C0XF2N",2,0)
488 ;;0.1;C0X;nopatch;noreleasedate;Build 8
489"RTN","C0XF2N",3,0)
490 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
491"RTN","C0XF2N",4,0)
492 ;General Public License See attached copy of the License.
493"RTN","C0XF2N",5,0)
494 ;
495"RTN","C0XF2N",6,0)
496 ;This program is free software; you can redistribute it and/or modify
497"RTN","C0XF2N",7,0)
498 ;it under the terms of the GNU General Public License as published by
499"RTN","C0XF2N",8,0)
500 ;the Free Software Foundation; either version 2 of the License, or
501"RTN","C0XF2N",9,0)
502 ;(at your option) any later version.
503"RTN","C0XF2N",10,0)
504 ;
505"RTN","C0XF2N",11,0)
506 ;This program is distributed in the hope that it will be useful,
507"RTN","C0XF2N",12,0)
508 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
509"RTN","C0XF2N",13,0)
510 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
511"RTN","C0XF2N",14,0)
512 ;GNU General Public License for more details.
513"RTN","C0XF2N",15,0)
514 ;
515"RTN","C0XF2N",16,0)
516 ;You should have received a copy of the GNU General Public License along
517"RTN","C0XF2N",17,0)
518 ;with this program; if not, write to the Free Software Foundation, Inc.,
519"RTN","C0XF2N",18,0)
520 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
521"RTN","C0XF2N",19,0)
522 ;
523"RTN","C0XF2N",20,0)
524 Q
525"RTN","C0XF2N",21,0)
526 ;
527"RTN","C0XF2N",22,0)
528 ; This is based on C0XMAIN but experiments with a fast load for triples
529"RTN","C0XF2N",23,0)
530 ; that will write directly to the fileman global
531"RTN","C0XF2N",24,0)
532 ; The file 172.101 is a F2N design style for triples, which means
533"RTN","C0XF2N",25,0)
534 ; that it is a Flat file with no subfiles, all fields at the root
535"RTN","C0XF2N",26,0)
536 ; ... it is a "2" file solution which means all strings are stored in
537"RTN","C0XF2N",27,0)
538 ; ... strings file and pointed to by the triples file
539"RTN","C0XF2N",28,0)
540 ; ... it is an N file because it has generated Node IDs instead of
541"RTN","C0XF2N",29,0)
542 ; ... DINUM which would use the IEN for the Node ID.
543"RTN","C0XF2N",30,0)
544 ; gpl 11/04/2011
545"RTN","C0XF2N",31,0)
546 ;
547"RTN","C0XF2N",32,0)
548INITFARY(ZFARY) ; INITIALIZE FILE NUMBERS AND OTHER USEFUL THINGS
549"RTN","C0XF2N",33,0)
550 ; FOR THE DEFAULT TRIPLE STORE. USE OTHER VALUES FOR SUPPORTING ADDITIONAL
551"RTN","C0XF2N",34,0)
552 ; TRIPLE STORES
553"RTN","C0XF2N",35,0)
554 I $D(@ZFARY) Q ; ALREADY INITIALIZED
555"RTN","C0XF2N",36,0)
556 S @ZFARY@("C0XTFN")=172.101 ; TRIPLES FILE NUMBER
557"RTN","C0XF2N",37,0)
558 S @ZFARY@("C0XSFN")=172.201 ; TRIPLES STRINGS FILE NUMBER
559"RTN","C0XF2N",38,0)
560 S @ZFARY@("C0XTN")=$NA(^C0X(101)) ; TRIPLES GLOBAL NAME
561"RTN","C0XF2N",39,0)
562 S @ZFARY@("C0XSN")=$NA(^C0X(201)) ; STRING FILE GLOBAL NAME
563"RTN","C0XF2N",40,0)
564 S @ZFARY@("C0XDIR")="/home/glilly/fmts/trunk/samples/smart-new/"
565"RTN","C0XF2N",41,0)
566 S @ZFARY@("BLKLOAD")=1 ; this file supports block load
567"RTN","C0XF2N",42,0)
568 S @ZFARY@("FMTSSTYLE")="F2N" ; fileman style
569"RTN","C0XF2N",43,0)
570 S @ZFARY@("REPLYFMT")="JSON"
571"RTN","C0XF2N",44,0)
572 D USEFARY(ZFARY)
573"RTN","C0XF2N",45,0)
574 Q
575"RTN","C0XF2N",46,0)
576 ;
577"RTN","C0XF2N",47,0)
578USEFARY(ZFARY) ; INITIALIZES VARIABLES SAVED IN ARRAY ZFARY
579"RTN","C0XF2N",48,0)
580 N ZI S ZI=""
581"RTN","C0XF2N",49,0)
582 F S ZI=$O(@ZFARY@(ZI)) Q:ZI="" D
583"RTN","C0XF2N",50,0)
584 . ;N ZX
585"RTN","C0XF2N",51,0)
586 . S ZX="S "_ZI_"="""_@ZFARY@(ZI)_""""
587"RTN","C0XF2N",52,0)
588 . ;W !,ZX
589"RTN","C0XF2N",53,0)
590 . X ZX
591"RTN","C0XF2N",54,0)
592 Q
593"RTN","C0XF2N",55,0)
594 ;
595"RTN","C0XF2N",56,0)
596FILEIN ; INTERACTIVE ENTRY POINT FOR OPTION TO READ IN A FILE
597"RTN","C0XF2N",57,0)
598 I '$D(C0XFARY) D INITFARY("C0XFARY")
599"RTN","C0XF2N",58,0)
600 D USEFARY("C0XFARY")
601"RTN","C0XF2N",59,0)
602 S DIR(0)="F^3:240"
603"RTN","C0XF2N",60,0)
604 S DIR("A")="File Directory"
605"RTN","C0XF2N",61,0)
606 S DIR("B")=C0XDIR
607"RTN","C0XF2N",62,0)
608 D ^DIR
609"RTN","C0XF2N",63,0)
610 I Y="^" Q ;
611"RTN","C0XF2N",64,0)
612 S C0XDIR=Y
613"RTN","C0XF2N",65,0)
614 S C0XFARY("C0XDIR")=Y
615"RTN","C0XF2N",66,0)
616 S DIR(0)="F^3:240"
617"RTN","C0XF2N",67,0)
618 S DIR("A")="File Name"
619"RTN","C0XF2N",68,0)
620 I '$D(C0XFN) S DIR("B")="qds.rdf"
621"RTN","C0XF2N",69,0)
622 E S DIR("B")=C0XFN
623"RTN","C0XF2N",70,0)
624 D ^DIR
625"RTN","C0XF2N",71,0)
626 I Y="" Q ;
627"RTN","C0XF2N",72,0)
628 I Y="^" Q ;
629"RTN","C0XF2N",73,0)
630 S C0XFN=Y
631"RTN","C0XF2N",74,0)
632 D IMPORT(C0XFN,C0XDIR,,"C0XFARY")
633"RTN","C0XF2N",75,0)
634 K C0XFDA
635"RTN","C0XF2N",76,0)
636 Q
637"RTN","C0XF2N",77,0)
638 ;
639"RTN","C0XF2N",78,0)
640IMPORT(FNAME,INDIR,INURL,FARY) ; EXTRINSIC THAT READS A FILE FROM THE STANDARD
641"RTN","C0XF2N",79,0)
642 ; DIRECTORY, LOADS IT INTO THE TRIPLESTORE AS TEXT, AND RETURNS THE
643"RTN","C0XF2N",80,0)
644 ; NODE NAME OF THE TEXT TRIPLE
645"RTN","C0XF2N",81,0)
646 ; INDIR IS THE OPTIONAL DIRECTORY (DEFAUTS TO STANDARD DIR)
647"RTN","C0XF2N",82,0)
648 ; INURL IS THE OPTIONAL URI FOR ACCESSING THE FILE FROM THE TRIPLE STORE
649"RTN","C0XF2N",83,0)
650 ; FARY IS THE OPTIONAL FILE ARRAY OF THE TRIPLE STORE TO USE
651"RTN","C0XF2N",84,0)
652 I '$D(FARY) D ;
653"RTN","C0XF2N",85,0)
654 . D INITFARY("C0XFARY")
655"RTN","C0XF2N",86,0)
656 . S FARY="C0XFARY"
657"RTN","C0XF2N",87,0)
658 D USEFARY(FARY)
659"RTN","C0XF2N",88,0)
660 N ZD,ZTMP
661"RTN","C0XF2N",89,0)
662 I '$D(INDIR) S INDIR=C0XDIR ; DIRECTORY OF THE RDF FILE
663"RTN","C0XF2N",90,0)
664 I $G(INURL)="" D ;
665"RTN","C0XF2N",91,0)
666 . ;N ZN2 S ZN2=$P(FNAME,".",1)_"_"_$P(FNAME,".",2) ; REMOVE THE DOT
667"RTN","C0XF2N",92,0)
668 . ;S INURL=FDIR_ZN2
669"RTN","C0XF2N",93,0)
670 . S INURL=INDIR_FNAME
671"RTN","C0XF2N",94,0)
672 N ZTMP
673"RTN","C0XF2N",95,0)
674 S ZTMP=$NA(^TMP("C0X",$J,"FILEIN",1)) ; WHERE TO PUT THE INCOMING FILE
675"RTN","C0XF2N",96,0)
676 K @ZTMP ; MAKE SURE IT'S CLEAR
677"RTN","C0XF2N",97,0)
678 S C0XSTART=$$NOW^XLFDT
679"RTN","C0XF2N",98,0)
680 W !,"STARTED: ",C0XSTART
681"RTN","C0XF2N",99,0)
682 W !,"READING IN: ",FNAME
683"RTN","C0XF2N",100,0)
684 I '$$FILEREAD(ZTMP,INDIR,FNAME,4) D Q ; QUIT IF NO SUCCESS
685"RTN","C0XF2N",101,0)
686 . W !,"ERROR READING FILE: ",INDIR,FNAME
687"RTN","C0XF2N",102,0)
688 S ZRDF=$NA(^TMP("C0X",$J,"FILEIN")) ; WITHOUT THE SUBSCRIPT
689"RTN","C0XF2N",103,0)
690 W !,$O(@ZRDF@(""),-1)," LINES READ"
691"RTN","C0XF2N",104,0)
692 D INSRDF(ZRDF,INURL,FARY) ; IMPORT AND PROCESS THE RDF
693"RTN","C0XF2N",105,0)
694 K INURL
695"RTN","C0XF2N",106,0)
696 K C0XFDA
697"RTN","C0XF2N",107,0)
698 ;K ^TMP("MXMLDOM",$J)
699"RTN","C0XF2N",108,0)
700 Q
701"RTN","C0XF2N",109,0)
702 ;
703"RTN","C0XF2N",110,0)
704WGET(ZURL,FARY) ; GET FROM THE INTERNET AN RDF FILE AND INSERT IT
705"RTN","C0XF2N",111,0)
706 ;
707"RTN","C0XF2N",112,0)
708 I '$D(FARY) D ;
709"RTN","C0XF2N",113,0)
710 . D INITFARY("C0XFARY")
711"RTN","C0XF2N",114,0)
712 . S FARY="C0XFARY"
713"RTN","C0XF2N",115,0)
714 D USEFARY(FARY)
715"RTN","C0XF2N",116,0)
716 ;N ZLOC,ZTMP
717"RTN","C0XF2N",117,0)
718 K ZTMP
719"RTN","C0XF2N",118,0)
720 S ZLOC=$NA(^TMP("C0X","WGET",$J))
721"RTN","C0XF2N",119,0)
722 K @ZLOC
723"RTN","C0XF2N",120,0)
724 S C0XSTART=$$NOW^XLFDT
725"RTN","C0XF2N",121,0)
726 W !,"STARTED: ",C0XSTART
727"RTN","C0XF2N",122,0)
728 W !,"DOWNLOADING: ",ZURL
729"RTN","C0XF2N",123,0)
730 S OK=$$httpGET^%zewdGTM(ZURL,.ZTMP)
731"RTN","C0XF2N",124,0)
732 M @ZLOC=ZTMP
733"RTN","C0XF2N",125,0)
734 S C0XLINES=$O(@ZLOC@(""),-1)
735"RTN","C0XF2N",126,0)
736 W !,C0XLINES," LINES READ"
737"RTN","C0XF2N",127,0)
738 S C0XDLC=$$NOW^XLFDT ; DOWNLOAD COMPLETE
739"RTN","C0XF2N",128,0)
740 W !,"DOWNLOAD COMPLETE AT ",C0XDLC
741"RTN","C0XF2N",129,0)
742 S C0XDIFF=$$FMDIFF^XLFDT(C0XDLC,C0XSTART,2)
743"RTN","C0XF2N",130,0)
744 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
745"RTN","C0XF2N",131,0)
746 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XLINES/C0XDIFF,".")," LINES PER SEC"
747"RTN","C0XF2N",132,0)
748 D INSRDF(ZLOC,ZURL,FARY)
749"RTN","C0XF2N",133,0)
750 Q
751"RTN","C0XF2N",134,0)
752 ;
753"RTN","C0XF2N",135,0)
754INSRDF(ZRDF,ZNAME,FARY) ; INSERT AN RDF FILE INTO THE STORE AND PROCESS
755"RTN","C0XF2N",136,0)
756 ; ZRDF IS PASSED BY NAME
757"RTN","C0XF2N",137,0)
758 I '$D(FARY) D ;
759"RTN","C0XF2N",138,0)
760 . D INITFARY("C0XFARY")
761"RTN","C0XF2N",139,0)
762 . S FARY="C0XFARY"
763"RTN","C0XF2N",140,0)
764 D USEFARY(FARY)
765"RTN","C0XF2N",141,0)
766 S BATCNT=0 ; BATCH COUNTER
767"RTN","C0XF2N",142,0)
768 S BATMAX=10000 ; TRY BATCHES OF THIS SIZE
769"RTN","C0XF2N",143,0)
770 N ZGRAPH,ZSUBJECT
771"RTN","C0XF2N",144,0)
772 S ZGRAPH="_:G"_$$LKY9 ; RANDOM GRAPH NAME
773"RTN","C0XF2N",145,0)
774 S ZSUBJECT=$$ANONS() ; RANDOM ANOYMOUS SUBJECT
775"RTN","C0XF2N",146,0)
776 D ADD(ZGRAPH,ZSUBJECT,"fmts:url",ZNAME,FARY)
777"RTN","C0XF2N",147,0)
778 N ZTXTNM
779"RTN","C0XF2N",148,0)
780 S ZTXTNM="_TXT_INCOMING_RDF_FILE_"_ZNAME_"_"_$$LKY9 ; NAME FOR TEXT NODE
781"RTN","C0XF2N",149,0)
782 D ADD(ZGRAPH,ZSUBJECT,"fmts:fileSource",ZTXTNM,FARY)
783"RTN","C0XF2N",150,0)
784 D ADD(ZGRAPH,ZSUBJECT,"fmts:fileTag",$$name2tag(ZNAME),FARY)
785"RTN","C0XF2N",151,0)
786 D SWUPDIE(.C0XFDA) ; TRY IT OUT
787"RTN","C0XF2N",152,0)
788 K C0XCNT ;RESET FOR NEXT TIME
789"RTN","C0XF2N",153,0)
790 D STORETXT(ZRDF,ZTXTNM,FARY)
791"RTN","C0XF2N",154,0)
792 W !,"ADDED: ",ZGRAPH," ",ZSUBJECT," fmts:fileSource ",ZTXTNM
793"RTN","C0XF2N",155,0)
794 D PROCESS(.G,ZRDF,ZNAME,ZGRAPH,FARY) ; PARSE AND INSERT THE RDF
795"RTN","C0XF2N",156,0)
796 Q
797"RTN","C0XF2N",157,0)
798 ;
799"RTN","C0XF2N",158,0)
800name2tag(zname) ; extrinsic which returns a tag derived from a name
801"RTN","C0XF2N",159,0)
802 ; /home/vista/project.xml ==> project
803"RTN","C0XF2N",160,0)
804 q $p($re($p($re(zname),"/")),".")
805"RTN","C0XF2N",161,0)
806 ;
807"RTN","C0XF2N",162,0)
808STORETXT(ZTXT,ZNAME,FARY) ; STORE TEXT IN THE TRIPLESTORE AT ZNAME
809"RTN","C0XF2N",163,0)
810 ;
811"RTN","C0XF2N",164,0)
812 I '$D(FARY) D ;
813"RTN","C0XF2N",165,0)
814 . D INITFARY("C0XFARY")
815"RTN","C0XF2N",166,0)
816 . S FARY="C0XFARY"
817"RTN","C0XF2N",167,0)
818 D USEFARY(FARY)
819"RTN","C0XF2N",168,0)
820 N ZIEN
821"RTN","C0XF2N",169,0)
822 S ZIEN=$$IENOF(ZNAME,FARY) ; GET THE IEN
823"RTN","C0XF2N",170,0)
824 D CLEAN^DILF
825"RTN","C0XF2N",171,0)
826 K ZERR
827"RTN","C0XF2N",172,0)
828 D WP^DIE(C0XSFN,ZIEN_",",1,,ZTXT,"ZERR")
829"RTN","C0XF2N",173,0)
830 I $D(ZERR) D Q ;
831"RTN","C0XF2N",174,0)
832 . W !,"ERROR CREATING WORD PROCESSING FIELD"
833"RTN","C0XF2N",175,0)
834 . S C0XERR="ERROR CREATING WORD PROCESSING FIELD"
835"RTN","C0XF2N",176,0)
836 . D ^%ZTER ; error trap
837"RTN","C0XF2N",177,0)
838 Q
839"RTN","C0XF2N",178,0)
840 ;
841"RTN","C0XF2N",179,0)
842GETTXT(ZRTN,ZNAME,FARY) ; RETURNS RDF SOURCE OR OTHER TEXT
843"RTN","C0XF2N",180,0)
844 ; ZRTN IS PASSED BY REFERENCE
845"RTN","C0XF2N",181,0)
846 I '$D(FARY) D ;
847"RTN","C0XF2N",182,0)
848 . D INITFARY("C0XFARY")
849"RTN","C0XF2N",183,0)
850 . S FARY="C0XFARY"
851"RTN","C0XF2N",184,0)
852 D USEFARY(FARY)
853"RTN","C0XF2N",185,0)
854 N ZIEN
855"RTN","C0XF2N",186,0)
856 S ZIEN=$$IENOF(ZNAME)
857"RTN","C0XF2N",187,0)
858 S OK=$$GET1^DIQ(C0XSFN,ZIEN_",",1,,"ZRTN")
859"RTN","C0XF2N",188,0)
860 Q
861"RTN","C0XF2N",189,0)
862 ;
863"RTN","C0XF2N",190,0)
864WHERETXT(ZNAME,FARY) ; EXTRINSIC WHICH RETURNS THE NAME OF THE GLOBAL
865"RTN","C0XF2N",191,0)
866 ; WHERE THE TEXT IS LOCATED. NAME IS THE NAME OF THE STRING
867"RTN","C0XF2N",192,0)
868 I '$D(FARY) D ;
869"RTN","C0XF2N",193,0)
870 . D INITFARY("C0XFARY")
871"RTN","C0XF2N",194,0)
872 . S FARY="C0XFARY"
873"RTN","C0XF2N",195,0)
874 D USEFARY(FARY)
875"RTN","C0XF2N",196,0)
876 N ZIEN
877"RTN","C0XF2N",197,0)
878 S ZIEN=$$IENOF(ZNAME)
879"RTN","C0XF2N",198,0)
880 Q $NA(@C0XSN@(ZIEN,1))
881"RTN","C0XF2N",199,0)
882 ;
883"RTN","C0XF2N",200,0)
884FILEREAD(ZINTMP,ZDIR,ZFNAME,ZLVL) ; READS A FILE INTO ZINTMP USING FTG^%ZISH
885"RTN","C0XF2N",201,0)
886 ; ZINTMP IS PASSED BY NAME AND INCLUDES THE NEW SUBSCRIPT
887"RTN","C0XF2N",202,0)
888 ; IE ^TMP("C0X","FILEIN",1)
889"RTN","C0XF2N",203,0)
890 ; ZLVL IN THIS CASE WOULD BE 3 INCREMENTING THE 1
891"RTN","C0XF2N",204,0)
892 ; EXTRINSIC WHICH RETURNS THE RESULT OF FTG^%ZISH
893"RTN","C0XF2N",205,0)
894 S OK=$$FTG^%ZISH(ZDIR,FNAME,ZINTMP,ZLVL)
895"RTN","C0XF2N",206,0)
896 Q OK
897"RTN","C0XF2N",207,0)
898 ;
899"RTN","C0XF2N",208,0)
900TESTPROC ; TEST PROCESS WITH EXISTING SMALL RDF FILE
901"RTN","C0XF2N",209,0)
902 S ZIN=$NA(^TMP("C0X",12226,"FILEIN"))
903"RTN","C0XF2N",210,0)
904 S ZGRAPH="/test/rdfFile"
905"RTN","C0XF2N",211,0)
906 S ZM="/test/rdfFile/meta"
907"RTN","C0XF2N",212,0)
908 D PROCESS(.G,ZIN,ZGRAPH,ZM)
909"RTN","C0XF2N",213,0)
910 Q
911"RTN","C0XF2N",214,0)
912 ;
913"RTN","C0XF2N",215,0)
914VISTAOWL ;
915"RTN","C0XF2N",216,0)
916 S ZRDF=$NA(^TMP("C0X",542,"FILEIN"))
917"RTN","C0XF2N",217,0)
918 S ZNAME="/home/glilly/vistaowl/VistAOWL.owl"
919"RTN","C0XF2N",218,0)
920 S ZGRAPH="_:G431590209"
921"RTN","C0XF2N",219,0)
922 S FARY="C0XFARY"
923"RTN","C0XF2N",220,0)
924 D INITFARY(FARY)
925"RTN","C0XF2N",221,0)
926 S C0XDOCID=1
927"RTN","C0XF2N",222,0)
928 S BATCNT=0
929"RTN","C0XF2N",223,0)
930 S BATMAX=10000
931"RTN","C0XF2N",224,0)
932 D PROCESS(.G,ZRDF,ZGRAPH,ZNAME,FARY)
933"RTN","C0XF2N",225,0)
934 Q
935"RTN","C0XF2N",226,0)
936 ;
937"RTN","C0XF2N",227,0)
938PROCESS(ZRTN,ZRDF,ZGRF,ZMETA,FARY) ; PROCESS AN INCOMING RDF FILE
939"RTN","C0XF2N",228,0)
940 ; ZRTN IS PASS BY REFERENCE AND RETURNS MESSAGES ABOUT THE PROCESSING
941"RTN","C0XF2N",229,0)
942 ; ZRDF IS PASSED BY NAME AND IS THE GLOBAL CONTAINING THE RDF FILE
943"RTN","C0XF2N",230,0)
944 ; ZGRF IS THE NAME OF THE GRAPH TO USE IN THE TRIPLE STORE FOR RESULTS
945"RTN","C0XF2N",231,0)
946 ; ZMETA IS OPTIONAL AND IS THE NAME OF THE GRAPH TO STORE METADATA
947"RTN","C0XF2N",232,0)
948 ;
949"RTN","C0XF2N",233,0)
950 I '$D(FARY) D ;
951"RTN","C0XF2N",234,0)
952 . D INITFARY("C0XFARY")
953"RTN","C0XF2N",235,0)
954 . S FARY="C0XFARY"
955"RTN","C0XF2N",236,0)
956 D USEFARY(FARY)
957"RTN","C0XF2N",237,0)
958 ;N BATCNT
959"RTN","C0XF2N",238,0)
960 ;N BATMAX
961"RTN","C0XF2N",239,0)
962 ; -- first parse the rdf file with the MXML parser
963"RTN","C0XF2N",240,0)
964 ;S C0XDOCID=$$PARSE^C0CNHIN(ZRDF,"C0XARRAY") ; PARSE WITH MXML
965"RTN","C0XF2N",241,0)
966 S C0XDLC2=$$NOW^XLFDT ; START OF PARSE
967"RTN","C0XF2N",242,0)
968 I @ZRDF@(1)'["<?xml" D Q ;
969"RTN","C0XF2N",243,0)
970 . K @ZRDF ; don't need the input buffer
971"RTN","C0XF2N",244,0)
972 . W !,"Not an XML file"
973"RTN","C0XF2N",245,0)
974 S C0XDOCID=$$EN^MXMLDOM(ZRDF,"W") ;
975"RTN","C0XF2N",246,0)
976 ;B
977"RTN","C0XF2N",247,0)
978 K @ZRDF ; DON'T NEED INPUT BUFFER ANYMORE
979"RTN","C0XF2N",248,0)
980 ; -- assign the MXLM dom global name to ZDOM
981"RTN","C0XF2N",249,0)
982 S ZDOM=$NA(^TMP("MXMLDOM",$J,C0XDOCID))
983"RTN","C0XF2N",250,0)
984 ;S ZDOM=$NA(^TMP("MXMLDOM",16850,C0XDOCID)) ;VISTAOWL DOM
985"RTN","C0XF2N",251,0)
986 S C0XNODE=$O(@ZDOM@(""),-1)
987"RTN","C0XF2N",252,0)
988 W !,C0XNODE," XML NODES PARSED"
989"RTN","C0XF2N",253,0)
990 S C0XPRS=$$NOW^XLFDT ; PARSE COMPLETE
991"RTN","C0XF2N",254,0)
992 W !,"PARSE COMPLETE AT ",C0XPRS
993"RTN","C0XF2N",255,0)
994 S C0XDIFF=$$FMDIFF^XLFDT(C0XPRS,C0XDLC2,2)
995"RTN","C0XF2N",256,0)
996 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
997"RTN","C0XF2N",257,0)
998 I C0XDIFF'=0 D ;
999"RTN","C0XF2N",258,0)
1000 . W !," APPROXIMATELY ",$P(C0XNODE/C0XDIFF,".")," NODES PER SECOND"
1001"RTN","C0XF2N",259,0)
1002 ; -- populate the metagraph to point to the graph with status unfinished
1003"RTN","C0XF2N",260,0)
1004 S METAS=$$ANONS ; GET AN ANONOMOUS RANDOM SUBJECT
1005"RTN","C0XF2N",261,0)
1006 I '$D(ZMETA) S ZMETA="_:G"_$$LKY9 ; RANDOM GRAPH NAME FOR METAGRAPH
1007"RTN","C0XF2N",262,0)
1008 D ADD(ZMETA,METAS,"fmts:about",ZGRF,FARY) ; POINT THE META TO THE GRAPH
1009"RTN","C0XF2N",263,0)
1010 D ADD(ZMETA,METAS,"fmts:status","unfinished",FARY) ; mark as unfinished
1011"RTN","C0XF2N",264,0)
1012 W !,"INSERTING GRAPH: ",ZGRF
1013"RTN","C0XF2N",265,0)
1014 ;S C0XDATE=$$FMDTOUTC^C0CUTIL($$NOW^XLFDT,"DT")
1015"RTN","C0XF2N",266,0)
1016 S C0XDATE=$$NOW^XLFDT
1017"RTN","C0XF2N",267,0)
1018 D ADD(ZMETA,METAS,"fmts:dateTime",C0XDATE,FARY)
1019"RTN","C0XF2N",268,0)
1020 D SWUPDIE(.C0XFDA) ; commit the metagraph changes to the triple store
1021"RTN","C0XF2N",269,0)
1022 ; --
1023"RTN","C0XF2N",270,0)
1024 ; -- pull out the vocabularies in the RDF statement. marked with xmlns:
1025"RTN","C0XF2N",271,0)
1026 ; -- put them in a local variable for quick reference
1027"RTN","C0XF2N",272,0)
1028 ; -- TODO: create a graph for vocabularies and validate incoming against it
1029"RTN","C0XF2N",273,0)
1030 ;
1031"RTN","C0XF2N",274,0)
1032 S C0XVOC=""
1033"RTN","C0XF2N",275,0)
1034 N ZI,ZJ,ZK S ZI=""
1035"RTN","C0XF2N",276,0)
1036 F S ZI=$O(@ZDOM@(1,"A",ZI)) Q:ZI="" D ; FOR EACH xmlns
1037"RTN","C0XF2N",277,0)
1038 . S ZVOC=$P(ZI,"xmlns:",2)
1039"RTN","C0XF2N",278,0)
1040 . I ZVOC'="" S C0XVOC(ZVOC)=$G(@ZDOM@(1,"A",ZI))
1041"RTN","C0XF2N",279,0)
1042 I $D(DEBUG) D ;
1043"RTN","C0XF2N",280,0)
1044 . W !,"VOCABS:"
1045"RTN","C0XF2N",281,0)
1046 . N ZZ S ZZ=""
1047"RTN","C0XF2N",282,0)
1048 . F S ZZ=$O(C0XVOC(ZZ)) Q:ZZ="" W !,ZZ,":",C0XVOC(ZZ)
1049"RTN","C0XF2N",283,0)
1050 ;
1051"RTN","C0XF2N",284,0)
1052 ; -- look for children called rdf:Description. quit if none. not an rdf file
1053"RTN","C0XF2N",285,0)
1054 ;
1055"RTN","C0XF2N",286,0)
1056 S C0XTYPE("rdf:Description")=1
1057"RTN","C0XF2N",287,0)
1058 S C0XTYPE("owl:ObjectProperty")=1
1059"RTN","C0XF2N",288,0)
1060 S C0XTYPE("owl:Ontology")=1
1061"RTN","C0XF2N",289,0)
1062 S C0XTYPE("owl:Class")=1
1063"RTN","C0XF2N",290,0)
1064 S C0XTYPE("rdfs:subClassOf")=1
1065"RTN","C0XF2N",291,0)
1066 S C0XTYPE("rdf:RDF")=1
1067"RTN","C0XF2N",292,0)
1068 S ZI=$O(@ZDOM@(1,"C",""))
1069"RTN","C0XF2N",293,0)
1070 I '$G(C0XTYPE(@ZDOM@(1,"C",ZI))) D ;Q ; not an rdf file
1071"RTN","C0XF2N",294,0)
1072 . W !,"Unusual RDF file ",@ZDOM@(1,"C",ZI)
1073"RTN","C0XF2N",295,0)
1074 . ;W !,"Error. Not an RDF file. Cannot process."
1075"RTN","C0XF2N",296,0)
1076 . D SHOW(1)
1077"RTN","C0XF2N",297,0)
1078 ;
1079"RTN","C0XF2N",298,0)
1080 ; -- now process the rdf description children
1081"RTN","C0XF2N",299,0)
1082 ;
1083"RTN","C0XF2N",300,0)
1084 S ZI=""
1085"RTN","C0XF2N",301,0)
1086 S (C0XSUB,C0XPRE,C0XOBJ)="" ; INITIALIZE subject, object and predicate
1087"RTN","C0XF2N",302,0)
1088 F S ZI=$O(@ZDOM@(1,"C",ZI)) Q:ZI="" D ;
1089"RTN","C0XF2N",303,0)
1090 . ; -- we are skipping any child that is not rdf:Description
1091"RTN","C0XF2N",304,0)
1092 . ; -- TODO: check to see if this is right in general
1093"RTN","C0XF2N",305,0)
1094 . ;
1095"RTN","C0XF2N",306,0)
1096 . IF '$G(C0XTYPE(@ZDOM@(1,"C",ZI))) D Q ;
1097"RTN","C0XF2N",307,0)
1098 . . W !,"SKIPPING NODE: ",ZI
1099"RTN","C0XF2N",308,0)
1100 . ; -- now looking for the subject for the triples
1101"RTN","C0XF2N",309,0)
1102 . S ZX=$G(@ZDOM@(ZI,"A","rdf:about"))
1103"RTN","C0XF2N",310,0)
1104 . I ZX'="" D ; we have the subject
1105"RTN","C0XF2N",311,0)
1106 . . ;W " about: ",ZX
1107"RTN","C0XF2N",312,0)
1108 . . S C0XSUB=ZX
1109"RTN","C0XF2N",313,0)
1110 . E D ;
1111"RTN","C0XF2N",314,0)
1112 . . S ZX=$G(@ZDOM@(ZI,"A","rdf:nodeID")) ; node id is another style of subject
1113"RTN","C0XF2N",315,0)
1114 . . I ZX'="" D ;
1115"RTN","C0XF2N",316,0)
1116 . . . S C0XSUB=ZX
1117"RTN","C0XF2N",317,0)
1118 . I C0XSUB="" S C0XSUB=$$ANONS ; DEFAULT TO BLANK SUBJECT
1119"RTN","C0XF2N",318,0)
1120 . ;
1121"RTN","C0XF2N",319,0)
1122 . ; -- we now have the subject. the children of this node have the rest
1123"RTN","C0XF2N",320,0)
1124 . ;
1125"RTN","C0XF2N",321,0)
1126 . S ZJ="" ; for the children of the rdf:Description nodes
1127"RTN","C0XF2N",322,0)
1128 . F S ZJ=$O(@ZDOM@(ZI,"C",ZJ)) Q:ZJ="" D ; for each child
1129"RTN","C0XF2N",323,0)
1130 . . S C0XPRE=@ZDOM@(ZJ) ; the predicate without a prefix
1131"RTN","C0XF2N",324,0)
1132 . . S ZX=$G(@ZDOM@(ZJ,"A","xmlns")) ; name space
1133"RTN","C0XF2N",325,0)
1134 . . I ZX'="" S C0XPRE=ZX_C0XPRE ; add the namespace prefix
1135"RTN","C0XF2N",326,0)
1136 . . I C0XPRE[":" D ; expand using vocabulary
1137"RTN","C0XF2N",327,0)
1138 . . . N ZB,ZA
1139"RTN","C0XF2N",328,0)
1140 . . . S ZB=$P(C0XPRE,":",1)
1141"RTN","C0XF2N",329,0)
1142 . . . S ZA=$P(C0XPRE,":",2)
1143"RTN","C0XF2N",330,0)
1144 . . . I $G(C0XVOC(ZB))'="" D ;
1145"RTN","C0XF2N",331,0)
1146 . . . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
1147"RTN","C0XF2N",332,0)
1148 . . S ZY=$G(@ZDOM@(ZJ,"A","rdf:resource")) ; potential object
1149"RTN","C0XF2N",333,0)
1150 . . I ZY'="" D Q ;
1151"RTN","C0XF2N",334,0)
1152 . . . S C0XOBJ=$$EXT^C0XUTIL(ZY) ; object
1153"RTN","C0XF2N",335,0)
1154 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; finally. our first real triple
1155"RTN","C0XF2N",336,0)
1156 . . ; -- this is an else because of the quit above
1157"RTN","C0XF2N",337,0)
1158 . . S ZX=$G(@ZDOM@(ZJ,"A","rdf:nodeID")) ; fishing for nodeId object
1159"RTN","C0XF2N",338,0)
1160 . . I ZX'="" D Q ; got one
1161"RTN","C0XF2N",339,0)
1162 . . . S C0XOBJ=ZX ; we are using the incoming nodeIDs as object/subject
1163"RTN","C0XF2N",340,0)
1164 . . . ; without change... this could be foolish .. look at it again later
1165"RTN","C0XF2N",341,0)
1166 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
1167"RTN","C0XF2N",342,0)
1168 . . S C0XOBJ=$G(@ZDOM@(ZJ,"T",1)) ; hopefully an object is here
1169"RTN","C0XF2N",343,0)
1170 . . I C0XOBJ="" D Q ; not a happy situation
1171"RTN","C0XF2N",344,0)
1172 . . . W !,"ERROR, NO OBJECT FOUND FOR NODE: ",ZJ
1173"RTN","C0XF2N",345,0)
1174 . . S C0XOBJ=$$EXT^C0XUTIL(C0XOBJ) ; might be namespaced
1175"RTN","C0XF2N",346,0)
1176 . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
1177"RTN","C0XF2N",347,0)
1178 S C0XTRP=$$NOW^XLFDT ; PARSE COMPLETE
1179"RTN","C0XF2N",348,0)
1180 W !,"TRIPLES COMPLETE AT ",C0XTRP
1181"RTN","C0XF2N",349,0)
1182 S C0XDIFF=$$FMDIFF^XLFDT(C0XTRP,C0XPRS,2)
1183"RTN","C0XF2N",350,0)
1184 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1185"RTN","C0XF2N",351,0)
1186 I C0XDIFF'=0 D ;
1187"RTN","C0XF2N",352,0)
1188 . W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
1189"RTN","C0XF2N",353,0)
1190 W !,"INSERTING ",C0XCNT," TRIPLES"
1191"RTN","C0XF2N",354,0)
1192 I $D(C0XFDA) D ;
1193"RTN","C0XF2N",355,0)
1194 . I $G(BLKLOAD) D ;
1195"RTN","C0XF2N",356,0)
1196 . . D BULKLOAD(.C0XFDA)
1197"RTN","C0XF2N",357,0)
1198 . E D ;
1199"RTN","C0XF2N",358,0)
1200 . . D UPDIE(.C0XFDA) ; commit the updates to the file
1201"RTN","C0XF2N",359,0)
1202 ; next, mark the graph as finished
1203"RTN","C0XF2N",360,0)
1204 S C0XINS=$$NOW^XLFDT ; PARSE COMPLETE
1205"RTN","C0XF2N",361,0)
1206 W !,"INSERTION COMPLETE AT ",C0XPRS
1207"RTN","C0XF2N",362,0)
1208 S C0XDIFF=$$FMDIFF^XLFDT(C0XINS,C0XTRP,2)
1209"RTN","C0XF2N",363,0)
1210 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1211"RTN","C0XF2N",364,0)
1212 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," NODES PER SECOND"
1213"RTN","C0XF2N",365,0)
1214 S C0XEND=$$NOW^XLFDT
1215"RTN","C0XF2N",366,0)
1216 W !," ENDED AT: ",C0XEND
1217"RTN","C0XF2N",367,0)
1218 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XSTART,2)
1219"RTN","C0XF2N",368,0)
1220 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1221"RTN","C0XF2N",369,0)
1222 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
1223"RTN","C0XF2N",370,0)
1224 Q
1225"RTN","C0XF2N",371,0)
1226 ;
1227"RTN","C0XF2N",372,0)
1228SHOW(ZN) ;
1229"RTN","C0XF2N",373,0)
1230 I '$D(C0XJOB) S C0XJOB=$J
1231"RTN","C0XF2N",374,0)
1232 N ZD
1233"RTN","C0XF2N",375,0)
1234 S ZD=$NA(^TMP("MXMLDOM",C0XJOB,1,ZN))
1235"RTN","C0XF2N",376,0)
1236 W ZD,"=",@ZD
1237"RTN","C0XF2N",377,0)
1238 F S ZD=$Q(@ZD) Q:$QS(ZD,4)'=ZN W !,ZD,"=",@ZD
1239"RTN","C0XF2N",378,0)
1240 ;ZWR ^TMP("MXMLDOM",C0XJOB,1,ZN,*)
1241"RTN","C0XF2N",379,0)
1242 Q
1243"RTN","C0XF2N",380,0)
1244 ;
1245"RTN","C0XF2N",381,0)
1246ANONS() ; RETURNS AN ANONOMOUS SUBJECT
1247"RTN","C0XF2N",382,0)
1248 Q "iDPsDPss"_$$LKY9
1249"RTN","C0XF2N",383,0)
1250 ;
1251"RTN","C0XF2N",384,0)
1252NEWG(NGRAPH,NMETA) ; CREATES A NEW META GRAPH, MARKS IT AS UNFINISHED
1253"RTN","C0XF2N",385,0)
1254 ; THEN CREATES A NEW GRAPH AND POINTS THE METAGRAPH TO IT
1255"RTN","C0XF2N",386,0)
1256 ; NGRAPH AND NMETA ARE PASSED BY REFERENCE AND ARE THE RETURN
1257"RTN","C0XF2N",387,0)
1258 S NGRAPH="G"_$$LKY9
1259"RTN","C0XF2N",388,0)
1260 S NMETA=NGRAPH_"A"
1261"RTN","C0XF2N",389,0)
1262 Q
1263"RTN","C0XF2N",390,0)
1264 ;
1265"RTN","C0XF2N",391,0)
1266STARTADD ; INITIALIZE C0XFDA AND BATCNT
1267"RTN","C0XF2N",392,0)
1268 K C0XFDA
1269"RTN","C0XF2N",393,0)
1270 K BATCNT
1271"RTN","C0XF2N",394,0)
1272 Q
1273"RTN","C0XF2N",395,0)
1274 ;
1275"RTN","C0XF2N",396,0)
1276ADD(ZG,ZS,ZP,ZO,FARY) ; ADD A TRIPLE TO THE TRIPLESTORE. ALL VALUES ARE TEXT
1277"RTN","C0XF2N",397,0)
1278 ; THE FDA IS SET UP BUT THE FILES ARE NOT UPDATED. CALL UPDIE TO COMPLETE
1279"RTN","C0XF2N",398,0)
1280 I '$D(FARY) D ;
1281"RTN","C0XF2N",399,0)
1282 . D INITFARY("C0XFARY")
1283"RTN","C0XF2N",400,0)
1284 . S FARY="C0XFARY"
1285"RTN","C0XF2N",401,0)
1286 D USEFARY(FARY)
1287"RTN","C0XF2N",402,0)
1288 I '$D(C0XCNT) S C0XCNT=0
1289"RTN","C0XF2N",403,0)
1290 N ZNODE
1291"RTN","C0XF2N",404,0)
1292 S ZNODE="N"_$$LKY17
1293"RTN","C0XF2N",405,0)
1294 N ZNARY ; GET READY TO CALL IENOFA
1295"RTN","C0XF2N",406,0)
1296 I (ZG="")!(ZS="")!(ZP="")!(ZO="") D Q ;
1297"RTN","C0XF2N",407,0)
1298 . I $G(DEBUG) W !,"Error Empty String ZG:"_ZG_" ZS:"_ZS_" ZP:"_ZP_" ZO"_ZO
1299"RTN","C0XF2N",408,0)
1300 S ZNARY("ZG",ZG)=""
1301"RTN","C0XF2N",409,0)
1302 S ZNARY("ZS",ZS)=""
1303"RTN","C0XF2N",410,0)
1304 S ZNARY("ZP",ZP)=""
1305"RTN","C0XF2N",411,0)
1306 S ZNARY("ZO",ZO)=""
1307"RTN","C0XF2N",412,0)
1308 D IENOFA(.ZIENS,.ZNARY,FARY) ; RESOLVE/ADD STRINGS
1309"RTN","C0XF2N",413,0)
1310 ;S ZGIEN=$$IENOF(ZG) ; LAYGO TO GET IEN
1311"RTN","C0XF2N",414,0)
1312 ;S ZSIEN=$$IENOF(ZS)
1313"RTN","C0XF2N",415,0)
1314 ;S ZPIEN=$$IENOF(ZP)
1315"RTN","C0XF2N",416,0)
1316 ;S ZOIEN=$$IENOF(ZO)
1317"RTN","C0XF2N",417,0)
1318 ;I $D(C0XFDA) D UPDIE ; ADD THE STRINGS IF NEEDED
1319"RTN","C0XF2N",418,0)
1320 I '$D(BATCNT) S BATCNT=0
1321"RTN","C0XF2N",419,0)
1322 S BATCNT=BATCNT+1
1323"RTN","C0XF2N",420,0)
1324 S C0XCNT=C0XCNT+1
1325"RTN","C0XF2N",421,0)
1326 I $G(BLKLOAD)=1 D ; we are using bulk load
1327"RTN","C0XF2N",422,0)
1328 . S C0XFDA(C0XTFN,BATCNT,.01)=ZNODE
1329"RTN","C0XF2N",423,0)
1330 . S C0XFDA(C0XTFN,BATCNT,.02)=$O(ZIENS("IEN","ZG",""))
1331"RTN","C0XF2N",424,0)
1332 . S C0XFDA(C0XTFN,BATCNT,.03)=$O(ZIENS("IEN","ZS",""))
1333"RTN","C0XF2N",425,0)
1334 . S C0XFDA(C0XTFN,BATCNT,.04)=$O(ZIENS("IEN","ZP",""))
1335"RTN","C0XF2N",426,0)
1336 . S C0XFDA(C0XTFN,BATCNT,.05)=$O(ZIENS("IEN","ZO",""))
1337"RTN","C0XF2N",427,0)
1338 E D ;
1339"RTN","C0XF2N",428,0)
1340 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.01)=ZNODE
1341"RTN","C0XF2N",429,0)
1342 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.02)=$O(ZIENS("IEN","ZG",""))
1343"RTN","C0XF2N",430,0)
1344 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.03)=$O(ZIENS("IEN","ZS",""))
1345"RTN","C0XF2N",431,0)
1346 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.04)=$O(ZIENS("IEN","ZP",""))
1347"RTN","C0XF2N",432,0)
1348 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.05)=$O(ZIENS("IEN","ZO",""))
1349"RTN","C0XF2N",433,0)
1350 I '$D(BATMAX) S BATMAX=10000
1351"RTN","C0XF2N",434,0)
1352 I BATCNT=BATMAX D ; BATCH IS DONE
1353"RTN","C0XF2N",435,0)
1354 . I $G(BLKLOAD) D ; bulk load
1355"RTN","C0XF2N",436,0)
1356 . . D BULKLOAD(.C0XFDA) ; bulk load the batch
1357"RTN","C0XF2N",437,0)
1358 . E D ; no bulk load
1359"RTN","C0XF2N",438,0)
1360 . . D UPDIE(.C0XFDA)
1361"RTN","C0XF2N",439,0)
1362 . K C0XFDA
1363"RTN","C0XF2N",440,0)
1364 . S BATCNT=0 ; RESET COUNTER
1365"RTN","C0XF2N",441,0)
1366 ; REMEMBER TO CALL UPDIE WHEN YOU'RE DONE
1367"RTN","C0XF2N",442,0)
1368 Q
1369"RTN","C0XF2N",443,0)
1370 ;
1371"RTN","C0XF2N",444,0)
1372LKY5() ;EXTRINIC THAT RETURNS A RANDOM 5 DIGIT NUMBER. USED FOR GENERATING
1373"RTN","C0XF2N",445,0)
1374 ; UNIQUE NODE AND GRAPH NAMES
1375"RTN","C0XF2N",446,0)
1376 N ZN,ZI
1377"RTN","C0XF2N",447,0)
1378 S ZN=""
1379"RTN","C0XF2N",448,0)
1380 F ZI=1:1:5 D ;
1381"RTN","C0XF2N",449,0)
1382 . S ZN=ZN_$R(10)
1383"RTN","C0XF2N",450,0)
1384 Q ZN
1385"RTN","C0XF2N",451,0)
1386 ;
1387"RTN","C0XF2N",452,0)
1388LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
1389"RTN","C0XF2N",453,0)
1390 ; UNIQUE NODE AND GRAPH NAMES
1391"RTN","C0XF2N",454,0)
1392 N ZN,ZI
1393"RTN","C0XF2N",455,0)
1394 S ZN=""
1395"RTN","C0XF2N",456,0)
1396 F ZI=1:1:9 D ;
1397"RTN","C0XF2N",457,0)
1398 . S ZN=ZN_$R(10)
1399"RTN","C0XF2N",458,0)
1400 Q ZN
1401"RTN","C0XF2N",459,0)
1402 ;
1403"RTN","C0XF2N",460,0)
1404LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
1405"RTN","C0XF2N",461,0)
1406 ; UNIQUE NODE AND GRAPH NAMES
1407"RTN","C0XF2N",462,0)
1408 N ZN,ZI
1409"RTN","C0XF2N",463,0)
1410 S ZN=""
1411"RTN","C0XF2N",464,0)
1412 F ZI=1:1:17 D ;
1413"RTN","C0XF2N",465,0)
1414 . S ZN=ZN_$R(10)
1415"RTN","C0XF2N",466,0)
1416 Q ZN
1417"RTN","C0XF2N",467,0)
1418 ;
1419"RTN","C0XF2N",468,0)
1420 ; these routines add the string if it is not found
1421"RTN","C0XF2N",469,0)
1422 ;
1423"RTN","C0XF2N",470,0)
1424IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
1425"RTN","C0XF2N",471,0)
1426 I '$D(FARY) D ;
1427"RTN","C0XF2N",472,0)
1428 . D INITFARY("C0XFARY")
1429"RTN","C0XF2N",473,0)
1430 . S FARY="C0XFARY"
1431"RTN","C0XF2N",474,0)
1432 N ZIEN
1433"RTN","C0XF2N",475,0)
1434 I $G(ZSTRING)="" Q "" ; NO STRING
1435"RTN","C0XF2N",476,0)
1436 S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
1437"RTN","C0XF2N",477,0)
1438 I ZIEN="" D ;
1439"RTN","C0XF2N",478,0)
1440 . S C0XFDA2(C0XSFN,"+1,",.01)=ZSTRING
1441"RTN","C0XF2N",479,0)
1442 . D UPDIE(.C0XFDA2)
1443"RTN","C0XF2N",480,0)
1444 . S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
1445"RTN","C0XF2N",481,0)
1446 . K C0XFDA2
1447"RTN","C0XF2N",482,0)
1448 Q ZIEN
1449"RTN","C0XF2N",483,0)
1450 ;
1451"RTN","C0XF2N",484,0)
1452IENOFA(ZOUTARY,INARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
1453"RTN","C0XF2N",485,0)
1454 ; OR ADD THEM IF
1455"RTN","C0XF2N",486,0)
1456 ; MISSING. ZINARY AND ZOUTARY ARE PASSED BY REFERENCE
1457"RTN","C0XF2N",487,0)
1458 ; ZINARY LOOKS LIKE ZINARY("VAR","VAL")=""
1459"RTN","C0XF2N",488,0)
1460 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
1461"RTN","C0XF2N",489,0)
1462 I '$D(FARY) D ;
1463"RTN","C0XF2N",490,0)
1464 . D INITFARY("C0XFARY")
1465"RTN","C0XF2N",491,0)
1466 . S FARY="C0XFARY"
1467"RTN","C0XF2N",492,0)
1468 K ZOUTARY ; START WITH CLEAN RESULTS
1469"RTN","C0XF2N",493,0)
1470 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
1471"RTN","C0XF2N",494,0)
1472 I '$D(C0XVOC) D VOCINIT^C0XUTIL
1473"RTN","C0XF2N",495,0)
1474 N ZINARY
1475"RTN","C0XF2N",496,0)
1476 N ZI S ZI=""
1477"RTN","C0XF2N",497,0)
1478 F S ZI=$O(INARY(ZI)) Q:ZI="" D ;
1479"RTN","C0XF2N",498,0)
1480 . N ZK
1481"RTN","C0XF2N",499,0)
1482 . S ZK=$O(INARY(ZI,""))
1483"RTN","C0XF2N",500,0)
1484 . S ZINARY($$EXT^C0XUTIL(ZI),$$EXT^C0XUTIL(ZK))=""
1485"RTN","C0XF2N",501,0)
1486 N ZV,ZIEN,ABORT
1487"RTN","C0XF2N",502,0)
1488 S ABORT=0
1489"RTN","C0XF2N",503,0)
1490 N ZCNT S ZCNT=0
1491"RTN","C0XF2N",504,0)
1492 F S ZI=$O(ZINARY(ZI)) Q:(ZI="")!+ABORT D ; LOOK FOR MISSING STRINGS
1493"RTN","C0XF2N",505,0)
1494 . S ZV=$O(ZINARY(ZI,""))
1495"RTN","C0XF2N",506,0)
1496 . I ZV="" S ABORT=1 Q ; abandon quad -- missing an entry
1497"RTN","C0XF2N",507,0)
1498 . I ZV["^" S ZV=$TR(ZV,"^","|")
1499"RTN","C0XF2N",508,0)
1500 . I $O(@C0XSN@("B",ZV,""))="" D ;
1501"RTN","C0XF2N",509,0)
1502 . . S ZCNT=ZCNT+1
1503"RTN","C0XF2N",510,0)
1504 . . S C0XFDA2(C0XSFN,"+"_ZCNT_",",.01)=ZV
1505"RTN","C0XF2N",511,0)
1506 I +ABORT Q ;
1507"RTN","C0XF2N",512,0)
1508 I $D(C0XFDA2) D ;
1509"RTN","C0XF2N",513,0)
1510 . D UPDIE(.C0XFDA2) ; ADD MISSING STRINGS
1511"RTN","C0XF2N",514,0)
1512 . K C0XFDA2 ; CLEAN UP
1513"RTN","C0XF2N",515,0)
1514 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOW GET ALL IENS
1515"RTN","C0XF2N",516,0)
1516 . S ZV=$O(ZINARY(ZI,""))
1517"RTN","C0XF2N",517,0)
1518 . I ZV["^" S ZV=$TR(ZV,"^","|")
1519"RTN","C0XF2N",518,0)
1520 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
1521"RTN","C0XF2N",519,0)
1522 . I ZIEN="" D ;
1523"RTN","C0XF2N",520,0)
1524 . . W !,"ERROR ADDING STRING: ",ZV
1525"RTN","C0XF2N",521,0)
1526 . . B
1527"RTN","C0XF2N",522,0)
1528 . S ZOUTARY("IEN",ZI,ZIEN)=""
1529"RTN","C0XF2N",523,0)
1530 Q
1531"RTN","C0XF2N",524,0)
1532 ;
1533"RTN","C0XF2N",525,0)
1534ADDINN(ZG,ZS,ZARY) ; ADD IF NOT NULL
1535"RTN","C0XF2N",526,0)
1536 ; ZG IS THE GRAPH NAME, PASSED BY VALUE
1537"RTN","C0XF2N",527,0)
1538 ; ZS IS THE SUBJECT, PASSED BY VALUE
1539"RTN","C0XF2N",528,0)
1540 ; ZARY IS AN ARRAY, PASSED BY REFERENCE OF THE PREDICATE AND OBJECT
1541"RTN","C0XF2N",529,0)
1542 ; FORMAT IS ZARY(PRED)=OBJ
1543"RTN","C0XF2N",530,0)
1544 N ZI S ZI=""
1545"RTN","C0XF2N",531,0)
1546 F S ZI=$O(ZARY(ZI)) Q:ZI="" D ;
1547"RTN","C0XF2N",532,0)
1548 . ;I ZARY(ZI)="" S ZARY(ZI)="NULL"
1549"RTN","C0XF2N",533,0)
1550 . I ZARY(ZI)'="" D ;
1551"RTN","C0XF2N",534,0)
1552 . . D ADD^C0XF2N(ZG,ZS,ZI,ZARY(ZI))
1553"RTN","C0XF2N",535,0)
1554 . . I $D(DEBUG) W !,"ADDING",ZI," ",ZARY(ZI)
1555"RTN","C0XF2N",536,0)
1556 ;ZWR ZARY
1557"RTN","C0XF2N",537,0)
1558 Q
1559"RTN","C0XF2N",538,0)
1560 ;
1561"RTN","C0XF2N",539,0)
1562BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
1563"RTN","C0XF2N",540,0)
1564 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
1565"RTN","C0XF2N",541,0)
1566 ; QUITS IF FILE IS NOT 172.101
1567"RTN","C0XF2N",542,0)
1568 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
1569"RTN","C0XF2N",543,0)
1570 ; QUITS IF FIRST ENTRY IS NOT IENS 1
1571"RTN","C0XF2N",544,0)
1572 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
1573"RTN","C0XF2N",545,0)
1574 ; ZBFDA IS PASSED BY REFERENCE
1575"RTN","C0XF2N",546,0)
1576 ;
1577"RTN","C0XF2N",547,0)
1578 ; -- reserves a block of iens from file 172.101 by locking the zero node
1579"RTN","C0XF2N",548,0)
1580 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
1581"RTN","C0XF2N",549,0)
1582 ; -- then unlocking to minimize the duration of the lock
1583"RTN","C0XF2N",550,0)
1584 ;
1585"RTN","C0XF2N",551,0)
1586 I $D(DEBUG) W !,"USING BULKLOAD"
1587"RTN","C0XF2N",552,0)
1588 I '$D(ZBFDA) Q ; EMPTY FDA
1589"RTN","C0XF2N",553,0)
1590 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
1591"RTN","C0XF2N",554,0)
1592 N ZCNT,ZP3,ZP4
1593"RTN","C0XF2N",555,0)
1594 ; -- find the number of nodes to insert
1595"RTN","C0XF2N",556,0)
1596 S ZCNT=$O(ZBFDA(172.101,""),-1)
1597"RTN","C0XF2N",557,0)
1598 I ZCNT="" D Q ;
1599"RTN","C0XF2N",558,0)
1600 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
1601"RTN","C0XF2N",559,0)
1602 . B
1603"RTN","C0XF2N",560,0)
1604 ; -- lock the zero node and reserve a block of iens to insert
1605"RTN","C0XF2N",561,0)
1606 I $D(DEBUG) W !,"LOCKING ZERO NODE"
1607"RTN","C0XF2N",562,0)
1608 LOCK +^C0X(101,0)
1609"RTN","C0XF2N",563,0)
1610 S ZP3=$P(^C0X(101,0),U,3)
1611"RTN","C0XF2N",564,0)
1612 S ZP4=$P(^C0X(101,0),U,4)
1613"RTN","C0XF2N",565,0)
1614 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
1615"RTN","C0XF2N",566,0)
1616 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
1617"RTN","C0XF2N",567,0)
1618 LOCK -^C0X(101,0)
1619"RTN","C0XF2N",568,0)
1620 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
1621"RTN","C0XF2N",569,0)
1622 S ZBASE=ZP3 ; the last ien in the file
1623"RTN","C0XF2N",570,0)
1624 I $D(DEBUG) W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
1625"RTN","C0XF2N",571,0)
1626 I $D(DEBUG) W !,$$NOW^XLFDT
1627"RTN","C0XF2N",572,0)
1628 S ZI=""
1629"RTN","C0XF2N",573,0)
1630 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
1631"RTN","C0XF2N",574,0)
1632 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
1633"RTN","C0XF2N",575,0)
1634 . I ZN="" D BLKERR Q ;
1635"RTN","C0XF2N",576,0)
1636 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
1637"RTN","C0XF2N",577,0)
1638 . I ZG="" D BLKERR Q ;
1639"RTN","C0XF2N",578,0)
1640 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
1641"RTN","C0XF2N",579,0)
1642 . I ZS="" D BLKERR Q ;
1643"RTN","C0XF2N",580,0)
1644 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
1645"RTN","C0XF2N",581,0)
1646 . I ZP="" D BLKERR Q ;
1647"RTN","C0XF2N",582,0)
1648 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
1649"RTN","C0XF2N",583,0)
1650 . I ZO="" D BLKERR Q ;
1651"RTN","C0XF2N",584,0)
1652 . S ZIEN=ZI+ZBASE ; the new ien
1653"RTN","C0XF2N",585,0)
1654 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
1655"RTN","C0XF2N",586,0)
1656 . D INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO)
1657"RTN","C0XF2N",587,0)
1658 Q
1659"RTN","C0XF2N",588,0)
1660 ;
1661"RTN","C0XF2N",589,0)
1662INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO) ; HARD SET THE INDEX FOR ONE ENTRY
1663"RTN","C0XF2N",590,0)
1664 S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
1665"RTN","C0XF2N",591,0)
1666 S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
1667"RTN","C0XF2N",592,0)
1668 S ^C0X(101,"SPO",ZS,ZP,ZO,ZIEN)=""
1669"RTN","C0XF2N",593,0)
1670 S ^C0X(101,"SOP",ZS,ZO,ZP,ZIEN)=""
1671"RTN","C0XF2N",594,0)
1672 S ^C0X(101,"OPS",ZO,ZP,ZS,ZIEN)=""
1673"RTN","C0XF2N",595,0)
1674 S ^C0X(101,"OSP",ZO,ZS,ZP,ZIEN)=""
1675"RTN","C0XF2N",596,0)
1676 S ^C0X(101,"PSO",ZP,ZS,ZO,ZIEN)=""
1677"RTN","C0XF2N",597,0)
1678 S ^C0X(101,"POS",ZP,ZO,ZS,ZIEN)=""
1679"RTN","C0XF2N",598,0)
1680 S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS,ZIEN)=""
1681"RTN","C0XF2N",599,0)
1682 S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP,ZIEN)=""
1683"RTN","C0XF2N",600,0)
1684 S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO,ZIEN)=""
1685"RTN","C0XF2N",601,0)
1686 S ^C0X(101,"GPOS",ZG,ZP,ZO,ZS,ZIEN)=""
1687"RTN","C0XF2N",602,0)
1688 S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO,ZIEN)=""
1689"RTN","C0XF2N",603,0)
1690 S ^C0X(101,"GSOP",ZG,ZS,ZO,ZP,ZIEN)=""
1691"RTN","C0XF2N",604,0)
1692 Q
1693"RTN","C0XF2N",605,0)
1694 ;
1695"RTN","C0XF2N",606,0)
1696REINDEX ; REINDEX THE ^C0X(101, TRIPLE STORE
1697"RTN","C0XF2N",607,0)
1698 K ^C0X(101,"B")
1699"RTN","C0XF2N",608,0)
1700 K ^C0X(101,"G")
1701"RTN","C0XF2N",609,0)
1702 K ^C0X(101,"SPO")
1703"RTN","C0XF2N",610,0)
1704 K ^C0X(101,"SOP")
1705"RTN","C0XF2N",611,0)
1706 K ^C0X(101,"OPS")
1707"RTN","C0XF2N",612,0)
1708 K ^C0X(101,"OSP")
1709"RTN","C0XF2N",613,0)
1710 K ^C0X(101,"PSO")
1711"RTN","C0XF2N",614,0)
1712 K ^C0X(101,"POS")
1713"RTN","C0XF2N",615,0)
1714 K ^C0X(101,"GOPS")
1715"RTN","C0XF2N",616,0)
1716 K ^C0X(101,"GOSP")
1717"RTN","C0XF2N",617,0)
1718 K ^C0X(101,"GPSO")
1719"RTN","C0XF2N",618,0)
1720 K ^C0X(101,"GPOS")
1721"RTN","C0XF2N",619,0)
1722 K ^C0X(101,"GSPO")
1723"RTN","C0XF2N",620,0)
1724 K ^C0X(101,"GSOP")
1725"RTN","C0XF2N",621,0)
1726 N ZIEN,ZZ
1727"RTN","C0XF2N",622,0)
1728 S ZIEN=0
1729"RTN","C0XF2N",623,0)
1730 F S ZIEN=$O(^C0X(101,ZIEN)) Q:+ZIEN=0 D ; FOR EACH NODE
1731"RTN","C0XF2N",624,0)
1732 . S ZZ=$G(^C0X(101,ZIEN,0))
1733"RTN","C0XF2N",625,0)
1734 . I ZZ="" D Q ;
1735"RTN","C0XF2N",626,0)
1736 . . W !,"ERROR REINDEXING NODE ",ZI
1737"RTN","C0XF2N",627,0)
1738 . S ZN=$P(ZZ,"^",1)
1739"RTN","C0XF2N",628,0)
1740 . S ZG=$P(ZZ,"^",2)
1741"RTN","C0XF2N",629,0)
1742 . S ZS=$P(ZZ,"^",3)
1743"RTN","C0XF2N",630,0)
1744 . S ZP=$P(ZZ,"^",4)
1745"RTN","C0XF2N",631,0)
1746 . S ZO=$P(ZZ,"^",5)
1747"RTN","C0XF2N",632,0)
1748 . D INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO)
1749"RTN","C0XF2N",633,0)
1750 Q
1751"RTN","C0XF2N",634,0)
1752 ;
1753"RTN","C0XF2N",635,0)
1754BLKERR ;
1755"RTN","C0XF2N",636,0)
1756 W !,"ERROR IN BULK LOAD"
1757"RTN","C0XF2N",637,0)
1758 S C0XERR="ERROR IN BULK LOAD"
1759"RTN","C0XF2N",638,0)
1760 S C0XLOC=ZBFDA(ZI)
1761"RTN","C0XF2N",639,0)
1762 D ^%ZTER ; report the error
1763"RTN","C0XF2N",640,0)
1764 B
1765"RTN","C0XF2N",641,0)
1766 Q
1767"RTN","C0XF2N",642,0)
1768 ;
1769"RTN","C0XF2N",643,0)
1770DELGRAPH(ZGRF,FARY) ; delete a graph from the triplestore
1771"RTN","C0XF2N",644,0)
1772 ; (doesn't delete strings)
1773"RTN","C0XF2N",645,0)
1774 ;
1775"RTN","C0XF2N",646,0)
1776 I '$D(FARY) D ;
1777"RTN","C0XF2N",647,0)
1778 . D INITFARY("C0XFARY")
1779"RTN","C0XF2N",648,0)
1780 . S FARY="C0XFARY"
1781"RTN","C0XF2N",649,0)
1782 D USEFARY(FARY)
1783"RTN","C0XF2N",650,0)
1784 N ZGRAPH
1785"RTN","C0XF2N",651,0)
1786 D TING(.ZGRAPH,ZGRF,FARY)
1787"RTN","C0XF2N",652,0)
1788 I '$D(ZGRAPH) D Q ;
1789"RTN","C0XF2N",653,0)
1790 . I $D(DEBUG) W !,"NO TRIPLES IN GRAPH"
1791"RTN","C0XF2N",654,0)
1792 K C0XFDA
1793"RTN","C0XF2N",655,0)
1794 N ZI S ZI=""
1795"RTN","C0XF2N",656,0)
1796 F S ZI=$O(ZGRAPH(ZI)) Q:ZI="" D ;
1797"RTN","C0XF2N",657,0)
1798 . S C0XFDA(C0XTFN,ZI_",",.01)="@"
1799"RTN","C0XF2N",658,0)
1800 D UPDIE(.C0XFDA)
1801"RTN","C0XF2N",659,0)
1802 Q
1803"RTN","C0XF2N",660,0)
1804 ;
1805"RTN","C0XF2N",661,0)
1806TING(ZRTN,ZGRF,FARY) ; return the iens for graph ZGRF
1807"RTN","C0XF2N",662,0)
1808 ; ZRTN is passed by reference
1809"RTN","C0XF2N",663,0)
1810 I '$D(FARY) D ;
1811"RTN","C0XF2N",664,0)
1812 . D INITFARY("C0XFARY")
1813"RTN","C0XF2N",665,0)
1814 . S FARY="C0XFARY"
1815"RTN","C0XF2N",666,0)
1816 D USEFARY(FARY)
1817"RTN","C0XF2N",667,0)
1818 K ZRTN
1819"RTN","C0XF2N",668,0)
1820 N ZI,ZG S ZI=""
1821"RTN","C0XF2N",669,0)
1822 S ZG=$$IENOF^C0XGET1(ZGRF)
1823"RTN","C0XF2N",670,0)
1824 I ZG="" D Q ;
1825"RTN","C0XF2N",671,0)
1826 . I $D(DEBUG) W !,"ERROR GRAPH NOT FOUND"
1827"RTN","C0XF2N",672,0)
1828 I '$D(@C0XTN@("G",ZG)) Q ;
1829"RTN","C0XF2N",673,0)
1830 F S ZI=$O(@C0XTN@("G",ZG,ZI)) Q:ZI="" D ;
1831"RTN","C0XF2N",674,0)
1832 . S ZRTN(ZI)=""
1833"RTN","C0XF2N",675,0)
1834 Q
1835"RTN","C0XF2N",676,0)
1836 ;
1837"RTN","C0XF2N",677,0)
1838SWUPDIE(ZFDA) ; SWITCH BETWEEN UPDIE AND BULKLOAD
1839"RTN","C0XF2N",678,0)
1840 I $G(BLKLOAD)=1 D ; bulk load
1841"RTN","C0XF2N",679,0)
1842 . D BULKLOAD(.ZFDA) ; bulk load the batch
1843"RTN","C0XF2N",680,0)
1844 E D ; no bulk load
1845"RTN","C0XF2N",681,0)
1846 . D UPDIE(.ZFDA)
1847"RTN","C0XF2N",682,0)
1848 K ZFDA
1849"RTN","C0XF2N",683,0)
1850 Q
1851"RTN","C0XF2N",684,0)
1852 ;
1853"RTN","C0XF2N",685,0)
1854UPDIE(ZFDA) ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
1855"RTN","C0XF2N",686,0)
1856 ; ZFDA IS PASSED BY REFERENCE
1857"RTN","C0XF2N",687,0)
1858 ;ZWR ZFDA
1859"RTN","C0XF2N",688,0)
1860 ;B
1861"RTN","C0XF2N",689,0)
1862 K ZERR
1863"RTN","C0XF2N",690,0)
1864 D CLEAN^DILF
1865"RTN","C0XF2N",691,0)
1866 D UPDATE^DIE("","ZFDA","","ZERR")
1867"RTN","C0XF2N",692,0)
1868 I $D(ZERR) S ZZERR=ZZERR ; ZZERR DOESN'T EXIST,
1869"RTN","C0XF2N",693,0)
1870 ; INVOKE THE ERROR TRAP IF TASKED
1871"RTN","C0XF2N",694,0)
1872 ;. W "ERROR",!
1873"RTN","C0XF2N",695,0)
1874 ;. ZWR ZERR
1875"RTN","C0XF2N",696,0)
1876 ;. B
1877"RTN","C0XF2N",697,0)
1878 K ZFDA
1879"RTN","C0XF2N",698,0)
1880 Q
1881"RTN","C0XF2N",699,0)
1882 ;
1883"RTN","C0XINIT")
18840^4^B21176787
1885"RTN","C0XINIT",1,0)
1886C0XINIT ; GPL - Fileman Triples initialization routine ;10/13/11 17:05
1887"RTN","C0XINIT",2,0)
1888 ;;0.1;C0X;nopatch;noreleasedate;Build 8
1889"RTN","C0XINIT",3,0)
1890 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
1891"RTN","C0XINIT",4,0)
1892 ;General Public License See attached copy of the License.
1893"RTN","C0XINIT",5,0)
1894 ;
1895"RTN","C0XINIT",6,0)
1896 ;This program is free software; you can redistribute it and/or modify
1897"RTN","C0XINIT",7,0)
1898 ;it under the terms of the GNU General Public License as published by
1899"RTN","C0XINIT",8,0)
1900 ;the Free Software Foundation; either version 2 of the License, or
1901"RTN","C0XINIT",9,0)
1902 ;(at your option) any later version.
1903"RTN","C0XINIT",10,0)
1904 ;
1905"RTN","C0XINIT",11,0)
1906 ;This program is distributed in the hope that it will be useful,
1907"RTN","C0XINIT",12,0)
1908 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
1909"RTN","C0XINIT",13,0)
1910 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1911"RTN","C0XINIT",14,0)
1912 ;GNU General Public License for more details.
1913"RTN","C0XINIT",15,0)
1914 ;
1915"RTN","C0XINIT",16,0)
1916 ;You should have received a copy of the GNU General Public License along
1917"RTN","C0XINIT",17,0)
1918 ;with this program; if not, write to the Free Software Foundation, Inc.,
1919"RTN","C0XINIT",18,0)
1920 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1921"RTN","C0XINIT",19,0)
1922 ;
1923"RTN","C0XINIT",20,0)
1924 Q
1925"RTN","C0XINIT",21,0)
1926 ;
1927"RTN","C0XINIT",22,0)
1928CLEAR ; DELETE THE FILESTORE
1929"RTN","C0XINIT",23,0)
1930 K ^C0X(101)
1931"RTN","C0XINIT",24,0)
1932 K ^C0X(201)
1933"RTN","C0XINIT",25,0)
1934 S ^C0X(101,0)="C0X TRIPLE^172.101I^^"
1935"RTN","C0XINIT",26,0)
1936 S ^C0X(201,0)="C0X STRING^172.201I^^"
1937"RTN","C0XINIT",27,0)
1938 Q
1939"RTN","C0XINIT",28,0)
1940 ;
1941"RTN","C0XINIT",29,0)
1942INIT ; INITIALIZE THE TRIPLE STORE - THIS DELETES THE GLOBALS AND
1943"RTN","C0XINIT",30,0)
1944 ; START ALL OVER... USE WITH CAUTION
1945"RTN","C0XINIT",31,0)
1946 ;
1947"RTN","C0XINIT",32,0)
1948 ; -- we should be more sophisticated here.. at least warn the user
1949"RTN","C0XINIT",33,0)
1950 ; -- and give them a chance to cancel
1951"RTN","C0XINIT",34,0)
1952 ;
1953"RTN","C0XINIT",35,0)
1954 D CLEAR ; DELETE THE TRIPLESTORE
1955"RTN","C0XINIT",36,0)
1956 ;
1957"RTN","C0XINIT",37,0)
1958 ; -- we are assuming that FARY is set up properly in C0XF2N
1959"RTN","C0XINIT",38,0)
1960 ; -- with repect to the default directory and the defaut fileman files
1961"RTN","C0XINIT",39,0)
1962 ; -- here's what it is now: "/home/vista/gpl/fmts/trunk/samples/"
1963"RTN","C0XINIT",40,0)
1964 ; -- that means that all the sample files will look like:
1965"RTN","C0XINIT",41,0)
1966 ; --- qds/QDS_0001.rdf
1967"RTN","C0XINIT",42,0)
1968 ; --- smart-rdf-in/small.rdf
1969"RTN","C0XINIT",43,0)
1970 ;
1971"RTN","C0XINIT",44,0)
1972 S FARY="C0XFARY"
1973"RTN","C0XINIT",45,0)
1974 D INITFARY^C0XF2N(FARY)
1975"RTN","C0XINIT",46,0)
1976 D USEFARY^C0XF2N(FARY)
1977"RTN","C0XINIT",47,0)
1978 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/smart-rdf-in/" ;
1979"RTN","C0XINIT",48,0)
1980 D USEFARY^C0XF2N(FARY)
1981"RTN","C0XINIT",49,0)
1982 S SMART(1)="cole-susan.rdf"
1983"RTN","C0XINIT",50,0)
1984 S SMART(2)="jones-cynthia.rdf"
1985"RTN","C0XINIT",51,0)
1986 S SMART(3)="small.rdf"
1987"RTN","C0XINIT",52,0)
1988 S SMART(4)="collins-frank.rdf"
1989"RTN","C0XINIT",53,0)
1990 S SMART(5)="kelly-david.rdf"
1991"RTN","C0XINIT",54,0)
1992 S SMART(6)="smith-maria.rdf"
1993"RTN","C0XINIT",55,0)
1994 S SMART(7)="ford-shirley.rdf"
1995"RTN","C0XINIT",56,0)
1996 S SMART(8)="morgan-jason.rdf"
1997"RTN","C0XINIT",57,0)
1998 S SMART(9)="west-lisa.rdf"
1999"RTN","C0XINIT",58,0)
2000 S SMART(10)="gracia-paul.rdf"
2001"RTN","C0XINIT",59,0)
2002 S SMART(11)="reed-richard.rdf"
2003"RTN","C0XINIT",60,0)
2004 S SMART(12)="west-sandra.rdf"
2005"RTN","C0XINIT",61,0)
2006 S SMART(13)="jackson-jessica.rdf"
2007"RTN","C0XINIT",62,0)
2008 S SMART(14)="small-allergies.rdf"
2009"RTN","C0XINIT",63,0)
2010 S SMART(15)="white-patricia.rdf"
2011"RTN","C0XINIT",64,0)
2012 N ZI S ZI=""
2013"RTN","C0XINIT",65,0)
2014 F S ZI=$O(SMART(ZI)) Q:ZI="" D ; for each smart file
2015"RTN","C0XINIT",66,0)
2016 . D IMPORT^C0XF2N(SMART(ZI),C0XDIR,,FARY) ; import to the triplestore
2017"RTN","C0XINIT",67,0)
2018 S FARY="C0XFARY"
2019"RTN","C0XINIT",68,0)
2020 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/qds/"
2021"RTN","C0XINIT",69,0)
2022 D USEFARY^C0XF2N(FARY)
2023"RTN","C0XINIT",70,0)
2024 D IMPORT^C0XF2N("QDS_0001.rdf",C0XDIR,,FARY)
2025"RTN","C0XINIT",71,0)
2026 D IMPORT^C0XF2N("QDS_0028b.rdf",C0XDIR,,FARY)
2027"RTN","C0XINIT",72,0)
2028 D IMPORT^C0XF2N("QDS_0052.rdf",C0XDIR,,FARY)
2029"RTN","C0XINIT",73,0)
2030 D IMPORT^C0XF2N("QDS_0073.rdf",C0XDIR,,FARY)
2031"RTN","C0XINIT",74,0)
2032 D IMPORT^C0XF2N("QDS_0385.rdf",C0XDIR,,FARY)
2033"RTN","C0XINIT",75,0)
2034 D IMPORT^C0XF2N("QDS_0002.rdf",C0XDIR,,FARY)
2035"RTN","C0XINIT",76,0)
2036 D IMPORT^C0XF2N("QDS_0031.rdf",C0XDIR,,FARY)
2037"RTN","C0XINIT",77,0)
2038 D IMPORT^C0XF2N("QDS_0055.rdf",C0XDIR,,FARY)
2039"RTN","C0XINIT",78,0)
2040 D IMPORT^C0XF2N("QDS_0074.rdf",C0XDIR,,FARY)
2041"RTN","C0XINIT",79,0)
2042 D IMPORT^C0XF2N("QDS_0387.rdf",C0XDIR,,FARY)
2043"RTN","C0XINIT",80,0)
2044 D IMPORT^C0XF2N("QDS_0004.rdf",C0XDIR,,FARY)
2045"RTN","C0XINIT",81,0)
2046 D IMPORT^C0XF2N("QDS_0032.rdf",C0XDIR,,FARY)
2047"RTN","C0XINIT",82,0)
2048 D IMPORT^C0XF2N("QDS_0056.rdf",C0XDIR,,FARY)
2049"RTN","C0XINIT",83,0)
2050 D IMPORT^C0XF2N("QDS_0075.rdf",C0XDIR,,FARY)
2051"RTN","C0XINIT",84,0)
2052 D IMPORT^C0XF2N("QDS_0389.rdf",C0XDIR,,FARY)
2053"RTN","C0XINIT",85,0)
2054 D IMPORT^C0XF2N("QDS_0012.rdf",C0XDIR,,FARY)
2055"RTN","C0XINIT",86,0)
2056 D IMPORT^C0XF2N("QDS_0033.rdf",C0XDIR,,FARY)
2057"RTN","C0XINIT",87,0)
2058 D IMPORT^C0XF2N("QDS_0059.rdf",C0XDIR,,FARY)
2059"RTN","C0XINIT",88,0)
2060 D IMPORT^C0XF2N("QDS_0081.rdf",C0XDIR,,FARY)
2061"RTN","C0XINIT",89,0)
2062 D IMPORT^C0XF2N("QDS_0421.rdf",C0XDIR,,FARY)
2063"RTN","C0XINIT",90,0)
2064 D IMPORT^C0XF2N("QDS_0013.rdf",C0XDIR,,FARY)
2065"RTN","C0XINIT",91,0)
2066 D IMPORT^C0XF2N("QDS_0034.rdf",C0XDIR,,FARY)
2067"RTN","C0XINIT",92,0)
2068 D IMPORT^C0XF2N("QDS_0061.rdf",C0XDIR,,FARY)
2069"RTN","C0XINIT",93,0)
2070 D IMPORT^C0XF2N("QDS_0083.rdf",C0XDIR,,FARY)
2071"RTN","C0XINIT",94,0)
2072 D IMPORT^C0XF2N("QDS_0575.rdf",C0XDIR,,FARY)
2073"RTN","C0XINIT",95,0)
2074 D IMPORT^C0XF2N("QDS_0014.rdf",C0XDIR,,FARY)
2075"RTN","C0XINIT",96,0)
2076 D IMPORT^C0XF2N("QDS_0036.rdf",C0XDIR,,FARY)
2077"RTN","C0XINIT",97,0)
2078 D IMPORT^C0XF2N("QDS_0062.rdf",C0XDIR,,FARY)
2079"RTN","C0XINIT",98,0)
2080 D IMPORT^C0XF2N("QDS_0084.rdf",C0XDIR,,FARY)
2081"RTN","C0XINIT",99,0)
2082 D IMPORT^C0XF2N("QDS_0018.rdf",C0XDIR,,FARY)
2083"RTN","C0XINIT",100,0)
2084 D IMPORT^C0XF2N("QDS_0038.rdf",C0XDIR,,FARY)
2085"RTN","C0XINIT",101,0)
2086 D IMPORT^C0XF2N("QDS_0064.rdf",C0XDIR,,FARY)
2087"RTN","C0XINIT",102,0)
2088 D IMPORT^C0XF2N("QDS_0086.rdf",C0XDIR,,FARY)
2089"RTN","C0XINIT",103,0)
2090 D IMPORT^C0XF2N("QDS_0024.rdf",C0XDIR,,FARY)
2091"RTN","C0XINIT",104,0)
2092 D IMPORT^C0XF2N("QDS_0041.rdf",C0XDIR,,FARY)
2093"RTN","C0XINIT",105,0)
2094 D IMPORT^C0XF2N("QDS_0067.rdf",C0XDIR,,FARY)
2095"RTN","C0XINIT",106,0)
2096 D IMPORT^C0XF2N("QDS_0088.rdf",C0XDIR,,FARY)
2097"RTN","C0XINIT",107,0)
2098 D IMPORT^C0XF2N("QDS_0027.rdf",C0XDIR,,FARY)
2099"RTN","C0XINIT",108,0)
2100 D IMPORT^C0XF2N("QDS_0043.rdf",C0XDIR,,FARY)
2101"RTN","C0XINIT",109,0)
2102 D IMPORT^C0XF2N("QDS_0068.rdf",C0XDIR,,FARY)
2103"RTN","C0XINIT",110,0)
2104 D IMPORT^C0XF2N("QDS_0089.rdf",C0XDIR,,FARY)
2105"RTN","C0XINIT",111,0)
2106 D IMPORT^C0XF2N("QDS_0028a.rdf",C0XDIR,,FARY)
2107"RTN","C0XINIT",112,0)
2108 D IMPORT^C0XF2N("QDS_0047.rdf",C0XDIR,,FARY)
2109"RTN","C0XINIT",113,0)
2110 D IMPORT^C0XF2N("QDS_0070.rdf",C0XDIR,,FARY)
2111"RTN","C0XINIT",114,0)
2112 D IMPORT^C0XF2N("QDS_0105.rdf",C0XDIR,,FARY)
2113"RTN","C0XINIT",115,0)
2114 ;D IMPORT^C0XF2N("qds.rdf",C0XDIR,,FARY)
2115"RTN","C0XINIT",116,0)
2116 Q
2117"RTN","C0XINIT",117,0)
2118 ;
2119"RTN","C0XMAIN")
21200^1^B115393527
2121"RTN","C0XMAIN",1,0)
2122C0XMAIN ; GPL - Fileman Triples entry point routine ;10/13/11 17:05
2123"RTN","C0XMAIN",2,0)
2124 ;;0.1;C0X;nopatch;noreleasedate;Build 8
2125"RTN","C0XMAIN",3,0)
2126 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
2127"RTN","C0XMAIN",4,0)
2128 ;General Public License See attached copy of the License.
2129"RTN","C0XMAIN",5,0)
2130 ;
2131"RTN","C0XMAIN",6,0)
2132 ;This program is free software; you can redistribute it and/or modify
2133"RTN","C0XMAIN",7,0)
2134 ;it under the terms of the GNU General Public License as published by
2135"RTN","C0XMAIN",8,0)
2136 ;the Free Software Foundation; either version 2 of the License, or
2137"RTN","C0XMAIN",9,0)
2138 ;(at your option) any later version.
2139"RTN","C0XMAIN",10,0)
2140 ;
2141"RTN","C0XMAIN",11,0)
2142 ;This program is distributed in the hope that it will be useful,
2143"RTN","C0XMAIN",12,0)
2144 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
2145"RTN","C0XMAIN",13,0)
2146 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2147"RTN","C0XMAIN",14,0)
2148 ;GNU General Public License for more details.
2149"RTN","C0XMAIN",15,0)
2150 ;
2151"RTN","C0XMAIN",16,0)
2152 ;You should have received a copy of the GNU General Public License along
2153"RTN","C0XMAIN",17,0)
2154 ;with this program; if not, write to the Free Software Foundation, Inc.,
2155"RTN","C0XMAIN",18,0)
2156 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2157"RTN","C0XMAIN",19,0)
2158 ;
2159"RTN","C0XMAIN",20,0)
2160 Q
2161"RTN","C0XMAIN",21,0)
2162 ;
2163"RTN","C0XMAIN",22,0)
2164INITFARY(ZFARY) ; INITIALIZE FILE NUMBERS AND OTHER USEFUL THINGS
2165"RTN","C0XMAIN",23,0)
2166 ; FOR THE DEFAULT TRIPLE STORE. USE OTHER VALUES FOR SUPPORTING ADDITIONAL
2167"RTN","C0XMAIN",24,0)
2168 ; TRIPLE STORES
2169"RTN","C0XMAIN",25,0)
2170 S @ZFARY@("C0XTFN")=172.101 ; TRIPLES FILE NUMBER
2171"RTN","C0XMAIN",26,0)
2172 S @ZFARY@("C0XSFN")=172.201 ; TRIPLES STRINGS FILE NUMBER
2173"RTN","C0XMAIN",27,0)
2174 S @ZFARY@("C0XTN")=$NA(^C0X(101)) ; TRIPLES GLOBAL NAME
2175"RTN","C0XMAIN",28,0)
2176 S @ZFARY@("C0XSN")=$NA(^C0X(201)) ; STRING FILE GLOBAL NAME
2177"RTN","C0XMAIN",29,0)
2178 ;S @ZFARY@("C0XDIR")="/home/glilly/all_smart_patient_data/smart-rdf/"
2179"RTN","C0XMAIN",30,0)
2180 S @ZFARY@("C0XDIR")="/home/george/fmts/trunk/samples/"
2181"RTN","C0XMAIN",31,0)
2182 D USEFARY(ZFARY)
2183"RTN","C0XMAIN",32,0)
2184 Q
2185"RTN","C0XMAIN",33,0)
2186 ;
2187"RTN","C0XMAIN",34,0)
2188USEFARY(ZFARY) ; INITIALIZES VARIABLES SAVED IN ARRAY ZFARY
2189"RTN","C0XMAIN",35,0)
2190 N ZI S ZI=""
2191"RTN","C0XMAIN",36,0)
2192 F S ZI=$O(@ZFARY@(ZI)) Q:ZI="" D
2193"RTN","C0XMAIN",37,0)
2194 . ;N ZX
2195"RTN","C0XMAIN",38,0)
2196 . S ZX="S "_ZI_"="""_@ZFARY@(ZI)_""""
2197"RTN","C0XMAIN",39,0)
2198 . ;W !,ZX
2199"RTN","C0XMAIN",40,0)
2200 . X ZX
2201"RTN","C0XMAIN",41,0)
2202 Q
2203"RTN","C0XMAIN",42,0)
2204 ;
2205"RTN","C0XMAIN",43,0)
2206IMPORT(FNAME,FDIR,FURL,FARY) ; EXTRINSIC THAT READS A FILE FROM THE STANDARD
2207"RTN","C0XMAIN",44,0)
2208 ; DIRECTORY, LOADS IT INTO THE TRIPLESTORE AS TEXT, AND RETURNS THE
2209"RTN","C0XMAIN",45,0)
2210 ; NODE NAME OF THE TEXT TRIPLE
2211"RTN","C0XMAIN",46,0)
2212 ; FDIR IS THE OPTIONAL DIRECTORY (DEFAUTS TO STANDARD DIR)
2213"RTN","C0XMAIN",47,0)
2214 ; FURL IS THE OPTIONAL URI FOR ACCESSING THE FILE FROM THE TRIPLE STORE
2215"RTN","C0XMAIN",48,0)
2216 ; FARY IS THE OPTIONAL FILE ARRAY OF THE TRIPLE STORE TO USE
2217"RTN","C0XMAIN",49,0)
2218 I '$D(FARY) D ;
2219"RTN","C0XMAIN",50,0)
2220 . D INITFARY("C0XFARY")
2221"RTN","C0XMAIN",51,0)
2222 . S FARY="C0XFARY"
2223"RTN","C0XMAIN",52,0)
2224 D USEFARY(FARY)
2225"RTN","C0XMAIN",53,0)
2226 N ZD,ZTMP
2227"RTN","C0XMAIN",54,0)
2228 I '$D(FDIR) S FDIR=C0XDIR ; DIRECTORY OF THE RDF FILE
2229"RTN","C0XMAIN",55,0)
2230 I '$D(FURL) D ;
2231"RTN","C0XMAIN",56,0)
2232 . N ZN2 S ZN2=$TR(FNAME,".","_") ; REMOVE THE DOT FROM THE NAME
2233"RTN","C0XMAIN",57,0)
2234 . S FURL=FDIR_ZN2
2235"RTN","C0XMAIN",58,0)
2236 N ZTMP
2237"RTN","C0XMAIN",59,0)
2238 S ZTMP=$NA(^TMP("C0X",$J,"FILEIN",1)) ; WHERE TO PUT THE INCOMING FILE
2239"RTN","C0XMAIN",60,0)
2240 K @ZTMP ; MAKE SURE IT'S CLEAR
2241"RTN","C0XMAIN",61,0)
2242 S C0XSTART=$$NOW^XLFDT
2243"RTN","C0XMAIN",62,0)
2244 W !,"STARTED: ",C0XSTART
2245"RTN","C0XMAIN",63,0)
2246 W !,"READING IN: ",FNAME
2247"RTN","C0XMAIN",64,0)
2248 I '$$FILEIN(ZTMP,FDIR,FNAME,4) D Q ; QUIT IF NO SUCCESS
2249"RTN","C0XMAIN",65,0)
2250 . W !,"ERROR READING FILE: ",FDIR,FNAME
2251"RTN","C0XMAIN",66,0)
2252 S ZRDF=$NA(^TMP("C0X",$J,"FILEIN")) ; WITHOUT THE SUBSCRIPT
2253"RTN","C0XMAIN",67,0)
2254 W !,$O(@ZRDF@(""),-1)," LINES READ"
2255"RTN","C0XMAIN",68,0)
2256 D INSRDF(ZRDF,FURL,FARY) ; IMPORT AND PROCESS THE RDF
2257"RTN","C0XMAIN",69,0)
2258 Q
2259"RTN","C0XMAIN",70,0)
2260 ;
2261"RTN","C0XMAIN",71,0)
2262WGET(ZURL,FARY) ; GET FROM THE INTERNET AN RDF FILE AND INSERT IT
2263"RTN","C0XMAIN",72,0)
2264 ;
2265"RTN","C0XMAIN",73,0)
2266 I '$D(FARY) D ;
2267"RTN","C0XMAIN",74,0)
2268 . D INITFARY("C0XFARY")
2269"RTN","C0XMAIN",75,0)
2270 . S FARY="C0XFARY"
2271"RTN","C0XMAIN",76,0)
2272 D USEFARY(FARY)
2273"RTN","C0XMAIN",77,0)
2274 ;N ZLOC,ZTMP
2275"RTN","C0XMAIN",78,0)
2276 K ZTMP
2277"RTN","C0XMAIN",79,0)
2278 S ZLOC=$NA(^TMP("C0X","WGET",$J))
2279"RTN","C0XMAIN",80,0)
2280 S C0XSTART=$$NOW^XLFDT
2281"RTN","C0XMAIN",81,0)
2282 W !,"STARTED: ",C0XSTART
2283"RTN","C0XMAIN",82,0)
2284 W !,"DOWNLOADING: ",ZURL
2285"RTN","C0XMAIN",83,0)
2286 S OK=$$httpGET^%zewdGTM(ZURL,.ZTMP)
2287"RTN","C0XMAIN",84,0)
2288 M @ZLOC=ZTMP
2289"RTN","C0XMAIN",85,0)
2290 W !,$O(@ZLOC@(""),-1)," LINES READ"
2291"RTN","C0XMAIN",86,0)
2292 D INSRDF(ZLOC,ZURL,FARY)
2293"RTN","C0XMAIN",87,0)
2294 Q
2295"RTN","C0XMAIN",88,0)
2296 ;
2297"RTN","C0XMAIN",89,0)
2298INSRDF(ZRDF,ZNAME,FARY) ; INSERT AN RDF FILE INTO THE STORE AND PROCESS
2299"RTN","C0XMAIN",90,0)
2300 ; ZRDF IS PASSED BY NAME
2301"RTN","C0XMAIN",91,0)
2302 I '$D(FARY) D ;
2303"RTN","C0XMAIN",92,0)
2304 . D INITFARY("C0XFARY")
2305"RTN","C0XMAIN",93,0)
2306 . S FARY="C0XFARY"
2307"RTN","C0XMAIN",94,0)
2308 D USEFARY(FARY)
2309"RTN","C0XMAIN",95,0)
2310 N ZGRAPH,ZSUBJECT
2311"RTN","C0XMAIN",96,0)
2312 S ZGRAPH="_:G"_$$LKY9 ; RANDOM GRAPH NAME
2313"RTN","C0XMAIN",97,0)
2314 S ZSUBJECT=$$ANONS ; RANDOM ANOYMOUS SUBJECT
2315"RTN","C0XMAIN",98,0)
2316 D ADD(ZGRAPH,ZSUBJECT,"fmts:url",ZNAME,FARY)
2317"RTN","C0XMAIN",99,0)
2318 N ZTXTNM
2319"RTN","C0XMAIN",100,0)
2320 S ZTXTNM="_TXT_INCOMING_RDF_FILE_"_ZNAME_"_"_$$LKY9 ; NAME FOR TEXT NODE
2321"RTN","C0XMAIN",101,0)
2322 D ADD(ZGRAPH,ZSUBJECT,"fmts:rdfSource",ZTXTNM,FARY)
2323"RTN","C0XMAIN",102,0)
2324 D UPDIE(.C0XFDA) ; TRY IT OUT
2325"RTN","C0XMAIN",103,0)
2326 K C0XCNT ;RESET FOR NEXT TIME
2327"RTN","C0XMAIN",104,0)
2328 D STORETXT(ZRDF,ZTXTNM,FARY)
2329"RTN","C0XMAIN",105,0)
2330 W !,"ADDED: ",ZGRAPH," ",ZSUBJECT," fmts:rdfSource ",ZTXTNM
2331"RTN","C0XMAIN",106,0)
2332 D PROCESS(.G,ZRDF,ZNAME,ZGRAPH,FARY) ; PARSE AND INSERT THE RDF
2333"RTN","C0XMAIN",107,0)
2334 Q
2335"RTN","C0XMAIN",108,0)
2336 ;
2337"RTN","C0XMAIN",109,0)
2338STORETXT(ZTXT,ZNAME,FARY) ; STORE TEXT IN THE TRIPLESTORE AT ZNAME
2339"RTN","C0XMAIN",110,0)
2340 ;
2341"RTN","C0XMAIN",111,0)
2342 I '$D(FARY) D ;
2343"RTN","C0XMAIN",112,0)
2344 . D INITFARY("C0XFARY")
2345"RTN","C0XMAIN",113,0)
2346 . S FARY="C0XFARY"
2347"RTN","C0XMAIN",114,0)
2348 D USEFARY(FARY)
2349"RTN","C0XMAIN",115,0)
2350 N ZIEN
2351"RTN","C0XMAIN",116,0)
2352 S ZIEN=$$IENOF(ZNAME,FARY) ; GET THE IEN
2353"RTN","C0XMAIN",117,0)
2354 D CLEAN^DILF
2355"RTN","C0XMAIN",118,0)
2356 K ZERR
2357"RTN","C0XMAIN",119,0)
2358 D WP^DIE(C0XSFN,ZIEN_",",1,,ZTXT,"ZERR")
2359"RTN","C0XMAIN",120,0)
2360 I $D(ZERR) D ;
2361"RTN","C0XMAIN",121,0)
2362 . ZWR ZERR
2363"RTN","C0XMAIN",122,0)
2364 Q
2365"RTN","C0XMAIN",123,0)
2366 ;
2367"RTN","C0XMAIN",124,0)
2368GETTXT(ZRTN,ZNAME,FARY) ; RETURNS RDF SOURCE OR OTHER TEXT
2369"RTN","C0XMAIN",125,0)
2370 ; ZRTN IS PASSED BY REFERENCE
2371"RTN","C0XMAIN",126,0)
2372 I '$D(FARY) D ;
2373"RTN","C0XMAIN",127,0)
2374 . D INITFARY("C0XFARY")
2375"RTN","C0XMAIN",128,0)
2376 . S FARY="C0XFARY"
2377"RTN","C0XMAIN",129,0)
2378 D USEFARY(FARY)
2379"RTN","C0XMAIN",130,0)
2380 N ZIEN
2381"RTN","C0XMAIN",131,0)
2382 S ZIEN=$$IENOF(ZNAME)
2383"RTN","C0XMAIN",132,0)
2384 S OK=$$GET1^DIQ(C0XSFN,ZIEN_",",1,,"ZRTN")
2385"RTN","C0XMAIN",133,0)
2386 Q
2387"RTN","C0XMAIN",134,0)
2388 ;
2389"RTN","C0XMAIN",135,0)
2390WHERETXT(ZNAME,FARY) ; EXTRINSIC WHICH RETURNS THE NAME OF THE GLOBAL
2391"RTN","C0XMAIN",136,0)
2392 ; WHERE THE TEXT IS LOCATED. NAME IS THE NAME OF THE STRING
2393"RTN","C0XMAIN",137,0)
2394 I '$D(FARY) D ;
2395"RTN","C0XMAIN",138,0)
2396 . D INITFARY("C0XFARY")
2397"RTN","C0XMAIN",139,0)
2398 . S FARY="C0XFARY"
2399"RTN","C0XMAIN",140,0)
2400 D USEFARY(FARY)
2401"RTN","C0XMAIN",141,0)
2402 N ZIEN
2403"RTN","C0XMAIN",142,0)
2404 S ZIEN=$$IENOF(ZNAME)
2405"RTN","C0XMAIN",143,0)
2406 Q $NA(@C0XSN@(ZIEN,1))
2407"RTN","C0XMAIN",144,0)
2408 ;
2409"RTN","C0XMAIN",145,0)
2410FILEIN(ZINTMP,ZDIR,ZFNAME,ZLVL) ; READS A FILE INTO ZINTMP USING FTG^%ZISH
2411"RTN","C0XMAIN",146,0)
2412 ; ZINTMP IS PASSED BY NAME AND INCLUDES THE NEW SUBSCRIPT
2413"RTN","C0XMAIN",147,0)
2414 ; IE ^TMP("C0X","FILEIN",1)
2415"RTN","C0XMAIN",148,0)
2416 ; ZLVL IN THIS CASE WOULD BE 3 INCREMENTING THE 1
2417"RTN","C0XMAIN",149,0)
2418 ; EXTRINSIC WHICH RETURNS THE RESULT OF FTG^%ZISH
2419"RTN","C0XMAIN",150,0)
2420 S OK=$$FTG^%ZISH(ZDIR,FNAME,ZINTMP,ZLVL)
2421"RTN","C0XMAIN",151,0)
2422 Q OK
2423"RTN","C0XMAIN",152,0)
2424 ;
2425"RTN","C0XMAIN",153,0)
2426TESTPROC ; TEST PROCESS WITH EXISTING SMALL RDF FILE
2427"RTN","C0XMAIN",154,0)
2428 S ZIN=$NA(^TMP("C0X",12226,"FILEIN"))
2429"RTN","C0XMAIN",155,0)
2430 S ZGRAPH="/test/rdfFile"
2431"RTN","C0XMAIN",156,0)
2432 S ZM="/test/rdfFile/meta"
2433"RTN","C0XMAIN",157,0)
2434 D PROCESS(.G,ZIN,ZGRAPH,ZM)
2435"RTN","C0XMAIN",158,0)
2436 Q
2437"RTN","C0XMAIN",159,0)
2438 ;
2439"RTN","C0XMAIN",160,0)
2440PROCESS(ZRTN,ZRDF,ZGRF,ZMETA,FARY) ; PROCESS AN INCOMING RDF FILE
2441"RTN","C0XMAIN",161,0)
2442 ; ZRTN IS PASS BY REFERENCE AND RETURNS MESSAGES ABOUT THE PROCESSING
2443"RTN","C0XMAIN",162,0)
2444 ; ZRDF IS PASSED BY NAME AND IS THE GLOBAL CONTAINING THE RDF FILE
2445"RTN","C0XMAIN",163,0)
2446 ; ZGRF IS THE NAME OF THE GRAPH TO USE IN THE TRIPLE STORE FOR RESULTS
2447"RTN","C0XMAIN",164,0)
2448 ; ZMETA IS OPTIONAL AND IS THE NAME OF THE GRAPH TO STORE METADATA
2449"RTN","C0XMAIN",165,0)
2450 ;
2451"RTN","C0XMAIN",166,0)
2452 I '$D(FARY) D ;
2453"RTN","C0XMAIN",167,0)
2454 . D INITFARY("C0XFARY")
2455"RTN","C0XMAIN",168,0)
2456 . S FARY="C0XFARY"
2457"RTN","C0XMAIN",169,0)
2458 D USEFARY(FARY)
2459"RTN","C0XMAIN",170,0)
2460 ; -- first parse the rdf file with the MXML parser
2461"RTN","C0XMAIN",171,0)
2462 ;S C0XDOCID=$$PARSE^C0CNHIN(ZRDF,"C0XARRAY") ; PARSE WITH MXML
2463"RTN","C0XMAIN",172,0)
2464 S C0XDOCID=$$EN^MXMLDOM(ZRDF,"W")
2465"RTN","C0XMAIN",173,0)
2466 ; -- assign the MXLM dom global name to ZDOM
2467"RTN","C0XMAIN",174,0)
2468 S ZDOM=$NA(^TMP("MXMLDOM",$J,C0XDOCID))
2469"RTN","C0XMAIN",175,0)
2470 W !,$O(@ZDOM@(""),-1)," XML NODES PARSED"
2471"RTN","C0XMAIN",176,0)
2472 ; -- populate the metagraph to point to the graph with status unfinished
2473"RTN","C0XMAIN",177,0)
2474 S METAS=$$ANONS ; GET AN ANONOMOUS RANDOM SUBJECT
2475"RTN","C0XMAIN",178,0)
2476 I '$D(ZMETA) S ZMETA="_:G"_$$LKY9 ; RANDOM GRAPH NAME FOR METAGRAPH
2477"RTN","C0XMAIN",179,0)
2478 D ADD(ZMETA,METAS,"fmts:about",ZGRF,FARY) ; POINT THE META TO THE GRAPH
2479"RTN","C0XMAIN",180,0)
2480 D ADD(ZMETA,METAS,"fmts:status","unfinished",FARY) ; mark as unfinished
2481"RTN","C0XMAIN",181,0)
2482 ;S C0XDATE=$$FMDTOUTC^C0CUTIL($$NOW^XLFDT,"DT")
2483"RTN","C0XMAIN",182,0)
2484 S C0XDATE=$$NOW^XLFDT
2485"RTN","C0XMAIN",183,0)
2486 D ADD(ZMETA,METAS,"fmts:dateTime",C0XDATE,FARY)
2487"RTN","C0XMAIN",184,0)
2488 D UPDIE(.C0XFDA) ; commit the metagraph changes to the triple store
2489"RTN","C0XMAIN",185,0)
2490 ; --
2491"RTN","C0XMAIN",186,0)
2492 ; -- pull out the vocabularies in the RDF statement. marked with xmlns:
2493"RTN","C0XMAIN",187,0)
2494 ; -- put them in a local variable for quick reference
2495"RTN","C0XMAIN",188,0)
2496 ; -- TODO: create a graph for vocabularies and validate incoming against it
2497"RTN","C0XMAIN",189,0)
2498 ;
2499"RTN","C0XMAIN",190,0)
2500 S C0XVOC=""
2501"RTN","C0XMAIN",191,0)
2502 N ZI,ZJ,ZK S ZI=""
2503"RTN","C0XMAIN",192,0)
2504 F S ZI=$O(@ZDOM@(1,"A",ZI)) Q:ZI="" D ; FOR EACH xmlns
2505"RTN","C0XMAIN",193,0)
2506 . S ZVOC=$P(ZI,"xmlns:",2)
2507"RTN","C0XMAIN",194,0)
2508 . I ZVOC'="" S C0XVOC(ZVOC)=$G(@ZDOM@(1,"A",ZI))
2509"RTN","C0XMAIN",195,0)
2510 ;W !,"VOCABS:" ZWR C0XVOC
2511"RTN","C0XMAIN",196,0)
2512 ;
2513"RTN","C0XMAIN",197,0)
2514 ; -- look for children called rdf:Description. quit if none. not an rdf file
2515"RTN","C0XMAIN",198,0)
2516 ;
2517"RTN","C0XMAIN",199,0)
2518 S ZI=$O(@ZDOM@(1,"C",""))
2519"RTN","C0XMAIN",200,0)
2520 I $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ; not an rdf file
2521"RTN","C0XMAIN",201,0)
2522 . W !,"Error. Not an RDF file. Cannot process."
2523"RTN","C0XMAIN",202,0)
2524 ;
2525"RTN","C0XMAIN",203,0)
2526 ; -- now process the rdf description children
2527"RTN","C0XMAIN",204,0)
2528 ;
2529"RTN","C0XMAIN",205,0)
2530 S ZI=""
2531"RTN","C0XMAIN",206,0)
2532 S (C0XSUB,C0XPRE,C0XOBJ)="" ; INITIALIZE subject, object and predicate
2533"RTN","C0XMAIN",207,0)
2534 F S ZI=$O(@ZDOM@(1,"C",ZI)) Q:ZI="" D ;
2535"RTN","C0XMAIN",208,0)
2536 . ; -- we are skipping any child that is not rdf:Description
2537"RTN","C0XMAIN",209,0)
2538 . ; -- TODO: check to see if this is right in general
2539"RTN","C0XMAIN",210,0)
2540 . ;
2541"RTN","C0XMAIN",211,0)
2542 . IF $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ;
2543"RTN","C0XMAIN",212,0)
2544 . . W !,"SKIPPING NODE: ",ZI
2545"RTN","C0XMAIN",213,0)
2546 . ; -- now looking for the subject for the triples
2547"RTN","C0XMAIN",214,0)
2548 . S ZX=$G(@ZDOM@(ZI,"A","rdf:about"))
2549"RTN","C0XMAIN",215,0)
2550 . I ZX'="" D ; we have the subject
2551"RTN","C0XMAIN",216,0)
2552 . . ;W " about: ",ZX
2553"RTN","C0XMAIN",217,0)
2554 . . S C0XSUB=ZX
2555"RTN","C0XMAIN",218,0)
2556 . E D ;
2557"RTN","C0XMAIN",219,0)
2558 . . S ZX=$G(@ZDOM@(ZI,"A","rdf:nodeID")) ; node id is another style of subject
2559"RTN","C0XMAIN",220,0)
2560 . . I ZX'="" D ;
2561"RTN","C0XMAIN",221,0)
2562 . . . S C0XSUB=ZX
2563"RTN","C0XMAIN",222,0)
2564 . I C0XSUB="" S C0XSUB=$$ANONS ; DEFAULT TO BLANK SUBJECT
2565"RTN","C0XMAIN",223,0)
2566 . ;
2567"RTN","C0XMAIN",224,0)
2568 . ; -- we now have the subject. the children of this node have the rest
2569"RTN","C0XMAIN",225,0)
2570 . ;
2571"RTN","C0XMAIN",226,0)
2572 . S ZJ="" ; for the children of the rdf:Description nodes
2573"RTN","C0XMAIN",227,0)
2574 . F S ZJ=$O(@ZDOM@(ZI,"C",ZJ)) Q:ZJ="" D ; for each child
2575"RTN","C0XMAIN",228,0)
2576 . . S C0XPRE=@ZDOM@(ZJ) ; the predicate without a prefix
2577"RTN","C0XMAIN",229,0)
2578 . . S ZX=$G(@ZDOM@(ZJ,"A","xmlns")) ; name space
2579"RTN","C0XMAIN",230,0)
2580 . . I ZX'="" S C0XPRE=ZX_C0XPRE ; add the namespace prefix
2581"RTN","C0XMAIN",231,0)
2582 . . I C0XPRE[":" D ; expand using vocabulary
2583"RTN","C0XMAIN",232,0)
2584 . . . N ZB,ZA
2585"RTN","C0XMAIN",233,0)
2586 . . . S ZB=$P(C0XPRE,":",1)
2587"RTN","C0XMAIN",234,0)
2588 . . . S ZA=$P(C0XPRE,":",2)
2589"RTN","C0XMAIN",235,0)
2590 . . . I $G(C0XVOC(ZB))'="" D ;
2591"RTN","C0XMAIN",236,0)
2592 . . . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
2593"RTN","C0XMAIN",237,0)
2594 . . S ZY=$G(@ZDOM@(ZJ,"A","rdf:resource")) ; potential object
2595"RTN","C0XMAIN",238,0)
2596 . . I ZY'="" D Q ;
2597"RTN","C0XMAIN",239,0)
2598 . . . S C0XOBJ=ZY ; object
2599"RTN","C0XMAIN",240,0)
2600 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; finally. our first real triple
2601"RTN","C0XMAIN",241,0)
2602 . . ; -- this is an else because of the quit above
2603"RTN","C0XMAIN",242,0)
2604 . . S ZX=$G(@ZDOM@(ZJ,"A","rdf:nodeID")) ; fishing for nodeId object
2605"RTN","C0XMAIN",243,0)
2606 . . I ZX'="" D Q ; got one
2607"RTN","C0XMAIN",244,0)
2608 . . . S C0XOBJ=ZX ; we are using the incoming nodeIDs as object/subject
2609"RTN","C0XMAIN",245,0)
2610 . . . ; without change... this could be foolish .. look at it again later
2611"RTN","C0XMAIN",246,0)
2612 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
2613"RTN","C0XMAIN",247,0)
2614 . . S C0XOBJ=$G(@ZDOM@(ZJ,"T",1)) ; hopefully an object is here
2615"RTN","C0XMAIN",248,0)
2616 . . I C0XOBJ="" D Q ; not a happy situation
2617"RTN","C0XMAIN",249,0)
2618 . . . W !,"ERROR, NO OBJECT FOUND FOR NODE: ",ZJ
2619"RTN","C0XMAIN",250,0)
2620 . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
2621"RTN","C0XMAIN",251,0)
2622 W !,"INSERTING ",C0XCNT," TRIPLES"
2623"RTN","C0XMAIN",252,0)
2624 D UPDIE(.C0XFDA) ; commit the updates to the file
2625"RTN","C0XMAIN",253,0)
2626 ; next, mark the graph as finished
2627"RTN","C0XMAIN",254,0)
2628 S C0XEND=$$NOW^XLFDT
2629"RTN","C0XMAIN",255,0)
2630 W !," ENDED AT: ",C0XEND
2631"RTN","C0XMAIN",256,0)
2632 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XSTART,2)
2633"RTN","C0XMAIN",257,0)
2634 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
2635"RTN","C0XMAIN",258,0)
2636 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
2637"RTN","C0XMAIN",259,0)
2638 Q
2639"RTN","C0XMAIN",260,0)
2640 ;
2641"RTN","C0XMAIN",261,0)
2642SHOW(ZN) ;
2643"RTN","C0XMAIN",262,0)
2644 ZWR ^TMP("MXMLDOM",$J,1,ZN,*)
2645"RTN","C0XMAIN",263,0)
2646 Q
2647"RTN","C0XMAIN",264,0)
2648 ;
2649"RTN","C0XMAIN",265,0)
2650ANONS() ; RETURNS AN ANONOMOUS SUBJECT
2651"RTN","C0XMAIN",266,0)
2652 Q "_S:"_$$LKY9
2653"RTN","C0XMAIN",267,0)
2654 ;
2655"RTN","C0XMAIN",268,0)
2656NEWG(NGRAPH,NMETA) ; CREATES A NEW META GRAPH, MARKS IT AS UNFINISHED
2657"RTN","C0XMAIN",269,0)
2658 ; THEN CREATES A NEW GRAPH AND POINTS THE METAGRAPH TO IT
2659"RTN","C0XMAIN",270,0)
2660 ; NGRAPH AND NMETA ARE PASSED BY REFERENCE AND ARE THE RETURN
2661"RTN","C0XMAIN",271,0)
2662 S NGRAPH="G"_$$LKY9
2663"RTN","C0XMAIN",272,0)
2664 S NMETA=NGRAPH_"A"
2665"RTN","C0XMAIN",273,0)
2666 Q
2667"RTN","C0XMAIN",274,0)
2668 ;
2669"RTN","C0XMAIN",275,0)
2670ADD(ZG,ZS,ZP,ZO,FARY) ; ADD A TRIPLE TO THE TRIPLESTORE. ALL VALUES ARE TEXT
2671"RTN","C0XMAIN",276,0)
2672 ; THE FDA IS SET UP BUT THE FILES ARE NOT UPDATED. CALL UPDIE TO COMPLETE
2673"RTN","C0XMAIN",277,0)
2674 I '$D(FARY) D ;
2675"RTN","C0XMAIN",278,0)
2676 . D INITFARY("C0XFARY")
2677"RTN","C0XMAIN",279,0)
2678 . S FARY="C0XFARY"
2679"RTN","C0XMAIN",280,0)
2680 D USEFARY(FARY)
2681"RTN","C0XMAIN",281,0)
2682 I '$D(C0XCNT) S C0XCNT=0
2683"RTN","C0XMAIN",282,0)
2684 N ZNODE
2685"RTN","C0XMAIN",283,0)
2686 S ZNODE="N"_$$LKY17
2687"RTN","C0XMAIN",284,0)
2688 N ZNARY ; GET READY TO CALL IENOFA
2689"RTN","C0XMAIN",285,0)
2690 S ZNARY("ZG",ZG)=""
2691"RTN","C0XMAIN",286,0)
2692 S ZNARY("ZS",ZS)=""
2693"RTN","C0XMAIN",287,0)
2694 S ZNARY("ZP",ZP)=""
2695"RTN","C0XMAIN",288,0)
2696 S ZNARY("ZO",ZO)=""
2697"RTN","C0XMAIN",289,0)
2698 D IENOFA(.ZIENS,.ZNARY,FARY) ; RESOLVE/ADD STRINGS
2699"RTN","C0XMAIN",290,0)
2700 ;S ZGIEN=$$IENOF(ZG) ; LAYGO TO GET IEN
2701"RTN","C0XMAIN",291,0)
2702 ;S ZSIEN=$$IENOF(ZS)
2703"RTN","C0XMAIN",292,0)
2704 ;S ZPIEN=$$IENOF(ZP)
2705"RTN","C0XMAIN",293,0)
2706 ;S ZOIEN=$$IENOF(ZO)
2707"RTN","C0XMAIN",294,0)
2708 ;I $D(C0XFDA) D UPDIE ; ADD THE STRINGS IF NEEDED
2709"RTN","C0XMAIN",295,0)
2710 S C0XCNT=C0XCNT+1
2711"RTN","C0XMAIN",296,0)
2712 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.01)=ZNODE
2713"RTN","C0XMAIN",297,0)
2714 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.02)=$O(ZIENS("IEN","ZG",""))
2715"RTN","C0XMAIN",298,0)
2716 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.03)=$O(ZIENS("IEN","ZS",""))
2717"RTN","C0XMAIN",299,0)
2718 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.04)=$O(ZIENS("IEN","ZP",""))
2719"RTN","C0XMAIN",300,0)
2720 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.05)=$O(ZIENS("IEN","ZO",""))
2721"RTN","C0XMAIN",301,0)
2722 ; REMEMBER TO CALL UPDIE WHEN YOU'RE DONE
2723"RTN","C0XMAIN",302,0)
2724 Q
2725"RTN","C0XMAIN",303,0)
2726 ;
2727"RTN","C0XMAIN",304,0)
2728LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
2729"RTN","C0XMAIN",305,0)
2730 ; UNIQUE NODE AND GRAPH NAMES
2731"RTN","C0XMAIN",306,0)
2732 N ZN,ZI
2733"RTN","C0XMAIN",307,0)
2734 S ZN=""
2735"RTN","C0XMAIN",308,0)
2736 F ZI=1:1:9 D ;
2737"RTN","C0XMAIN",309,0)
2738 . S ZN=ZN_$R(10)
2739"RTN","C0XMAIN",310,0)
2740 Q ZN
2741"RTN","C0XMAIN",311,0)
2742 ;
2743"RTN","C0XMAIN",312,0)
2744LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
2745"RTN","C0XMAIN",313,0)
2746 ; UNIQUE NODE AND GRAPH NAMES
2747"RTN","C0XMAIN",314,0)
2748 N ZN,ZI
2749"RTN","C0XMAIN",315,0)
2750 S ZN=""
2751"RTN","C0XMAIN",316,0)
2752 F ZI=1:1:17 D ;
2753"RTN","C0XMAIN",317,0)
2754 . S ZN=ZN_$R(10)
2755"RTN","C0XMAIN",318,0)
2756 Q ZN
2757"RTN","C0XMAIN",319,0)
2758 ;
2759"RTN","C0XMAIN",320,0)
2760IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
2761"RTN","C0XMAIN",321,0)
2762 I '$D(FARY) D ;
2763"RTN","C0XMAIN",322,0)
2764 . D INITFARY("C0XFARY")
2765"RTN","C0XMAIN",323,0)
2766 . S FARY="C0XFARY"
2767"RTN","C0XMAIN",324,0)
2768 N ZIEN
2769"RTN","C0XMAIN",325,0)
2770 S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
2771"RTN","C0XMAIN",326,0)
2772 I ZIEN="" D ;
2773"RTN","C0XMAIN",327,0)
2774 . S C0XFDA2(C0XSFN,"+1,",.01)=ZSTRING
2775"RTN","C0XMAIN",328,0)
2776 . D UPDIE(.C0XFDA2)
2777"RTN","C0XMAIN",329,0)
2778 . S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
2779"RTN","C0XMAIN",330,0)
2780 . K C0XFDA2
2781"RTN","C0XMAIN",331,0)
2782 Q ZIEN
2783"RTN","C0XMAIN",332,0)
2784 ;
2785"RTN","C0XMAIN",333,0)
2786IENOFA(ZOUTARY,ZINARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
2787"RTN","C0XMAIN",334,0)
2788 ; OR ADD THEM IF
2789"RTN","C0XMAIN",335,0)
2790 ; MISSING. ZINARY AND ZOUTARY ARE PASSED BY REFERENCE
2791"RTN","C0XMAIN",336,0)
2792 ; ZINARY LOOKS LIKE ZINARY("VAR","VAL")=""
2793"RTN","C0XMAIN",337,0)
2794 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
2795"RTN","C0XMAIN",338,0)
2796 I '$D(FARY) D ;
2797"RTN","C0XMAIN",339,0)
2798 . D INITFARY("C0XFARY")
2799"RTN","C0XMAIN",340,0)
2800 . S FARY="C0XFARY"
2801"RTN","C0XMAIN",341,0)
2802 K ZOUTARY ; START WITH CLEAN RESULTS
2803"RTN","C0XMAIN",342,0)
2804 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
2805"RTN","C0XMAIN",343,0)
2806 N ZI S ZI=""
2807"RTN","C0XMAIN",344,0)
2808 N ZV,ZIEN
2809"RTN","C0XMAIN",345,0)
2810 N ZCNT S ZCNT=0
2811"RTN","C0XMAIN",346,0)
2812 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; LOOK FOR MISSING STRINGS
2813"RTN","C0XMAIN",347,0)
2814 . S ZV=$O(ZINARY(ZI,""))
2815"RTN","C0XMAIN",348,0)
2816 . I $O(@C0XSN@("B",ZV,""))="" D ;
2817"RTN","C0XMAIN",349,0)
2818 . . S ZCNT=ZCNT+1
2819"RTN","C0XMAIN",350,0)
2820 . . S C0XFDA2(C0XSFN,"+"_ZCNT_",",.01)=ZV
2821"RTN","C0XMAIN",351,0)
2822 I $D(C0XFDA2) D ;
2823"RTN","C0XMAIN",352,0)
2824 . D UPDIE(.C0XFDA2) ; ADD MISSING STRINGS
2825"RTN","C0XMAIN",353,0)
2826 . K C0XFDA2 ; CLEAN UP
2827"RTN","C0XMAIN",354,0)
2828 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOT GET ALL IENS
2829"RTN","C0XMAIN",355,0)
2830 . S ZV=$O(ZINARY(ZI,""))
2831"RTN","C0XMAIN",356,0)
2832 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
2833"RTN","C0XMAIN",357,0)
2834 . I ZIEN="" D ;
2835"RTN","C0XMAIN",358,0)
2836 . . W !,"ERROR ADDING STRING: ",ZV
2837"RTN","C0XMAIN",359,0)
2838 . . B
2839"RTN","C0XMAIN",360,0)
2840 . S ZOUTARY("IEN",ZI,ZIEN)=""
2841"RTN","C0XMAIN",361,0)
2842 Q
2843"RTN","C0XMAIN",362,0)
2844 ;
2845"RTN","C0XMAIN",363,0)
2846UPDIE(ZFDA) ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
2847"RTN","C0XMAIN",364,0)
2848 ; ZFDA IS PASSED BY REFERENCE
2849"RTN","C0XMAIN",365,0)
2850 ;ZWR ZFDA
2851"RTN","C0XMAIN",366,0)
2852 ;B
2853"RTN","C0XMAIN",367,0)
2854 K ZERR
2855"RTN","C0XMAIN",368,0)
2856 D CLEAN^DILF
2857"RTN","C0XMAIN",369,0)
2858 D UPDATE^DIE("","ZFDA","","ZERR")
2859"RTN","C0XMAIN",370,0)
2860 I $D(ZERR) S ZZERR=ZZERR ; ZZERR DOESN'T EXIST,
2861"RTN","C0XMAIN",371,0)
2862 ; INVOKE THE ERROR TRAP IF TASKED
2863"RTN","C0XMAIN",372,0)
2864 ;. W "ERROR",!
2865"RTN","C0XMAIN",373,0)
2866 ;. ZWR ZERR
2867"RTN","C0XMAIN",374,0)
2868 ;. B
2869"RTN","C0XMAIN",375,0)
2870 K ZFDA
2871"RTN","C0XMAIN",376,0)
2872 Q
2873"RTN","C0XMAIN",377,0)
2874 ;
2875"RTN","C0XRDF")
28760^7^B4392
2877"RTN","C0XRDF",1,0)
2878C0XRDF ; GPL - Fileman Triples RDF out ;11/07/11 17:05
2879"RTN","C0XRDF",2,0)
2880 ;;0.1;C0X;nopatch;noreleasedate;Build 8
2881"RTN","C0XRDF",3,0)
2882 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU
2883"RTN","C0XRDF",4,0)
2884 ;General Public License See attached copy of the License.
2885"RTN","C0XRDF",5,0)
2886 ;
2887"RTN","C0XRDF",6,0)
2888 ;This program is free software; you can redistribute it and/or modify
2889"RTN","C0XRDF",7,0)
2890 ;it under the terms of the GNU General Public License as published by
2891"RTN","C0XRDF",8,0)
2892 ;the Free Software Foundation; either version 2 of the License, or
2893"RTN","C0XRDF",9,0)
2894 ;(at your option) any later version.
2895"RTN","C0XRDF",10,0)
2896 ;
2897"RTN","C0XRDF",11,0)
2898 ;This program is distributed in the hope that it will be useful,
2899"RTN","C0XRDF",12,0)
2900 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
2901"RTN","C0XRDF",13,0)
2902 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2903"RTN","C0XRDF",14,0)
2904 ;GNU General Public License for more details.
2905"RTN","C0XRDF",15,0)
2906 ;
2907"RTN","C0XRDF",16,0)
2908 ;You should have received a copy of the GNU General Public License along
2909"RTN","C0XRDF",17,0)
2910 ;with this program; if not, write to the Free Software Foundation, Inc.,
2911"RTN","C0XRDF",18,0)
2912 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2913"RTN","C0XRDF",19,0)
2914 ;
2915"RTN","C0XRDF",20,0)
2916 Q
2917"RTN","C0XRDF",21,0)
2918 ;
2919"RTN","C0XRDF",22,0)
2920REPLYSTART(ZARY);
2921"RTN","C0XRDF",23,0)
2922 D ADD(ZARY,"<?xml version=""1.0"" encoding=""UTF-8""?>")
2923"RTN","C0XRDF",24,0)
2924 D ADD(ZARY,"<rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"">")
2925"RTN","C0XRDF",25,0)
2926 Q
2927"RTN","C0XRDF",26,0)
2928 ;
2929"RTN","C0XRDF",27,0)
2930LISTSTART(ZARY,ZNAM)
2931"RTN","C0XRDF",28,0)
2932 Q
2933"RTN","C0XRDF",29,0)
2934 ;
2935"RTN","C0XRDF",30,0)
2936DICTSTART(ZARY,ZSUB)
2937"RTN","C0XRDF",31,0)
2938 I ZSUB["http" D Q ;
2939"RTN","C0XRDF",32,0)
2940 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
2941"RTN","C0XRDF",33,0)
2942 I $E(ZSUB,1,1)="/" D Q ;
2943"RTN","C0XRDF",34,0)
2944 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
2945"RTN","C0XRDF",35,0)
2946 D ADD(ZARY,"<rdf:Description rdf:nodeID="""_ZSUB_""">")
2947"RTN","C0XRDF",36,0)
2948 Q
2949"RTN","C0XRDF",37,0)
2950 ;
2951"RTN","C0XRDF",38,0)
2952DASSERT(ZARY,ZPRED,ZOBJ)
2953"RTN","C0XRDF",39,0)
2954 I ZPRED[":" D Q ;
2955"RTN","C0XRDF",40,0)
2956 . I ZPRED="rdf:type" D Q ;
2957"RTN","C0XRDF",41,0)
2958 . . D ADD(ZARY,"<rdf:type rdf:resource="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
2959"RTN","C0XRDF",42,0)
2960 . N ZA,ZB,ZC
2961"RTN","C0XRDF",43,0)
2962 . S ZA=$P(ZPRED,":",1)
2963"RTN","C0XRDF",44,0)
2964 . S ZB=$P(ZPRED,":",2)
2965"RTN","C0XRDF",45,0)
2966 . I $E(ZB,1,1)="/" D ;
2967"RTN","C0XRDF",46,0)
2968 . . S ZB=$P(ZB,"/",2) ; handling gpltest:/note situations
2969"RTN","C0XRDF",47,0)
2970 . S ZC=C0XVOC(ZA)
2971"RTN","C0XRDF",48,0)
2972 . I ZOBJ["nodeID:" D Q ;
2973"RTN","C0XRDF",49,0)
2974 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:nodeID="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
2975"RTN","C0XRDF",50,0)
2976 . S ZOBJ=$$EXT^C0XUTIL(ZOBJ)
2977"RTN","C0XRDF",51,0)
2978 . I ZOBJ["http" D Q ;
2979"RTN","C0XRDF",52,0)
2980 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
2981"RTN","C0XRDF",53,0)
2982 . I $E(ZOBJ,1,1)="/" D Q ;
2983"RTN","C0XRDF",54,0)
2984 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
2985"RTN","C0XRDF",55,0)
2986 . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""">"_$$EXT^C0XUTIL(ZOBJ)_"</"_ZB_">")
2987"RTN","C0XRDF",56,0)
2988 Q
2989"RTN","C0XRDF",57,0)
2990 ;
2991"RTN","C0XRDF",58,0)
2992DICTEND(ZARY)
2993"RTN","C0XRDF",59,0)
2994 D ADD(ZARY,"</rdf:Description>")
2995"RTN","C0XRDF",60,0)
2996 Q
2997"RTN","C0XRDF",61,0)
2998 ;
2999"RTN","C0XRDF",62,0)
3000LISTEND(ZARY)
3001"RTN","C0XRDF",63,0)
3002 Q
3003"RTN","C0XRDF",64,0)
3004 ;
3005"RTN","C0XRDF",65,0)
3006REPLYEND(ZARY)
3007"RTN","C0XRDF",66,0)
3008 D ADD(ZARY,"</rdf:RDF>")
3009"RTN","C0XRDF",67,0)
3010 Q
3011"RTN","C0XRDF",68,0)
3012 ;
3013"RTN","C0XRDF",69,0)
3014ADD(ZARY,ZELE)
3015"RTN","C0XRDF",70,0)
3016 N ZI
3017"RTN","C0XRDF",71,0)
3018 I '$D(ZARY) S @ZARY@(1)=ZELE Q ;
3019"RTN","C0XRDF",72,0)
3020 S ZI=$O(@ZARY@(""),-1)
3021"RTN","C0XRDF",73,0)
3022 S @ZARY@(ZI+1)=ZELE
3023"RTN","C0XRDF",74,0)
3024 Q
3025"RTN","C0XRDF",75,0)
3026 ;
3027"RTN","C0XRDF",76,0)
3028rdfout(rdfout,zary) ;
3029"RTN","C0XRDF",77,0)
3030 d REPLYSTART("rdfout")
3031"RTN","C0XRDF",78,0)
3032 d LISTSTART("rdfout","results")
3033"RTN","C0XRDF",79,0)
3034 n zi s zi=""
3035"RTN","C0XRDF",80,0)
3036 f s zi=$o(zary(zi)) q:zi="" d ; for each subject
3037"RTN","C0XRDF",81,0)
3038 . n zii s zii=""
3039"RTN","C0XRDF",82,0)
3040 . D DICTSTART("rdfout",$$EXT^C0XUTIL(zi))
3041"RTN","C0XRDF",83,0)
3042 . f s zii=$o(zary(zi,zii)) q:zii="" d ; for each pred^obj pair
3043"RTN","C0XRDF",84,0)
3044 . . d DASSERT("rdfout",$p(zii,"^",1),$p(zii,"^",2))
3045"RTN","C0XRDF",85,0)
3046 . D DICTEND("rdfout")
3047"RTN","C0XRDF",86,0)
3048 d LISTEND("rdfout")
3049"RTN","C0XRDF",87,0)
3050 d REPLYEND("rdfout")
3051"RTN","C0XRDF",88,0)
3052 q
3053"RTN","C0XRDF",89,0)
3054 ;
3055"RTN","C0XTEST")
30560^3^B14490662
3057"RTN","C0XTEST",1,0)
3058C0XTEST ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
3059"RTN","C0XTEST",2,0)
3060 ;;0.1;C0X;nopatch;noreleasedate;Build 8
3061"RTN","C0XTEST",3,0)
3062 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
3063"RTN","C0XTEST",4,0)
3064 ;General Public License See attached copy of the License.
3065"RTN","C0XTEST",5,0)
3066 ;
3067"RTN","C0XTEST",6,0)
3068 ;This program is free software; you can redistribute it and/or modify
3069"RTN","C0XTEST",7,0)
3070 ;it under the terms of the GNU General Public License as published by
3071"RTN","C0XTEST",8,0)
3072 ;the Free Software Foundation; either version 2 of the License, or
3073"RTN","C0XTEST",9,0)
3074 ;(at your option) any later version.
3075"RTN","C0XTEST",10,0)
3076 ;
3077"RTN","C0XTEST",11,0)
3078 ;This program is distributed in the hope that it will be useful,
3079"RTN","C0XTEST",12,0)
3080 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3081"RTN","C0XTEST",13,0)
3082 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3083"RTN","C0XTEST",14,0)
3084 ;GNU General Public License for more details.
3085"RTN","C0XTEST",15,0)
3086 ;
3087"RTN","C0XTEST",16,0)
3088 ;You should have received a copy of the GNU General Public License along
3089"RTN","C0XTEST",17,0)
3090 ;with this program; if not, write to the Free Software Foundation, Inc.,
3091"RTN","C0XTEST",18,0)
3092 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3093"RTN","C0XTEST",19,0)
3094 ;
3095"RTN","C0XTEST",20,0)
3096 Q
3097"RTN","C0XTEST",21,0)
3098 ;
3099"RTN","C0XTEST",22,0)
3100EN ; run the test
3101"RTN","C0XTEST",23,0)
3102 ;
3103"RTN","C0XTEST",24,0)
3104 k C0XFDA ; clear the node variable
3105"RTN","C0XTEST",25,0)
3106 i '$d(^C0X(101,0)) d ; global doesn't exist
3107"RTN","C0XTEST",26,0)
3108 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
3109"RTN","C0XTEST",27,0)
3110 n zg
3111"RTN","C0XTEST",28,0)
3112 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
3113"RTN","C0XTEST",29,0)
3114 n zi
3115"RTN","C0XTEST",30,0)
3116 f zi=1:1:100000 d ; try a test of 10000 nodes
3117"RTN","C0XTEST",31,0)
3118 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
3119"RTN","C0XTEST",32,0)
3120 . s C0XFDA(172.101,zi,.02)=zg
3121"RTN","C0XTEST",33,0)
3122 . s C0XFDA(172.101,zi,.03)=$R(100000)
3123"RTN","C0XTEST",34,0)
3124 . s C0XFDA(172.101,zi,.04)=$R(100000)
3125"RTN","C0XTEST",35,0)
3126 . s C0XFDA(172.101,zi,.05)=$R(100000)
3127"RTN","C0XTEST",36,0)
3128 S C0XST=$$NOW^XLFDT ; start of the insertion test
3129"RTN","C0XTEST",37,0)
3130 W !,"INSERTION STARTS AT ",C0XST,!
3131"RTN","C0XTEST",38,0)
3132 d BULKLOAD(.C0XFDA)
3133"RTN","C0XTEST",39,0)
3134 s C0XEND=$$NOW^XLFDT ; end of the insertion test
3135"RTN","C0XTEST",40,0)
3136 W !,"INSERTION ENDS AT ",C0XEND
3137"RTN","C0XTEST",41,0)
3138 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XST,2)
3139"RTN","C0XTEST",42,0)
3140 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
3141"RTN","C0XTEST",43,0)
3142 I C0XDIFF>0 W !," APPROXIMATELY ",$P(100000/C0XDIFF,".")," NODES PER SECOND"
3143"RTN","C0XTEST",44,0)
3144 q
3145"RTN","C0XTEST",45,0)
3146 ;
3147"RTN","C0XTEST",46,0)
3148LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3149"RTN","C0XTEST",47,0)
3150 ; UNIQUE NODE AND GRAPH NAMES
3151"RTN","C0XTEST",48,0)
3152 N ZN,ZI
3153"RTN","C0XTEST",49,0)
3154 S ZN=""
3155"RTN","C0XTEST",50,0)
3156 F ZI=1:1:9 D ;
3157"RTN","C0XTEST",51,0)
3158 . S ZN=ZN_$R(10)
3159"RTN","C0XTEST",52,0)
3160 Q ZN
3161"RTN","C0XTEST",53,0)
3162 ;
3163"RTN","C0XTEST",54,0)
3164LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3165"RTN","C0XTEST",55,0)
3166 ; UNIQUE NODE AND GRAPH NAMES
3167"RTN","C0XTEST",56,0)
3168 N ZN,ZI
3169"RTN","C0XTEST",57,0)
3170 S ZN=""
3171"RTN","C0XTEST",58,0)
3172 F ZI=1:1:17 D ;
3173"RTN","C0XTEST",59,0)
3174 . S ZN=ZN_$R(10)
3175"RTN","C0XTEST",60,0)
3176 Q ZN
3177"RTN","C0XTEST",61,0)
3178 ;
3179"RTN","C0XTEST",62,0)
3180BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
3181"RTN","C0XTEST",63,0)
3182 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
3183"RTN","C0XTEST",64,0)
3184 ; QUITS IF FILE IS NOT 172.101
3185"RTN","C0XTEST",65,0)
3186 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
3187"RTN","C0XTEST",66,0)
3188 ; QUITS IF FIRST ENTRY IS NOT IENS 1
3189"RTN","C0XTEST",67,0)
3190 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
3191"RTN","C0XTEST",68,0)
3192 ; ZBFDA IS PASSED BY REFERENCE
3193"RTN","C0XTEST",69,0)
3194 ;
3195"RTN","C0XTEST",70,0)
3196 ; -- reserves a block of iens from file 172.101 by locking the zero node
3197"RTN","C0XTEST",71,0)
3198 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
3199"RTN","C0XTEST",72,0)
3200 ; -- then unlocking to minimize the duration of the lock
3201"RTN","C0XTEST",73,0)
3202 ;
3203"RTN","C0XTEST",74,0)
3204 W !,"USING BULKLOAD"
3205"RTN","C0XTEST",75,0)
3206 I '$D(ZBFDA) Q ; EMPTY FDA
3207"RTN","C0XTEST",76,0)
3208 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
3209"RTN","C0XTEST",77,0)
3210 N ZCNT,ZP3,ZP4
3211"RTN","C0XTEST",78,0)
3212 ; -- find the number of nodes to insert
3213"RTN","C0XTEST",79,0)
3214 S ZCNT=$O(ZBFDA(172.101,""),-1)
3215"RTN","C0XTEST",80,0)
3216 I ZCNT="" D Q ;
3217"RTN","C0XTEST",81,0)
3218 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
3219"RTN","C0XTEST",82,0)
3220 . B
3221"RTN","C0XTEST",83,0)
3222 ; -- lock the zero node and reserve a block of iens to insert
3223"RTN","C0XTEST",84,0)
3224 W !,"LOCKING ZERO NODE"
3225"RTN","C0XTEST",85,0)
3226 LOCK +^C0X(101,0)
3227"RTN","C0XTEST",86,0)
3228 S ZP3=$P(^C0X(101,0),U,3)
3229"RTN","C0XTEST",87,0)
3230 S ZP4=$P(^C0X(101,0),U,4)
3231"RTN","C0XTEST",88,0)
3232 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
3233"RTN","C0XTEST",89,0)
3234 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
3235"RTN","C0XTEST",90,0)
3236 LOCK -^C0X(101,0)
3237"RTN","C0XTEST",91,0)
3238 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
3239"RTN","C0XTEST",92,0)
3240 S ZBASE=ZP3 ; the last ien in the file
3241"RTN","C0XTEST",93,0)
3242 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
3243"RTN","C0XTEST",94,0)
3244 W !,$$NOW^XLFDT
3245"RTN","C0XTEST",95,0)
3246 S ZI=""
3247"RTN","C0XTEST",96,0)
3248 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
3249"RTN","C0XTEST",97,0)
3250 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
3251"RTN","C0XTEST",98,0)
3252 . I ZN="" D BLKERR Q ;
3253"RTN","C0XTEST",99,0)
3254 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
3255"RTN","C0XTEST",100,0)
3256 . I ZG="" D BLKERR Q ;
3257"RTN","C0XTEST",101,0)
3258 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
3259"RTN","C0XTEST",102,0)
3260 . I ZS="" D BLKERR Q ;
3261"RTN","C0XTEST",103,0)
3262 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
3263"RTN","C0XTEST",104,0)
3264 . I ZP="" D BLKERR Q ;
3265"RTN","C0XTEST",105,0)
3266 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
3267"RTN","C0XTEST",106,0)
3268 . I ZO="" D BLKERR Q ;
3269"RTN","C0XTEST",107,0)
3270 . S ZIEN=ZI+ZBASE ; the new ien
3271"RTN","C0XTEST",108,0)
3272 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
3273"RTN","C0XTEST",109,0)
3274 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
3275"RTN","C0XTEST",110,0)
3276 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
3277"RTN","C0XTEST",111,0)
3278 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
3279"RTN","C0XTEST",112,0)
3280 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
3281"RTN","C0XTEST",113,0)
3282 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
3283"RTN","C0XTEST",114,0)
3284 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
3285"RTN","C0XTEST",115,0)
3286 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
3287"RTN","C0XTEST",116,0)
3288 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
3289"RTN","C0XTEST",117,0)
3290 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
3291"RTN","C0XTEST",118,0)
3292 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
3293"RTN","C0XTEST",119,0)
3294 Q
3295"RTN","C0XTEST",120,0)
3296 ;
3297"RTN","C0XTEST",121,0)
3298BLKERR ;
3299"RTN","C0XTEST",122,0)
3300 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
3301"RTN","C0XTEST",123,0)
3302 B
3303"RTN","C0XTEST",124,0)
3304 Q
3305"RTN","C0XTEST",125,0)
3306 ;
3307"RTN","C0XTKSB")
33080^6^B17580555
3309"RTN","C0XTKSB",1,0)
3310C0XTESTKSB ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
3311"RTN","C0XTKSB",2,0)
3312 ; KSB - modified to fix a minor bug and to use;;;;;Build 8
3313"RTN","C0XTKSB",3,0)
3314 ; high resolution time if routines available ; 11/19/11 1410 EST
3315"RTN","C0XTKSB",4,0)
3316 ;;0.1;C0X;nopatch;noreleasedate;Build 1
3317"RTN","C0XTKSB",5,0)
3318 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
3319"RTN","C0XTKSB",6,0)
3320 ;General Public License See attached copy of the License.
3321"RTN","C0XTKSB",7,0)
3322 ;
3323"RTN","C0XTKSB",8,0)
3324 ;This program is free software; you can redistribute it and/or modify
3325"RTN","C0XTKSB",9,0)
3326 ;it under the terms of the GNU General Public License as published by
3327"RTN","C0XTKSB",10,0)
3328 ;the Free Software Foundation; either version 2 of the License, or
3329"RTN","C0XTKSB",11,0)
3330 ;(at your option) any later version.
3331"RTN","C0XTKSB",12,0)
3332 ;
3333"RTN","C0XTKSB",13,0)
3334 ;This program is distributed in the hope that it will be useful,
3335"RTN","C0XTKSB",14,0)
3336 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3337"RTN","C0XTKSB",15,0)
3338 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3339"RTN","C0XTKSB",16,0)
3340 ;GNU General Public License for more details.
3341"RTN","C0XTKSB",17,0)
3342 ;
3343"RTN","C0XTKSB",18,0)
3344 ;You should have received a copy of the GNU General Public License along
3345"RTN","C0XTKSB",19,0)
3346 ;with this program; if not, write to the Free Software Foundation, Inc.,
3347"RTN","C0XTKSB",20,0)
3348 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3349"RTN","C0XTKSB",21,0)
3350 ;
3351"RTN","C0XTKSB",22,0)
3352 Q
3353"RTN","C0XTKSB",23,0)
3354 ;
3355"RTN","C0XTKSB",24,0)
3356EN ; run the test
3357"RTN","C0XTKSB",25,0)
3358 ;
3359"RTN","C0XTKSB",26,0)
3360 k C0XFDA ; clear the node variable
3361"RTN","C0XTKSB",27,0)
3362 s U="^" ; initialization - Bhaskar 20111119
3363"RTN","C0XTKSB",28,0)
3364 i '$d(^C0X(101,0)) d ; global doesn't exist
3365"RTN","C0XTKSB",29,0)
3366 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
3367"RTN","C0XTKSB",30,0)
3368 n zg
3369"RTN","C0XTKSB",31,0)
3370 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
3371"RTN","C0XTKSB",32,0)
3372 n zi
3373"RTN","C0XTKSB",33,0)
3374 f zi=1:1:10000 d ; try a test of 10000 nodes
3375"RTN","C0XTKSB",34,0)
3376 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
3377"RTN","C0XTKSB",35,0)
3378 . s C0XFDA(172.101,zi,.02)=zg
3379"RTN","C0XTKSB",36,0)
3380 . s C0XFDA(172.101,zi,.03)=$R(100000)
3381"RTN","C0XTKSB",37,0)
3382 . s C0XFDA(172.101,zi,.04)=$R(100000)
3383"RTN","C0XTKSB",38,0)
3384 . s C0XFDA(172.101,zi,.05)=$R(100000)
3385"RTN","C0XTKSB",39,0)
3386 S C0XST=$$H ; start of the insertion test
3387"RTN","C0XTKSB",40,0)
3388 W !,"INSERTION STARTS AT ",$ZDATE(C0XST,"YEAR-MM-DD:24:60:SS"),!
3389"RTN","C0XTKSB",41,0)
3390 d BULKLOAD(.C0XFDA)
3391"RTN","C0XTKSB",42,0)
3392 s C0XEND=$$H ; end of the insertion test
3393"RTN","C0XTKSB",43,0)
3394 W !,"INSERTION ENDS AT ",$ZDATE(C0XEND,"YEAR-MM-DD:24:60:SS")
3395"RTN","C0XTKSB",44,0)
3396 S C0XDIFF=(86400*($P(C0XEND,",",1)-$P(C0XST,",",1)))+$P(C0XEND,",",2)-$P(C0XST,",",2)
3397"RTN","C0XTKSB",45,0)
3398 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
3399"RTN","C0XTKSB",46,0)
3400 W !
3401"RTN","C0XTKSB",47,0)
3402 W:C0XDIFF>0 " APPROXIMATELY ",$FN(10000/C0XDIFF,",",0)," NODES PER SECOND",!
3403"RTN","C0XTKSB",48,0)
3404 q
3405"RTN","C0XTKSB",49,0)
3406 ;
3407"RTN","C0XTKSB",50,0)
3408LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3409"RTN","C0XTKSB",51,0)
3410 ; UNIQUE NODE AND GRAPH NAMES
3411"RTN","C0XTKSB",52,0)
3412 N ZN,ZI
3413"RTN","C0XTKSB",53,0)
3414 S ZN=""
3415"RTN","C0XTKSB",54,0)
3416 F ZI=1:1:9 D ;
3417"RTN","C0XTKSB",55,0)
3418 . S ZN=ZN_$R(10)
3419"RTN","C0XTKSB",56,0)
3420 Q ZN
3421"RTN","C0XTKSB",57,0)
3422 ;
3423"RTN","C0XTKSB",58,0)
3424LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3425"RTN","C0XTKSB",59,0)
3426 ; UNIQUE NODE AND GRAPH NAMES
3427"RTN","C0XTKSB",60,0)
3428 N ZN,ZI
3429"RTN","C0XTKSB",61,0)
3430 S ZN=""
3431"RTN","C0XTKSB",62,0)
3432 F ZI=1:1:17 D ;
3433"RTN","C0XTKSB",63,0)
3434 . S ZN=ZN_$R(10)
3435"RTN","C0XTKSB",64,0)
3436 Q ZN
3437"RTN","C0XTKSB",65,0)
3438 ;
3439"RTN","C0XTKSB",66,0)
3440BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
3441"RTN","C0XTKSB",67,0)
3442 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
3443"RTN","C0XTKSB",68,0)
3444 ; QUITS IF FILE IS NOT 172.101
3445"RTN","C0XTKSB",69,0)
3446 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
3447"RTN","C0XTKSB",70,0)
3448 ; QUITS IF FIRST ENTRY IS NOT IENS 1
3449"RTN","C0XTKSB",71,0)
3450 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
3451"RTN","C0XTKSB",72,0)
3452 ; ZBFDA IS PASSED BY REFERENCE
3453"RTN","C0XTKSB",73,0)
3454 ;
3455"RTN","C0XTKSB",74,0)
3456 ; -- reserves a block of iens from file 172.101 by locking the zero node
3457"RTN","C0XTKSB",75,0)
3458 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
3459"RTN","C0XTKSB",76,0)
3460 ; -- then unlocking to minimize the duration of the lock
3461"RTN","C0XTKSB",77,0)
3462 ;
3463"RTN","C0XTKSB",78,0)
3464 W !,"USING BULKLOAD"
3465"RTN","C0XTKSB",79,0)
3466 I '$D(ZBFDA) Q ; EMPTY FDA
3467"RTN","C0XTKSB",80,0)
3468 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
3469"RTN","C0XTKSB",81,0)
3470 N ZCNT,ZP3,ZP4
3471"RTN","C0XTKSB",82,0)
3472 ; -- find the number of nodes to insert
3473"RTN","C0XTKSB",83,0)
3474 S ZCNT=$O(ZBFDA(172.101,""),-1)
3475"RTN","C0XTKSB",84,0)
3476 I ZCNT="" D Q ;
3477"RTN","C0XTKSB",85,0)
3478 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
3479"RTN","C0XTKSB",86,0)
3480 . B
3481"RTN","C0XTKSB",87,0)
3482 ; -- lock the zero node and reserve a block of iens to insert
3483"RTN","C0XTKSB",88,0)
3484 W !,"LOCKING ZERO NODE"
3485"RTN","C0XTKSB",89,0)
3486 LOCK +^C0X(101,0)
3487"RTN","C0XTKSB",90,0)
3488 S ZP3=$P(^C0X(101,0),U,3)
3489"RTN","C0XTKSB",91,0)
3490 S ZP4=$P(^C0X(101,0),U,4)
3491"RTN","C0XTKSB",92,0)
3492 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
3493"RTN","C0XTKSB",93,0)
3494 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
3495"RTN","C0XTKSB",94,0)
3496 LOCK -^C0X(101,0)
3497"RTN","C0XTKSB",95,0)
3498 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
3499"RTN","C0XTKSB",96,0)
3500 S ZBASE=ZP3 ; the last ien in the file
3501"RTN","C0XTKSB",97,0)
3502 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
3503"RTN","C0XTKSB",98,0)
3504 W !,$ZDATE($$H,"YEAR-MM-DD:24:60:SS")
3505"RTN","C0XTKSB",99,0)
3506 S ZI=""
3507"RTN","C0XTKSB",100,0)
3508 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
3509"RTN","C0XTKSB",101,0)
3510 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
3511"RTN","C0XTKSB",102,0)
3512 . I ZN="" D BLKERR Q ;
3513"RTN","C0XTKSB",103,0)
3514 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
3515"RTN","C0XTKSB",104,0)
3516 . I ZG="" D BLKERR Q ;
3517"RTN","C0XTKSB",105,0)
3518 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
3519"RTN","C0XTKSB",106,0)
3520 . I ZS="" D BLKERR Q ;
3521"RTN","C0XTKSB",107,0)
3522 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
3523"RTN","C0XTKSB",108,0)
3524 . I ZP="" D BLKERR Q ;
3525"RTN","C0XTKSB",109,0)
3526 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
3527"RTN","C0XTKSB",110,0)
3528 . I ZO="" D BLKERR Q ;
3529"RTN","C0XTKSB",111,0)
3530 . S ZIEN=ZI+ZBASE ; the new ien
3531"RTN","C0XTKSB",112,0)
3532 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
3533"RTN","C0XTKSB",113,0)
3534 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
3535"RTN","C0XTKSB",114,0)
3536 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
3537"RTN","C0XTKSB",115,0)
3538 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
3539"RTN","C0XTKSB",116,0)
3540 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
3541"RTN","C0XTKSB",117,0)
3542 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
3543"RTN","C0XTKSB",118,0)
3544 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
3545"RTN","C0XTKSB",119,0)
3546 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
3547"RTN","C0XTKSB",120,0)
3548 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
3549"RTN","C0XTKSB",121,0)
3550 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
3551"RTN","C0XTKSB",122,0)
3552 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
3553"RTN","C0XTKSB",123,0)
3554 Q
3555"RTN","C0XTKSB",124,0)
3556 ;
3557"RTN","C0XTKSB",125,0)
3558BLKERR ;
3559"RTN","C0XTKSB",126,0)
3560 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
3561"RTN","C0XTKSB",127,0)
3562 B
3563"RTN","C0XTKSB",128,0)
3564 Q
3565"RTN","C0XTKSB",129,0)
3566 ;
3567"RTN","C0XTKSB",130,0)
3568H()
3569"RTN","C0XTKSB",131,0)
3570 quit:$length($ztrnlnm("GTMXC_posix"))&$length($text(zhorolog^%POSIX)) $$zhorolog^%POSIX quit $horolog
3571"RTN","C0XUTIL")
35720^5^B11155926
3573"RTN","C0XUTIL",1,0)
3574C0XUTIL ; GPL - Fileman Triples utilities ;11/07/11 17:05
3575"RTN","C0XUTIL",2,0)
3576 ;;0.1;C0X;nopatch;noreleasedate;Build 8
3577"RTN","C0XUTIL",3,0)
3578 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
3579"RTN","C0XUTIL",4,0)
3580 ;General Public License See attached copy of the License.
3581"RTN","C0XUTIL",5,0)
3582 ;
3583"RTN","C0XUTIL",6,0)
3584 ;This program is free software; you can redistribute it and/or modify
3585"RTN","C0XUTIL",7,0)
3586 ;it under the terms of the GNU General Public License as published by
3587"RTN","C0XUTIL",8,0)
3588 ;the Free Software Foundation; either version 2 of the License, or
3589"RTN","C0XUTIL",9,0)
3590 ;(at your option) any later version.
3591"RTN","C0XUTIL",10,0)
3592 ;
3593"RTN","C0XUTIL",11,0)
3594 ;This program is distributed in the hope that it will be useful,
3595"RTN","C0XUTIL",12,0)
3596 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3597"RTN","C0XUTIL",13,0)
3598 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3599"RTN","C0XUTIL",14,0)
3600 ;GNU General Public License for more details.
3601"RTN","C0XUTIL",15,0)
3602 ;
3603"RTN","C0XUTIL",16,0)
3604 ;You should have received a copy of the GNU General Public License along
3605"RTN","C0XUTIL",17,0)
3606 ;with this program; if not, write to the Free Software Foundation, Inc.,
3607"RTN","C0XUTIL",18,0)
3608 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3609"RTN","C0XUTIL",19,0)
3610 ;
3611"RTN","C0XUTIL",20,0)
3612 Q
3613"RTN","C0XUTIL",21,0)
3614 ;
3615"RTN","C0XUTIL",22,0)
3616NSP(ZX) ; OUTPUT TRANSFORM EXTRINSIC
3617"RTN","C0XUTIL",23,0)
3618 ;
3619"RTN","C0XUTIL",24,0)
3620 N ZR
3621"RTN","C0XUTIL",25,0)
3622 ; I WOULD REALLY LIKE TO NOT HAVE THE FILE NUMBER HARD CODED HERE
3623"RTN","C0XUTIL",26,0)
3624 ; ANYONE KNOW HOW I COULD DO THAT? :) GPL
3625"RTN","C0XUTIL",27,0)
3626 S ZR=$$GET1^DIQ(172.201,ZX_",",.01)
3627"RTN","C0XUTIL",28,0)
3628 I '$D(C0XNSP) S C0XNSP=1 ; DEFAULT ON
3629"RTN","C0XUTIL",29,0)
3630 I C0XNSP=0 Q ZR ; SWITCHED OFF
3631"RTN","C0XUTIL",30,0)
3632 I '$D(C0XVOC) D VOCINIT ; INITIALIZE THE VOCABULARIES
3633"RTN","C0XUTIL",31,0)
3634 N ZI,ZJ,ZK S ZI=""
3635"RTN","C0XUTIL",32,0)
3636 N DONE S DONE=0
3637"RTN","C0XUTIL",33,0)
3638 F S ZI=$O(C0XVOC(ZI)) Q:(DONE=1)!(ZI="") D ;
3639"RTN","C0XUTIL",34,0)
3640 . ;W !,ZI
3641"RTN","C0XUTIL",35,0)
3642 . S ZJ=C0XVOC(ZI)
3643"RTN","C0XUTIL",36,0)
3644 . S ZK=$P(ZR,ZJ,2)
3645"RTN","C0XUTIL",37,0)
3646 . ;W !,"ZK=",ZK
3647"RTN","C0XUTIL",38,0)
3648 . I ZK'="" D ; BINGO
3649"RTN","C0XUTIL",39,0)
3650 . . S ZR=ZI_":"_ZK
3651"RTN","C0XUTIL",40,0)
3652 . . S DONE=1
3653"RTN","C0XUTIL",41,0)
3654 Q ZR
3655"RTN","C0XUTIL",42,0)
3656 ;
3657"RTN","C0XUTIL",43,0)
3658VOCINIT ; INITIALIZE VOCABULARIES
3659"RTN","C0XUTIL",44,0)
3660 S C0XVOC("dcterms")="http://purl.org/dc/terms/"
3661"RTN","C0XUTIL",45,0)
3662 S C0XVOC("rdf")="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3663"RTN","C0XUTIL",46,0)
3664 S C0XVOC("sp")="http://smartplatforms.org/terms#"
3665"RTN","C0XUTIL",47,0)
3666 S C0XVOC("qds")="http://cms.gov/pqri/qds/"
3667"RTN","C0XUTIL",48,0)
3668 S C0XVOC("smart")="http://sandbox-api.smartplatforms.org/records/"
3669"RTN","C0XUTIL",49,0)
3670 S C0XVOC("snomed")="http://purl.bioontology.org/ontology/SNOMEDCT/"
3671"RTN","C0XUTIL",50,0)
3672 S C0XVOC("rxnorm")="http://purl.bioontology.org/ontology/RXNORM/"
3673"RTN","C0XUTIL",51,0)
3674 S C0XVOC("loinc")="http://purl.bioontology.org/ontology/LNC/"
3675"RTN","C0XUTIL",52,0)
3676 S C0XVOC("file")="/home/glilly/fmts/trunk/samples/"
3677"RTN","C0XUTIL",53,0)
3678 S C0XVOC("foaf")="http://xmlns.com/foaf/0.1/"
3679"RTN","C0XUTIL",54,0)
3680 S C0XVOC("skos")="http://www.w3.org/2004/02/skos/core#"
3681"RTN","C0XUTIL",55,0)
3682 S C0XVOC("gpl")="http://georgetriples.org/"
3683"RTN","C0XUTIL",56,0)
3684 S C0XVOC("cg")="http://datasets.caregraf.org/"
3685"RTN","C0XUTIL",57,0)
3686 S C0XVOC("mv")="http://metavista.name/foundation#"
3687"RTN","C0XUTIL",58,0)
3688 S C0XVOC("rdfs")="http://www.w3.org/2000/01/rdf-schema#"
3689"RTN","C0XUTIL",59,0)
3690 S C0XVOC("vistaSmart")="https://smart2.vistaewd.net/vista/smart/records/"
3691"RTN","C0XUTIL",60,0)
3692 S C0XVOC("vmu")="http://vista.org/mu/"
3693"RTN","C0XUTIL",61,0)
3694 S C0XVOC("vq")="http://vista.org/quality/"
3695"RTN","C0XUTIL",62,0)
3696 S C0XVOC("nodeID")="iDPsDPss"
3697"RTN","C0XUTIL",63,0)
3698 S C0XVOC("fmts")="http://glilly.net/fmts#"
3699"RTN","C0XUTIL",64,0)
3700 S C0XVOC("oro")="http://oro.com/vista/sage" ;change to get URL from system
3701"RTN","C0XUTIL",65,0)
3702 S C0XVOC("sage")="http://oro.com/sage/schema#"
3703"RTN","C0XUTIL",66,0)
3704 S C0XVOC("v")="http://www.w3.org/2006/vcard/ns#"
3705"RTN","C0XUTIL",67,0)
3706 Q
3707"RTN","C0XUTIL",68,0)
3708 ;
3709"RTN","C0XUTIL",69,0)
3710EXT(C0XIN) ; EXTRINSIC WHICH EXPANDS NAMESPACES
3711"RTN","C0XUTIL",70,0)
3712 ; SO skos:xxx would return http://www.w3.org/2004/02/skos/core#xxx
3713"RTN","C0XUTIL",71,0)
3714 N C0XPRE
3715"RTN","C0XUTIL",72,0)
3716 S C0XPRE=C0XIN
3717"RTN","C0XUTIL",73,0)
3718 I '$D(C0XVOC) D VOCINIT ; INITIALIZE NAME SPACE TABLE
3719"RTN","C0XUTIL",74,0)
3720 I C0XPRE[":" D ; expand using vocabulary
3721"RTN","C0XUTIL",75,0)
3722 . N ZB,ZA
3723"RTN","C0XUTIL",76,0)
3724 . S ZB=$P(C0XPRE,":",1)
3725"RTN","C0XUTIL",77,0)
3726 . S ZA=$P(C0XPRE,":",2)
3727"RTN","C0XUTIL",78,0)
3728 . I $G(C0XVOC(ZB))'="" D ;
3729"RTN","C0XUTIL",79,0)
3730 . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
3731"RTN","C0XUTIL",80,0)
3732 Q C0XPRE
3733"RTN","C0XUTIL",81,0)
3734 ;
3735"SEC","^DIC",172.101,172.101,0,"AUDIT")
3736@
3737"SEC","^DIC",172.101,172.101,0,"DD")
3738@
3739"SEC","^DIC",172.101,172.101,0,"DEL")
3740@
3741"SEC","^DIC",172.101,172.101,0,"LAYGO")
3742@
3743"SEC","^DIC",172.101,172.101,0,"RD")
3744@
3745"SEC","^DIC",172.101,172.101,0,"WR")
3746@
3747"SEC","^DIC",172.201,172.201,0,"AUDIT")
3748@
3749"SEC","^DIC",172.201,172.201,0,"DD")
3750@
3751"SEC","^DIC",172.201,172.201,0,"DEL")
3752@
3753"SEC","^DIC",172.201,172.201,0,"LAYGO")
3754@
3755"SEC","^DIC",172.201,172.201,0,"RD")
3756@
3757"SEC","^DIC",172.201,172.201,0,"WR")
3758@
3759"VER")
37608.0^22.0
3761"^DD",172.101,172.101,0)
3762FIELD^^.05^6
3763"^DD",172.101,172.101,0,"DDA")
3764N
3765"^DD",172.101,172.101,0,"DT")
37663111013
3767"^DD",172.101,172.101,0,"ID",.02)
3768S %I=Y,Y=$S('$D(^(0)):"",$D(^C0X(201,+$P(^(0),U,2),0))#2:$P(^(0),U,1),1:""),C=$P(^DD(172.201,.01,0),U,2) D Y^DIQ:Y]"" W " ",Y,@("$E("_DIC_"%I,0),0)") S Y=%I K %I
3769"^DD",172.101,172.101,0,"ID",.03)
3770S %I=Y,Y=$S('$D(^(0)):"",$D(^C0X(201,+$P(^(0),U,3),0))#2:$P(^(0),U,1),1:""),C=$P(^DD(172.201,.01,0),U,2) D Y^DIQ:Y]"" W " ",Y,@("$E("_DIC_"%I,0),0)") S Y=%I K %I
3771"^DD",172.101,172.101,0,"ID",.04)
3772S %I=Y,Y=$S('$D(^(0)):"",$D(^C0X(201,+$P(^(0),U,4),0))#2:$P(^(0),U,1),1:""),C=$P(^DD(172.201,.01,0),U,2) D Y^DIQ:Y]"" W " ",Y,@("$E("_DIC_"%I,0),0)") S Y=%I K %I
3773"^DD",172.101,172.101,0,"ID",.05)
3774S %I=Y,Y=$S('$D(^(0)):"",$D(^C0X(201,+$P(^(0),U,5),0))#2:$P(^(0),U,1),1:""),C=$P(^DD(172.201,.01,0),U,2) D Y^DIQ:Y]"" W " ",Y,@("$E("_DIC_"%I,0),0)") S Y=%I K %I
3775"^DD",172.101,172.101,0,"IX","B",172.101,.01)
3776
3777"^DD",172.101,172.101,0,"NM","C0X TRIPLE")
3778
3779"^DD",172.101,172.101,.01,0)
3780NODEID^RF^^0;1^K:$L(X)>30!($L(X)<3)!'(X'?1P.E) X
3781"^DD",172.101,172.101,.01,.1)
3782TRIPLE NODE ID
3783"^DD",172.101,172.101,.01,1,0)
3784^.1
3785"^DD",172.101,172.101,.01,1,1,0)
3786172.101^B
3787"^DD",172.101,172.101,.01,1,1,1)
3788S ^C0X(101,"B",$E(X,1,30),DA)=""
3789"^DD",172.101,172.101,.01,1,1,2)
3790K ^C0X(101,"B",$E(X,1,30),DA)
3791"^DD",172.101,172.101,.01,3)
3792Answer must be 3-30 characters in length
3793"^DD",172.101,172.101,.01,"DT")
37943111013
3795"^DD",172.101,172.101,.02,0)
3796GRAPH^P172.201O^C0X(201,^0;2^Q
3797"^DD",172.101,172.101,.02,.1)
3798TRIPLE GRAPH
3799"^DD",172.101,172.101,.02,2)
3800S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
3801"^DD",172.101,172.101,.02,2.1)
3802S Y=$$NSP^C0XUTIL(Y)
3803"^DD",172.101,172.101,.02,3)
3804Answer must be 3-240 characters in length
3805"^DD",172.101,172.101,.02,"DT")
38063111207
3807"^DD",172.101,172.101,.03,0)
3808SUBJECT^P172.201O^C0X(201,^0;3^Q
3809"^DD",172.101,172.101,.03,.1)
3810TRIPLE SUBJECT
3811"^DD",172.101,172.101,.03,2)
3812S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
3813"^DD",172.101,172.101,.03,2.1)
3814S Y=$$NSP^C0XUTIL(Y)
3815"^DD",172.101,172.101,.03,"DT")
38163111207
3817"^DD",172.101,172.101,.04,0)
3818PREDICATE^P172.201O^C0X(201,^0;4^Q
3819"^DD",172.101,172.101,.04,.1)
3820TRIPLE PREDICATE
3821"^DD",172.101,172.101,.04,2)
3822S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
3823"^DD",172.101,172.101,.04,2.1)
3824S Y=$$NSP^C0XUTIL(Y)
3825"^DD",172.101,172.101,.04,"DT")
38263111207
3827"^DD",172.101,172.101,.05,0)
3828OBJECT^P172.201O^C0X(201,^0;5^Q
3829"^DD",172.101,172.101,.05,.1)
3830TRIPLE OBJECT
3831"^DD",172.101,172.101,.05,2)
3832S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
3833"^DD",172.101,172.101,.05,2.1)
3834S Y=$$NSP^C0XUTIL(Y)
3835"^DD",172.101,172.101,.05,"DT")
38363111207
3837"^DD",172.101,172.101,1,0)
3838EVENTS^172.1011V^^1;0
3839"^DD",172.101,172.1011,0)
3840EVENTS SUB-FIELD^^.01^1
3841"^DD",172.101,172.1011,0,"DT")
38423110510
3843"^DD",172.101,172.1011,0,"IX","B",172.1011,.01)
3844
3845"^DD",172.101,172.1011,0,"NM","EVENTS")
3846
3847"^DD",172.101,172.1011,0,"UP")
3848172.101
3849"^DD",172.101,172.1011,.01,0)
3850EVENTS^V^^0;1^
3851"^DD",172.101,172.1011,.01,.1)
3852PATIENT CLINICAL EVENTS
3853"^DD",172.101,172.1011,.01,1,0)
3854^.1
3855"^DD",172.101,172.1011,.01,1,1,0)
3856172.1011^B
3857"^DD",172.101,172.1011,.01,1,1,1)
3858S ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)=""
3859"^DD",172.101,172.1011,.01,1,1,2)
3860K ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)
3861"^DD",172.101,172.1011,.01,1,1,3)
3862Required for Variable Pointer
3863"^DD",172.101,172.1011,.01,"DT")
38643110510
3865"^DD",172.101,172.1011,.01,"V",0)
3866^.12P^^3
3867"^DD",172.101,172.1011,.01,"V",1,0)
386855^MEDICATIONS^1^M^n^y
3869"^DD",172.101,172.1011,.01,"V",1,1)
3870
3871"^DD",172.101,172.1011,.01,"V",1,2)
3872
3873"^DD",172.101,172.1011,.01,"V",2,0)
38749000011^PATIENT PROBLEM^2^P^n^y
3875"^DD",172.101,172.1011,.01,"V",2,1)
3876
3877"^DD",172.101,172.1011,.01,"V",2,2)
3878
3879"^DD",172.101,172.1011,.01,"V",3,0)
388069^PATIENT LAB ORDER^3^L^n^y
3881"^DD",172.201,172.201,0)
3882FIELD^^1^2
3883"^DD",172.201,172.201,0,"DDA")
3884N
3885"^DD",172.201,172.201,0,"DT")
38863111013
3887"^DD",172.201,172.201,0,"NM","C0X STRING")
3888
3889"^DD",172.201,172.201,0,"PT",172.101,.02)
3890
3891"^DD",172.201,172.201,0,"PT",172.101,.03)
3892
3893"^DD",172.201,172.201,0,"PT",172.101,.04)
3894
3895"^DD",172.201,172.201,0,"PT",172.101,.05)
3896
3897"^DD",172.201,172.201,.01,0)
3898STRING^RF^^0;1^K:$L(X)>240!($L(X)<1)!'(X=X) X
3899"^DD",172.201,172.201,.01,.1)
3900TRIPLE STRING
3901"^DD",172.201,172.201,.01,1,0)
3902^.1^^0
3903"^DD",172.201,172.201,.01,3)
3904Answer must be 1-240 characters in length
3905"^DD",172.201,172.201,.01,"DT")
39063111028
3907"^DD",172.201,172.201,1,0)
3908TEXT^172.2011^^1;0
3909"^DD",172.201,172.2011,0)
3910TEXT SUB-FIELD^^.01^1
3911"^DD",172.201,172.2011,0,"DT")
39123111013
3913"^DD",172.201,172.2011,0,"NM","TEXT")
3914
3915"^DD",172.201,172.2011,0,"UP")
3916172.201
3917"^DD",172.201,172.2011,.01,0)
3918TEXT^Wx^^0;1
3919"^DD",172.201,172.2011,.01,.1)
3920LONGER TEXT
3921"^DD",172.201,172.2011,.01,"DT")
39223111013
3923"^DIC",172.101,172.101,0)
3924C0X TRIPLE^172.101
3925"^DIC",172.101,172.101,0,"GL")
3926^C0X(101,
3927"^DIC",172.101,"B","C0X TRIPLE",172.101)
3928
3929"^DIC",172.201,172.201,0)
3930C0X STRING^172.201
3931"^DIC",172.201,172.201,0,"GL")
3932^C0X(201,
3933"^DIC",172.201,"B","C0X STRING",172.201)
3934
3935**END**
3936**END**
Note: See TracBrowser for help on using the repository browser.