source: fmts/trunk/kids/C0X_1_0_0_T8.KID@ 1443

Last change on this file since 1443 was 1322, checked in by George Lilly, 13 years ago

added fileman output transform using namespaces

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