source: fmts/trunk/kids/C0X_1_0_0_T11.KID@ 1533

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

fixes for smart snomed lookup

File size: 130.8 KB
Line 
1KIDS Distribution saved on Sep 26, 2012@04:22:32
2fixes for smart snomed lookup
3**KIDS**:C0X*1.0*0^
4
5**INSTALL NAME**
6C0X*1.0*0
7"BLD",7921,0)
8C0X*1.0*0^^0^3120926^n
9"BLD",7921,4,0)
10^9.64PA^172.201^2
11"BLD",7921,4,172.101,0)
12172.101
13"BLD",7921,4,172.101,222)
14y^y^f^^^^n
15"BLD",7921,4,172.201,0)
16172.201
17"BLD",7921,4,172.201,222)
18y^y^f^^^^n
19"BLD",7921,4,"B",172.101,172.101)
20
21"BLD",7921,4,"B",172.201,172.201)
22
23"BLD",7921,6.3)
2410
25"BLD",7921,"KRN",0)
26^9.67PA^779.2^20
27"BLD",7921,"KRN",.4,0)
28.4
29"BLD",7921,"KRN",.4,"NM",0)
30^9.68A^1^1
31"BLD",7921,"KRN",.4,"NM",1,0)
32C0X PRINT GRAPH FILE #172.101^172.101^0
33"BLD",7921,"KRN",.4,"NM","B","C0X PRINT GRAPH FILE #172.101",1)
34
35"BLD",7921,"KRN",.401,0)
36.401
37"BLD",7921,"KRN",.402,0)
38.402
39"BLD",7921,"KRN",.403,0)
40.403
41"BLD",7921,"KRN",.5,0)
42.5
43"BLD",7921,"KRN",.84,0)
44.84
45"BLD",7921,"KRN",3.6,0)
463.6
47"BLD",7921,"KRN",3.8,0)
483.8
49"BLD",7921,"KRN",9.2,0)
509.2
51"BLD",7921,"KRN",9.8,0)
529.8
53"BLD",7921,"KRN",9.8,"NM",0)
54^9.68A^8^8
55"BLD",7921,"KRN",9.8,"NM",1,0)
56C0XMAIN^^0^B115393527
57"BLD",7921,"KRN",9.8,"NM",2,0)
58C0XF2N^^0^B367797666
59"BLD",7921,"KRN",9.8,"NM",3,0)
60C0XTEST^^0^B14490662
61"BLD",7921,"KRN",9.8,"NM",4,0)
62C0XINIT^^0^B21176787
63"BLD",7921,"KRN",9.8,"NM",5,0)
64C0XUTIL^^0^B11676522
65"BLD",7921,"KRN",9.8,"NM",6,0)
66C0XTKSB^^0^B17580555
67"BLD",7921,"KRN",9.8,"NM",7,0)
68C0XRDF^^0^B4392
69"BLD",7921,"KRN",9.8,"NM",8,0)
70C0XGET1^^0^B4808799
71"BLD",7921,"KRN",9.8,"NM","B","C0XF2N",2)
72
73"BLD",7921,"KRN",9.8,"NM","B","C0XGET1",8)
74
75"BLD",7921,"KRN",9.8,"NM","B","C0XINIT",4)
76
77"BLD",7921,"KRN",9.8,"NM","B","C0XMAIN",1)
78
79"BLD",7921,"KRN",9.8,"NM","B","C0XRDF",7)
80
81"BLD",7921,"KRN",9.8,"NM","B","C0XTEST",3)
82
83"BLD",7921,"KRN",9.8,"NM","B","C0XTKSB",6)
84
85"BLD",7921,"KRN",9.8,"NM","B","C0XUTIL",5)
86
87"BLD",7921,"KRN",19,0)
8819
89"BLD",7921,"KRN",19.1,0)
9019.1
91"BLD",7921,"KRN",101,0)
92101
93"BLD",7921,"KRN",409.61,0)
94409.61
95"BLD",7921,"KRN",771,0)
96771
97"BLD",7921,"KRN",779.2,0)
98779.2
99"BLD",7921,"KRN",870,0)
100870
101"BLD",7921,"KRN",8989.51,0)
1028989.51
103"BLD",7921,"KRN",8989.52,0)
1048989.52
105"BLD",7921,"KRN",8994,0)
1068994
107"BLD",7921,"KRN","B",.4,.4)
108
109"BLD",7921,"KRN","B",.401,.401)
110
111"BLD",7921,"KRN","B",.402,.402)
112
113"BLD",7921,"KRN","B",.403,.403)
114
115"BLD",7921,"KRN","B",.5,.5)
116
117"BLD",7921,"KRN","B",.84,.84)
118
119"BLD",7921,"KRN","B",3.6,3.6)
120
121"BLD",7921,"KRN","B",3.8,3.8)
122
123"BLD",7921,"KRN","B",9.2,9.2)
124
125"BLD",7921,"KRN","B",9.8,9.8)
126
127"BLD",7921,"KRN","B",19,19)
128
129"BLD",7921,"KRN","B",19.1,19.1)
130
131"BLD",7921,"KRN","B",101,101)
132
133"BLD",7921,"KRN","B",409.61,409.61)
134
135"BLD",7921,"KRN","B",771,771)
136
137"BLD",7921,"KRN","B",779.2,779.2)
138
139"BLD",7921,"KRN","B",870,870)
140
141"BLD",7921,"KRN","B",8989.51,8989.51)
142
143"BLD",7921,"KRN","B",8989.52,8989.52)
144
145"BLD",7921,"KRN","B",8994,8994)
146
147"FIA",172.101)
148C0X TRIPLE
149"FIA",172.101,0)
150^C0X(101,
151"FIA",172.101,0,0)
152172.101I
153"FIA",172.101,0,1)
154y^y^f^^^^n
155"FIA",172.101,0,10)
156
157"FIA",172.101,0,11)
158
159"FIA",172.101,0,"RLRO")
160
161"FIA",172.101,172.101)
1620
163"FIA",172.101,172.1011)
1640
165"FIA",172.201)
166C0X STRING
167"FIA",172.201,0)
168^C0X(201,
169"FIA",172.201,0,0)
170172.201
171"FIA",172.201,0,1)
172y^y^f^^^^n
173"FIA",172.201,0,10)
174
175"FIA",172.201,0,11)
176
177"FIA",172.201,0,"RLRO")
178
179"FIA",172.201,172.201)
1800
181"FIA",172.201,172.2011)
1820
183"IX",172.101,172.101,"G",0)
184172.101^G^REGULAR INDEX OF THE GRAPH FIELD^R^^F^IR^I^172.101^^^^^LS
185"IX",172.101,172.101,"G",1)
186S ^C0X(101,"G",X,DA)=""
187"IX",172.101,172.101,"G",2)
188K ^C0X(101,"G",X,DA)
189"IX",172.101,172.101,"G",2.5)
190K ^C0X(101,"G")
191"IX",172.101,172.101,"G",11.1,0)
192^.114IA^1^1
193"IX",172.101,172.101,"G",11.1,1,0)
1941^F^172.101^.02^^1^F
195"IX",172.101,172.101,"G",11.1,1,3)
196
197"IX",172.101,172.101,"GOPS",0)
198172.101^GOPS^GRAPH ONLY OBJECT PREDICATE SUBJECT^R^^R^IR^I^172.101^^^^^LS
199"IX",172.101,172.101,"GOPS",1)
200S ^C0X(101,"GOPS",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
201"IX",172.101,172.101,"GOPS",2)
202K ^C0X(101,"GOPS",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
203"IX",172.101,172.101,"GOPS",2.5)
204K ^C0X(101,"GOPS")
205"IX",172.101,172.101,"GOPS",11.1,0)
206^.114IA^4^4
207"IX",172.101,172.101,"GOPS",11.1,1,0)
2081^F^172.101^.02^240^1^F
209"IX",172.101,172.101,"GOPS",11.1,1,3)
210
211"IX",172.101,172.101,"GOPS",11.1,2,0)
2122^F^172.101^.05^240^2^F
213"IX",172.101,172.101,"GOPS",11.1,2,3)
214
215"IX",172.101,172.101,"GOPS",11.1,3,0)
2163^F^172.101^.04^240^3^F
217"IX",172.101,172.101,"GOPS",11.1,3,3)
218
219"IX",172.101,172.101,"GOPS",11.1,4,0)
2204^F^172.101^.03^240^4^F
221"IX",172.101,172.101,"GOPS",11.1,4,3)
222
223"IX",172.101,172.101,"GOSP",0)
224172.101^GOSP^GRAPH ONLY OBJECT SUBJECT PREDICATE^R^^R^IR^I^172.101^^^^^LS
225"IX",172.101,172.101,"GOSP",1)
226S ^C0X(101,"GOSP",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
227"IX",172.101,172.101,"GOSP",2)
228K ^C0X(101,"GOSP",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
229"IX",172.101,172.101,"GOSP",2.5)
230K ^C0X(101,"GOSP")
231"IX",172.101,172.101,"GOSP",11.1,0)
232^.114IA^4^4
233"IX",172.101,172.101,"GOSP",11.1,1,0)
2341^F^172.101^.02^240^1^F
235"IX",172.101,172.101,"GOSP",11.1,1,3)
236
237"IX",172.101,172.101,"GOSP",11.1,2,0)
2382^F^172.101^.05^240^2^F
239"IX",172.101,172.101,"GOSP",11.1,2,3)
240
241"IX",172.101,172.101,"GOSP",11.1,3,0)
2423^F^172.101^.03^240^3^F
243"IX",172.101,172.101,"GOSP",11.1,3,3)
244
245"IX",172.101,172.101,"GOSP",11.1,4,0)
2464^F^172.101^.04^240^4^F
247"IX",172.101,172.101,"GOSP",11.1,4,3)
248
249"IX",172.101,172.101,"GPSO",0)
250172.101^GPSO^GRAPH ONLY PREDICATE SUBJECT OBJECT^R^^R^IR^I^172.101^^^^^LS
251"IX",172.101,172.101,"GPSO",1)
252S ^C0X(101,"GPSO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
253"IX",172.101,172.101,"GPSO",2)
254K ^C0X(101,"GPSO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
255"IX",172.101,172.101,"GPSO",2.5)
256K ^C0X(101,"GPSO")
257"IX",172.101,172.101,"GPSO",11.1,0)
258^.114IA^4^4
259"IX",172.101,172.101,"GPSO",11.1,1,0)
2601^F^172.101^.02^240^1^F
261"IX",172.101,172.101,"GPSO",11.1,1,3)
262
263"IX",172.101,172.101,"GPSO",11.1,2,0)
2642^F^172.101^.04^240^2^F
265"IX",172.101,172.101,"GPSO",11.1,2,3)
266
267"IX",172.101,172.101,"GPSO",11.1,3,0)
2683^F^172.101^.03^240^3^F
269"IX",172.101,172.101,"GPSO",11.1,3,3)
270
271"IX",172.101,172.101,"GPSO",11.1,4,0)
2724^F^172.101^.05^240^4^F
273"IX",172.101,172.101,"GPSO",11.1,4,3)
274
275"IX",172.101,172.101,"GSPO",0)
276172.101^GSPO^GROUP ONLY SUBJECT PREDICATE OBJECT^R^^R^IR^I^172.101^^^^^LS
277"IX",172.101,172.101,"GSPO",1)
278S ^C0X(101,"GSPO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)=""
279"IX",172.101,172.101,"GSPO",2)
280K ^C0X(101,"GSPO",$E(X(1),1,240),$E(X(2),1,240),$E(X(3),1,240),$E(X(4),1,240),DA)
281"IX",172.101,172.101,"GSPO",2.5)
282K ^C0X(101,"GSPO")
283"IX",172.101,172.101,"GSPO",11.1,0)
284^.114IA^4^4
285"IX",172.101,172.101,"GSPO",11.1,1,0)
2861^F^172.101^.02^240^1^F
287"IX",172.101,172.101,"GSPO",11.1,1,3)
288
289"IX",172.101,172.101,"GSPO",11.1,2,0)
2902^F^172.101^.03^240^2^F
291"IX",172.101,172.101,"GSPO",11.1,2,3)
292
293"IX",172.101,172.101,"GSPO",11.1,3,0)
2943^F^172.101^.04^240^3^F
295"IX",172.101,172.101,"GSPO",11.1,3,3)
296
297"IX",172.101,172.101,"GSPO",11.1,4,0)
2984^F^172.101^.05^240^4^F
299"IX",172.101,172.101,"GSPO",11.1,4,3)
300
301"IX",172.101,172.101,"OPS",0)
302172.101^OPS^REGULAR INDEX OF OBJECT PREDICATE SUBJECT^R^^R^IR^I^172.101^^^^^LS
303"IX",172.101,172.101,"OPS",1)
304S ^C0X(101,"OPS",X(1),X(2),X(3),DA)=""
305"IX",172.101,172.101,"OPS",2)
306K ^C0X(101,"OPS",X(1),X(2),X(3),DA)
307"IX",172.101,172.101,"OPS",2.5)
308K ^C0X(101,"OPS")
309"IX",172.101,172.101,"OPS",11.1,0)
310^.114IA^3^3
311"IX",172.101,172.101,"OPS",11.1,1,0)
3121^F^172.101^.05^^1^F
313"IX",172.101,172.101,"OPS",11.1,1,3)
314
315"IX",172.101,172.101,"OPS",11.1,2,0)
3162^F^172.101^.04^^2^F
317"IX",172.101,172.101,"OPS",11.1,2,3)
318
319"IX",172.101,172.101,"OPS",11.1,3,0)
3203^F^172.101^.03^^3^F
321"IX",172.101,172.101,"OPS",11.1,3,3)
322
323"IX",172.101,172.101,"OSP",0)
324172.101^OSP^REGULAR INDEX OF OBJECT SUBJECT PREDICATE^R^^R^IR^I^172.101^^^^^LS
325"IX",172.101,172.101,"OSP",1)
326S ^C0X(101,"OSP",X(1),X(2),X(3),DA)=""
327"IX",172.101,172.101,"OSP",2)
328K ^C0X(101,"OSP",X(1),X(2),X(3),DA)
329"IX",172.101,172.101,"OSP",2.5)
330K ^C0X(101,"OSP")
331"IX",172.101,172.101,"OSP",11.1,0)
332^.114IA^3^3
333"IX",172.101,172.101,"OSP",11.1,1,0)
3341^F^172.101^.05^^1^F
335"IX",172.101,172.101,"OSP",11.1,1,3)
336
337"IX",172.101,172.101,"OSP",11.1,2,0)
3382^F^172.101^.03^^2^F
339"IX",172.101,172.101,"OSP",11.1,2,3)
340
341"IX",172.101,172.101,"OSP",11.1,3,0)
3423^F^172.101^.04^^3^F
343"IX",172.101,172.101,"OSP",11.1,3,3)
344
345"IX",172.101,172.101,"PSO",0)
346172.101^PSO^REGULAR INDEX OF PREDICATE SUBJECT OBJECT^R^^R^IR^I^172.101^^^^^LS
347"IX",172.101,172.101,"PSO",1)
348S ^C0X(101,"PSO",X(1),X(2),X(3),DA)=""
349"IX",172.101,172.101,"PSO",2)
350K ^C0X(101,"PSO",X(1),X(2),X(3),DA)
351"IX",172.101,172.101,"PSO",2.5)
352K ^C0X(101,"PSO")
353"IX",172.101,172.101,"PSO",11.1,0)
354^.114IA^3^3
355"IX",172.101,172.101,"PSO",11.1,1,0)
3561^F^172.101^.04^^1^F
357"IX",172.101,172.101,"PSO",11.1,1,3)
358
359"IX",172.101,172.101,"PSO",11.1,2,0)
3602^F^172.101^.03^^2^F
361"IX",172.101,172.101,"PSO",11.1,2,3)
362
363"IX",172.101,172.101,"PSO",11.1,3,0)
3643^F^172.101^.05^^3^F
365"IX",172.101,172.101,"PSO",11.1,3,3)
366
367"IX",172.101,172.101,"SPO",0)
368172.101^SPO^REGULAR INDEX OF SUBJECT PREDICATE OBJECT^R^^R^IR^I^172.101^^^^^LS
369"IX",172.101,172.101,"SPO",1)
370S ^C0X(101,"SPO",X(1),X(2),X(3),DA)=""
371"IX",172.101,172.101,"SPO",2)
372K ^C0X(101,"SPO",X(1),X(2),X(3),DA)
373"IX",172.101,172.101,"SPO",2.5)
374K ^C0X(101,"SPO")
375"IX",172.101,172.101,"SPO",11.1,0)
376^.114IA^3^3
377"IX",172.101,172.101,"SPO",11.1,1,0)
3781^F^172.101^.03^^1^F
379"IX",172.101,172.101,"SPO",11.1,1,3)
380
381"IX",172.101,172.101,"SPO",11.1,2,0)
3822^F^172.101^.04^^2^F
383"IX",172.101,172.101,"SPO",11.1,2,3)
384
385"IX",172.101,172.101,"SPO",11.1,3,0)
3863^F^172.101^.05^^3^F
387"IX",172.101,172.101,"SPO",11.1,3,3)
388
389"IX",172.201,172.201,"B",0)
390172.201^B^regular B index for strings to support long strings^R^^F^IR^I^172.201^^^^^LS
391"IX",172.201,172.201,"B",1)
392S ^C0X(201,"B",$E(X,1,240),DA)=""
393"IX",172.201,172.201,"B",2)
394K ^C0X(201,"B",$E(X,1,240),DA)
395"IX",172.201,172.201,"B",2.5)
396K ^C0X(201,"B")
397"IX",172.201,172.201,"B",11.1,0)
398^.114IA^1^1
399"IX",172.201,172.201,"B",11.1,1,0)
4001^F^172.201^.01^240^1^F
401"KRN",.4,1511,-1)
4020^1
403"KRN",.4,1511,0)
404C0X PRINT GRAPH^3111207.1727^@^172.101^^@^3120605
405"KRN",.4,1511,"F",1)
406.03;W25;S~.04;C28;W25~.05;C54;W24~
407"KRN",.4,1511,"H")
408C0X TRIPLE LIST
409"MBREQ")
4100
411"ORD",5,.4)
412.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,"",%)
413"ORD",5,.4,0)
414PRINT TEMPLATE
415"QUES","XPF1",0)
416Y
417"QUES","XPF1","??")
418^D REP^XPDH
419"QUES","XPF1","A")
420Shall I write over your |FLAG| File
421"QUES","XPF1","B")
422YES
423"QUES","XPF1","M")
424D XPF1^XPDIQ
425"QUES","XPF2",0)
426Y
427"QUES","XPF2","??")
428^D DTA^XPDH
429"QUES","XPF2","A")
430Want my data |FLAG| yours
431"QUES","XPF2","B")
432YES
433"QUES","XPF2","M")
434D XPF2^XPDIQ
435"QUES","XPI1",0)
436YO
437"QUES","XPI1","??")
438^D INHIBIT^XPDH
439"QUES","XPI1","A")
440Want KIDS to INHIBIT LOGONs during the install
441"QUES","XPI1","B")
442NO
443"QUES","XPI1","M")
444D XPI1^XPDIQ
445"QUES","XPM1",0)
446PO^VA(200,:EM
447"QUES","XPM1","??")
448^D MG^XPDH
449"QUES","XPM1","A")
450Enter the Coordinator for Mail Group '|FLAG|'
451"QUES","XPM1","B")
452
453"QUES","XPM1","M")
454D XPM1^XPDIQ
455"QUES","XPO1",0)
456Y
457"QUES","XPO1","??")
458^D MENU^XPDH
459"QUES","XPO1","A")
460Want KIDS to Rebuild Menu Trees Upon Completion of Install
461"QUES","XPO1","B")
462NO
463"QUES","XPO1","M")
464D XPO1^XPDIQ
465"QUES","XPZ1",0)
466Y
467"QUES","XPZ1","??")
468^D OPT^XPDH
469"QUES","XPZ1","A")
470Want to DISABLE Scheduled Options, Menu Options, and Protocols
471"QUES","XPZ1","B")
472NO
473"QUES","XPZ1","M")
474D XPZ1^XPDIQ
475"QUES","XPZ2",0)
476Y
477"QUES","XPZ2","??")
478^D RTN^XPDH
479"QUES","XPZ2","A")
480Want to MOVE routines to other CPUs
481"QUES","XPZ2","B")
482NO
483"QUES","XPZ2","M")
484D XPZ2^XPDIQ
485"RTN")
4868
487"RTN","C0XF2N")
4880^2^B367797666
489"RTN","C0XF2N",1,0)
490C0XF2N ; GPL - Fileman Triples entry point routine ;10/13/11 17:05
491"RTN","C0XF2N",2,0)
492 ;;0.1;C0X;nopatch;noreleasedate;Build 10
493"RTN","C0XF2N",3,0)
494 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
495"RTN","C0XF2N",4,0)
496 ;General Public License See attached copy of the License.
497"RTN","C0XF2N",5,0)
498 ;
499"RTN","C0XF2N",6,0)
500 ;This program is free software; you can redistribute it and/or modify
501"RTN","C0XF2N",7,0)
502 ;it under the terms of the GNU General Public License as published by
503"RTN","C0XF2N",8,0)
504 ;the Free Software Foundation; either version 2 of the License, or
505"RTN","C0XF2N",9,0)
506 ;(at your option) any later version.
507"RTN","C0XF2N",10,0)
508 ;
509"RTN","C0XF2N",11,0)
510 ;This program is distributed in the hope that it will be useful,
511"RTN","C0XF2N",12,0)
512 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
513"RTN","C0XF2N",13,0)
514 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
515"RTN","C0XF2N",14,0)
516 ;GNU General Public License for more details.
517"RTN","C0XF2N",15,0)
518 ;
519"RTN","C0XF2N",16,0)
520 ;You should have received a copy of the GNU General Public License along
521"RTN","C0XF2N",17,0)
522 ;with this program; if not, write to the Free Software Foundation, Inc.,
523"RTN","C0XF2N",18,0)
524 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
525"RTN","C0XF2N",19,0)
526 ;
527"RTN","C0XF2N",20,0)
528 Q
529"RTN","C0XF2N",21,0)
530 ;
531"RTN","C0XF2N",22,0)
532 ; This is based on C0XMAIN but experiments with a fast load for triples
533"RTN","C0XF2N",23,0)
534 ; that will write directly to the fileman global
535"RTN","C0XF2N",24,0)
536 ; The file 172.101 is a F2N design style for triples, which means
537"RTN","C0XF2N",25,0)
538 ; that it is a Flat file with no subfiles, all fields at the root
539"RTN","C0XF2N",26,0)
540 ; ... it is a "2" file solution which means all strings are stored in
541"RTN","C0XF2N",27,0)
542 ; ... strings file and pointed to by the triples file
543"RTN","C0XF2N",28,0)
544 ; ... it is an N file because it has generated Node IDs instead of
545"RTN","C0XF2N",29,0)
546 ; ... DINUM which would use the IEN for the Node ID.
547"RTN","C0XF2N",30,0)
548 ; gpl 11/04/2011
549"RTN","C0XF2N",31,0)
550 ;
551"RTN","C0XF2N",32,0)
552INITFARY(ZFARY) ; INITIALIZE FILE NUMBERS AND OTHER USEFUL THINGS
553"RTN","C0XF2N",33,0)
554 ; FOR THE DEFAULT TRIPLE STORE. USE OTHER VALUES FOR SUPPORTING ADDITIONAL
555"RTN","C0XF2N",34,0)
556 ; TRIPLE STORES
557"RTN","C0XF2N",35,0)
558 I $D(@ZFARY) Q ; ALREADY INITIALIZED
559"RTN","C0XF2N",36,0)
560 S @ZFARY@("C0XTFN")=172.101 ; TRIPLES FILE NUMBER
561"RTN","C0XF2N",37,0)
562 S @ZFARY@("C0XSFN")=172.201 ; TRIPLES STRINGS FILE NUMBER
563"RTN","C0XF2N",38,0)
564 S @ZFARY@("C0XTN")=$NA(^C0X(101)) ; TRIPLES GLOBAL NAME
565"RTN","C0XF2N",39,0)
566 S @ZFARY@("C0XSN")=$NA(^C0X(201)) ; STRING FILE GLOBAL NAME
567"RTN","C0XF2N",40,0)
568 S @ZFARY@("C0XDIR")="/home/glilly/fmts/trunk/samples/smart-new/"
569"RTN","C0XF2N",41,0)
570 S @ZFARY@("BLKLOAD")=1 ; this file supports block load
571"RTN","C0XF2N",42,0)
572 S @ZFARY@("FMTSSTYLE")="F2N" ; fileman style
573"RTN","C0XF2N",43,0)
574 S @ZFARY@("REPLYFMT")="JSON"
575"RTN","C0XF2N",44,0)
576 D USEFARY(ZFARY)
577"RTN","C0XF2N",45,0)
578 Q
579"RTN","C0XF2N",46,0)
580 ;
581"RTN","C0XF2N",47,0)
582USEFARY(ZFARY) ; INITIALIZES VARIABLES SAVED IN ARRAY ZFARY
583"RTN","C0XF2N",48,0)
584 N ZI S ZI=""
585"RTN","C0XF2N",49,0)
586 F S ZI=$O(@ZFARY@(ZI)) Q:ZI="" D
587"RTN","C0XF2N",50,0)
588 . ;N ZX
589"RTN","C0XF2N",51,0)
590 . S ZX="S "_ZI_"="""_@ZFARY@(ZI)_""""
591"RTN","C0XF2N",52,0)
592 . ;W !,ZX
593"RTN","C0XF2N",53,0)
594 . X ZX
595"RTN","C0XF2N",54,0)
596 Q
597"RTN","C0XF2N",55,0)
598 ;
599"RTN","C0XF2N",56,0)
600FILEIN ; INTERACTIVE ENTRY POINT FOR OPTION TO READ IN A FILE
601"RTN","C0XF2N",57,0)
602 I '$D(C0XFARY) D INITFARY("C0XFARY")
603"RTN","C0XF2N",58,0)
604 D USEFARY("C0XFARY")
605"RTN","C0XF2N",59,0)
606 S DIR(0)="F^3:240"
607"RTN","C0XF2N",60,0)
608 S DIR("A")="File Directory"
609"RTN","C0XF2N",61,0)
610 S DIR("B")=C0XDIR
611"RTN","C0XF2N",62,0)
612 D ^DIR
613"RTN","C0XF2N",63,0)
614 I Y="^" Q ;
615"RTN","C0XF2N",64,0)
616 S C0XDIR=Y
617"RTN","C0XF2N",65,0)
618 S C0XFARY("C0XDIR")=Y
619"RTN","C0XF2N",66,0)
620 S DIR(0)="F^3:240"
621"RTN","C0XF2N",67,0)
622 S DIR("A")="File Name"
623"RTN","C0XF2N",68,0)
624 I '$D(C0XFN) S DIR("B")="qds.rdf"
625"RTN","C0XF2N",69,0)
626 E S DIR("B")=C0XFN
627"RTN","C0XF2N",70,0)
628 D ^DIR
629"RTN","C0XF2N",71,0)
630 I Y="" Q ;
631"RTN","C0XF2N",72,0)
632 I Y="^" Q ;
633"RTN","C0XF2N",73,0)
634 S C0XFN=Y
635"RTN","C0XF2N",74,0)
636 D IMPORT(C0XFN,C0XDIR,,"C0XFARY")
637"RTN","C0XF2N",75,0)
638 K C0XFDA
639"RTN","C0XF2N",76,0)
640 Q
641"RTN","C0XF2N",77,0)
642 ;
643"RTN","C0XF2N",78,0)
644IMPORT(FNAME,INDIR,INURL,FARY) ; EXTRINSIC THAT READS A FILE FROM THE STANDARD
645"RTN","C0XF2N",79,0)
646 ; DIRECTORY, LOADS IT INTO THE TRIPLESTORE AS TEXT, AND RETURNS THE
647"RTN","C0XF2N",80,0)
648 ; NODE NAME OF THE TEXT TRIPLE
649"RTN","C0XF2N",81,0)
650 ; INDIR IS THE OPTIONAL DIRECTORY (DEFAUTS TO STANDARD DIR)
651"RTN","C0XF2N",82,0)
652 ; INURL IS THE OPTIONAL URI FOR ACCESSING THE FILE FROM THE TRIPLE STORE
653"RTN","C0XF2N",83,0)
654 ; FARY IS THE OPTIONAL FILE ARRAY OF THE TRIPLE STORE TO USE
655"RTN","C0XF2N",84,0)
656 I '$D(FARY) D ;
657"RTN","C0XF2N",85,0)
658 . D INITFARY("C0XFARY")
659"RTN","C0XF2N",86,0)
660 . S FARY="C0XFARY"
661"RTN","C0XF2N",87,0)
662 D USEFARY(FARY)
663"RTN","C0XF2N",88,0)
664 N ZD,ZTMP
665"RTN","C0XF2N",89,0)
666 I '$D(INDIR) S INDIR=C0XDIR ; DIRECTORY OF THE RDF FILE
667"RTN","C0XF2N",90,0)
668 I $G(INURL)="" D ;
669"RTN","C0XF2N",91,0)
670 . ;N ZN2 S ZN2=$P(FNAME,".",1)_"_"_$P(FNAME,".",2) ; REMOVE THE DOT
671"RTN","C0XF2N",92,0)
672 . ;S INURL=FDIR_ZN2
673"RTN","C0XF2N",93,0)
674 . S INURL=INDIR_FNAME
675"RTN","C0XF2N",94,0)
676 N ZTMP
677"RTN","C0XF2N",95,0)
678 S ZTMP=$NA(^TMP("C0X",$J,"FILEIN",1)) ; WHERE TO PUT THE INCOMING FILE
679"RTN","C0XF2N",96,0)
680 K @ZTMP ; MAKE SURE IT'S CLEAR
681"RTN","C0XF2N",97,0)
682 S C0XSTART=$$NOW^XLFDT
683"RTN","C0XF2N",98,0)
684 W !,"STARTED: ",C0XSTART
685"RTN","C0XF2N",99,0)
686 W !,"READING IN: ",FNAME
687"RTN","C0XF2N",100,0)
688 I '$$FILEREAD(ZTMP,INDIR,FNAME,4) D Q ; QUIT IF NO SUCCESS
689"RTN","C0XF2N",101,0)
690 . W !,"ERROR READING FILE: ",INDIR,FNAME
691"RTN","C0XF2N",102,0)
692 S ZRDF=$NA(^TMP("C0X",$J,"FILEIN")) ; WITHOUT THE SUBSCRIPT
693"RTN","C0XF2N",103,0)
694 W !,$O(@ZRDF@(""),-1)," LINES READ"
695"RTN","C0XF2N",104,0)
696 D INSRDF(ZRDF,INURL,FARY) ; IMPORT AND PROCESS THE RDF
697"RTN","C0XF2N",105,0)
698 K INURL
699"RTN","C0XF2N",106,0)
700 K C0XFDA
701"RTN","C0XF2N",107,0)
702 ;K ^TMP("MXMLDOM",$J)
703"RTN","C0XF2N",108,0)
704 Q
705"RTN","C0XF2N",109,0)
706 ;
707"RTN","C0XF2N",110,0)
708WGET(ZURL,FARY) ; GET FROM THE INTERNET AN RDF FILE AND INSERT IT
709"RTN","C0XF2N",111,0)
710 ;
711"RTN","C0XF2N",112,0)
712 I '$D(FARY) D ;
713"RTN","C0XF2N",113,0)
714 . D INITFARY("C0XFARY")
715"RTN","C0XF2N",114,0)
716 . S FARY="C0XFARY"
717"RTN","C0XF2N",115,0)
718 D USEFARY(FARY)
719"RTN","C0XF2N",116,0)
720 ;N ZLOC,ZTMP
721"RTN","C0XF2N",117,0)
722 K ZTMP
723"RTN","C0XF2N",118,0)
724 S ZLOC=$NA(^TMP("C0X","WGET",$J))
725"RTN","C0XF2N",119,0)
726 K @ZLOC
727"RTN","C0XF2N",120,0)
728 S C0XSTART=$$NOW^XLFDT
729"RTN","C0XF2N",121,0)
730 W !,"STARTED: ",C0XSTART
731"RTN","C0XF2N",122,0)
732 W !,"DOWNLOADING: ",ZURL
733"RTN","C0XF2N",123,0)
734 S OK=$$httpGET^%zewdGTM(ZURL,.ZTMP)
735"RTN","C0XF2N",124,0)
736 M @ZLOC=ZTMP
737"RTN","C0XF2N",125,0)
738 S C0XLINES=$O(@ZLOC@(""),-1)
739"RTN","C0XF2N",126,0)
740 W !,C0XLINES," LINES READ"
741"RTN","C0XF2N",127,0)
742 S C0XDLC=$$NOW^XLFDT ; DOWNLOAD COMPLETE
743"RTN","C0XF2N",128,0)
744 W !,"DOWNLOAD COMPLETE AT ",C0XDLC
745"RTN","C0XF2N",129,0)
746 S C0XDIFF=$$FMDIFF^XLFDT(C0XDLC,C0XSTART,2)
747"RTN","C0XF2N",130,0)
748 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
749"RTN","C0XF2N",131,0)
750 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XLINES/C0XDIFF,".")," LINES PER SEC"
751"RTN","C0XF2N",132,0)
752 D INSRDF(ZLOC,ZURL,FARY)
753"RTN","C0XF2N",133,0)
754 Q
755"RTN","C0XF2N",134,0)
756 ;
757"RTN","C0XF2N",135,0)
758INSRDF(ZRDF,ZNAME,FARY) ; INSERT AN RDF FILE INTO THE STORE AND PROCESS
759"RTN","C0XF2N",136,0)
760 ; ZRDF IS PASSED BY NAME
761"RTN","C0XF2N",137,0)
762 I '$D(FARY) D ;
763"RTN","C0XF2N",138,0)
764 . D INITFARY("C0XFARY")
765"RTN","C0XF2N",139,0)
766 . S FARY="C0XFARY"
767"RTN","C0XF2N",140,0)
768 D USEFARY(FARY)
769"RTN","C0XF2N",141,0)
770 S BATCNT=0 ; BATCH COUNTER
771"RTN","C0XF2N",142,0)
772 S BATMAX=10000 ; TRY BATCHES OF THIS SIZE
773"RTN","C0XF2N",143,0)
774 N ZGRAPH,ZSUBJECT
775"RTN","C0XF2N",144,0)
776 S ZGRAPH="_:G"_$$LKY9 ; RANDOM GRAPH NAME
777"RTN","C0XF2N",145,0)
778 S ZSUBJECT=$$ANONS() ; RANDOM ANOYMOUS SUBJECT
779"RTN","C0XF2N",146,0)
780 D ADD(ZGRAPH,ZSUBJECT,"fmts:url",ZNAME,FARY)
781"RTN","C0XF2N",147,0)
782 N ZTXTNM
783"RTN","C0XF2N",148,0)
784 S ZTXTNM="_TXT_INCOMING_RDF_FILE_"_ZNAME_"_"_$$LKY9 ; NAME FOR TEXT NODE
785"RTN","C0XF2N",149,0)
786 D ADD(ZGRAPH,ZSUBJECT,"fmts:fileSource",ZTXTNM,FARY)
787"RTN","C0XF2N",150,0)
788 D ADD(ZGRAPH,ZSUBJECT,"fmts:fileTag",$$name2tag(ZNAME),FARY)
789"RTN","C0XF2N",151,0)
790 D SWUPDIE(.C0XFDA) ; TRY IT OUT
791"RTN","C0XF2N",152,0)
792 K C0XCNT ;RESET FOR NEXT TIME
793"RTN","C0XF2N",153,0)
794 D STORETXT(ZRDF,ZTXTNM,FARY)
795"RTN","C0XF2N",154,0)
796 W !,"ADDED: ",ZGRAPH," ",ZSUBJECT," fmts:fileSource ",ZTXTNM
797"RTN","C0XF2N",155,0)
798 D PROCESS(.G,ZRDF,ZNAME,ZGRAPH,FARY) ; PARSE AND INSERT THE RDF
799"RTN","C0XF2N",156,0)
800 Q
801"RTN","C0XF2N",157,0)
802 ;
803"RTN","C0XF2N",158,0)
804name2tag(zname) ; extrinsic which returns a tag derived from a name
805"RTN","C0XF2N",159,0)
806 ; /home/vista/project.xml ==> project
807"RTN","C0XF2N",160,0)
808 q $p($re($p($re(zname),"/")),".")
809"RTN","C0XF2N",161,0)
810 ;
811"RTN","C0XF2N",162,0)
812STORETXT(ZTXT,ZNAME,FARY) ; STORE TEXT IN THE TRIPLESTORE AT ZNAME
813"RTN","C0XF2N",163,0)
814 ;
815"RTN","C0XF2N",164,0)
816 I '$D(FARY) D ;
817"RTN","C0XF2N",165,0)
818 . D INITFARY("C0XFARY")
819"RTN","C0XF2N",166,0)
820 . S FARY="C0XFARY"
821"RTN","C0XF2N",167,0)
822 D USEFARY(FARY)
823"RTN","C0XF2N",168,0)
824 N ZIEN
825"RTN","C0XF2N",169,0)
826 S ZIEN=$$IENOF(ZNAME,FARY) ; GET THE IEN
827"RTN","C0XF2N",170,0)
828 D CLEAN^DILF
829"RTN","C0XF2N",171,0)
830 K ZERR
831"RTN","C0XF2N",172,0)
832 D WP^DIE(C0XSFN,ZIEN_",",1,,ZTXT,"ZERR")
833"RTN","C0XF2N",173,0)
834 I $D(ZERR) D Q ;
835"RTN","C0XF2N",174,0)
836 . W !,"ERROR CREATING WORD PROCESSING FIELD"
837"RTN","C0XF2N",175,0)
838 . S C0XERR="ERROR CREATING WORD PROCESSING FIELD"
839"RTN","C0XF2N",176,0)
840 . D ^%ZTER ; error trap
841"RTN","C0XF2N",177,0)
842 Q
843"RTN","C0XF2N",178,0)
844 ;
845"RTN","C0XF2N",179,0)
846GETTXT(ZRTN,ZNAME,FARY) ; RETURNS RDF SOURCE OR OTHER TEXT
847"RTN","C0XF2N",180,0)
848 ; ZRTN IS PASSED BY REFERENCE
849"RTN","C0XF2N",181,0)
850 I '$D(FARY) D ;
851"RTN","C0XF2N",182,0)
852 . D INITFARY("C0XFARY")
853"RTN","C0XF2N",183,0)
854 . S FARY="C0XFARY"
855"RTN","C0XF2N",184,0)
856 D USEFARY(FARY)
857"RTN","C0XF2N",185,0)
858 N ZIEN
859"RTN","C0XF2N",186,0)
860 S ZIEN=$$IENOF(ZNAME)
861"RTN","C0XF2N",187,0)
862 S OK=$$GET1^DIQ(C0XSFN,ZIEN_",",1,,"ZRTN")
863"RTN","C0XF2N",188,0)
864 Q
865"RTN","C0XF2N",189,0)
866 ;
867"RTN","C0XF2N",190,0)
868WHERETXT(ZNAME,FARY) ; EXTRINSIC WHICH RETURNS THE NAME OF THE GLOBAL
869"RTN","C0XF2N",191,0)
870 ; WHERE THE TEXT IS LOCATED. NAME IS THE NAME OF THE STRING
871"RTN","C0XF2N",192,0)
872 I '$D(FARY) D ;
873"RTN","C0XF2N",193,0)
874 . D INITFARY("C0XFARY")
875"RTN","C0XF2N",194,0)
876 . S FARY="C0XFARY"
877"RTN","C0XF2N",195,0)
878 D USEFARY(FARY)
879"RTN","C0XF2N",196,0)
880 N ZIEN
881"RTN","C0XF2N",197,0)
882 S ZIEN=$$IENOF(ZNAME)
883"RTN","C0XF2N",198,0)
884 Q $NA(@C0XSN@(ZIEN,1))
885"RTN","C0XF2N",199,0)
886 ;
887"RTN","C0XF2N",200,0)
888FILEREAD(ZINTMP,ZDIR,ZFNAME,ZLVL) ; READS A FILE INTO ZINTMP USING FTG^%ZISH
889"RTN","C0XF2N",201,0)
890 ; ZINTMP IS PASSED BY NAME AND INCLUDES THE NEW SUBSCRIPT
891"RTN","C0XF2N",202,0)
892 ; IE ^TMP("C0X","FILEIN",1)
893"RTN","C0XF2N",203,0)
894 ; ZLVL IN THIS CASE WOULD BE 3 INCREMENTING THE 1
895"RTN","C0XF2N",204,0)
896 ; EXTRINSIC WHICH RETURNS THE RESULT OF FTG^%ZISH
897"RTN","C0XF2N",205,0)
898 S OK=$$FTG^%ZISH(ZDIR,FNAME,ZINTMP,ZLVL)
899"RTN","C0XF2N",206,0)
900 Q OK
901"RTN","C0XF2N",207,0)
902 ;
903"RTN","C0XF2N",208,0)
904TESTPROC ; TEST PROCESS WITH EXISTING SMALL RDF FILE
905"RTN","C0XF2N",209,0)
906 S ZIN=$NA(^TMP("C0X",12226,"FILEIN"))
907"RTN","C0XF2N",210,0)
908 S ZGRAPH="/test/rdfFile"
909"RTN","C0XF2N",211,0)
910 S ZM="/test/rdfFile/meta"
911"RTN","C0XF2N",212,0)
912 D PROCESS(.G,ZIN,ZGRAPH,ZM)
913"RTN","C0XF2N",213,0)
914 Q
915"RTN","C0XF2N",214,0)
916 ;
917"RTN","C0XF2N",215,0)
918VISTAOWL ;
919"RTN","C0XF2N",216,0)
920 S ZRDF=$NA(^TMP("C0X",542,"FILEIN"))
921"RTN","C0XF2N",217,0)
922 S ZNAME="/home/glilly/vistaowl/VistAOWL.owl"
923"RTN","C0XF2N",218,0)
924 S ZGRAPH="_:G431590209"
925"RTN","C0XF2N",219,0)
926 S FARY="C0XFARY"
927"RTN","C0XF2N",220,0)
928 D INITFARY(FARY)
929"RTN","C0XF2N",221,0)
930 S C0XDOCID=1
931"RTN","C0XF2N",222,0)
932 S BATCNT=0
933"RTN","C0XF2N",223,0)
934 S BATMAX=10000
935"RTN","C0XF2N",224,0)
936 D PROCESS(.G,ZRDF,ZGRAPH,ZNAME,FARY)
937"RTN","C0XF2N",225,0)
938 Q
939"RTN","C0XF2N",226,0)
940 ;
941"RTN","C0XF2N",227,0)
942PROCESS(ZRTN,ZRDF,ZGRF,ZMETA,FARY) ; PROCESS AN INCOMING RDF FILE
943"RTN","C0XF2N",228,0)
944 ; ZRTN IS PASS BY REFERENCE AND RETURNS MESSAGES ABOUT THE PROCESSING
945"RTN","C0XF2N",229,0)
946 ; ZRDF IS PASSED BY NAME AND IS THE GLOBAL CONTAINING THE RDF FILE
947"RTN","C0XF2N",230,0)
948 ; ZGRF IS THE NAME OF THE GRAPH TO USE IN THE TRIPLE STORE FOR RESULTS
949"RTN","C0XF2N",231,0)
950 ; ZMETA IS OPTIONAL AND IS THE NAME OF THE GRAPH TO STORE METADATA
951"RTN","C0XF2N",232,0)
952 ;
953"RTN","C0XF2N",233,0)
954 I '$D(FARY) D ;
955"RTN","C0XF2N",234,0)
956 . D INITFARY("C0XFARY")
957"RTN","C0XF2N",235,0)
958 . S FARY="C0XFARY"
959"RTN","C0XF2N",236,0)
960 D USEFARY(FARY)
961"RTN","C0XF2N",237,0)
962 ;N BATCNT
963"RTN","C0XF2N",238,0)
964 ;N BATMAX
965"RTN","C0XF2N",239,0)
966 ; -- first parse the rdf file with the MXML parser
967"RTN","C0XF2N",240,0)
968 ;S C0XDOCID=$$PARSE^C0CNHIN(ZRDF,"C0XARRAY") ; PARSE WITH MXML
969"RTN","C0XF2N",241,0)
970 S C0XDLC2=$$NOW^XLFDT ; START OF PARSE
971"RTN","C0XF2N",242,0)
972 I @ZRDF@(1)'["<?xml" D Q ;
973"RTN","C0XF2N",243,0)
974 . K @ZRDF ; don't need the input buffer
975"RTN","C0XF2N",244,0)
976 . W !,"Not an XML file"
977"RTN","C0XF2N",245,0)
978 S C0XDOCID=$$EN^MXMLDOM(ZRDF,"W") ;
979"RTN","C0XF2N",246,0)
980 ;B
981"RTN","C0XF2N",247,0)
982 K @ZRDF ; DON'T NEED INPUT BUFFER ANYMORE
983"RTN","C0XF2N",248,0)
984 ; -- assign the MXLM dom global name to ZDOM
985"RTN","C0XF2N",249,0)
986 S ZDOM=$NA(^TMP("MXMLDOM",$J,C0XDOCID))
987"RTN","C0XF2N",250,0)
988 ;S ZDOM=$NA(^TMP("MXMLDOM",16850,C0XDOCID)) ;VISTAOWL DOM
989"RTN","C0XF2N",251,0)
990 S C0XNODE=$O(@ZDOM@(""),-1)
991"RTN","C0XF2N",252,0)
992 W !,C0XNODE," XML NODES PARSED"
993"RTN","C0XF2N",253,0)
994 S C0XPRS=$$NOW^XLFDT ; PARSE COMPLETE
995"RTN","C0XF2N",254,0)
996 W !,"PARSE COMPLETE AT ",C0XPRS
997"RTN","C0XF2N",255,0)
998 S C0XDIFF=$$FMDIFF^XLFDT(C0XPRS,C0XDLC2,2)
999"RTN","C0XF2N",256,0)
1000 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1001"RTN","C0XF2N",257,0)
1002 I C0XDIFF'=0 D ;
1003"RTN","C0XF2N",258,0)
1004 . W !," APPROXIMATELY ",$P(C0XNODE/C0XDIFF,".")," NODES PER SECOND"
1005"RTN","C0XF2N",259,0)
1006 ; -- populate the metagraph to point to the graph with status unfinished
1007"RTN","C0XF2N",260,0)
1008 S METAS=$$ANONS ; GET AN ANONOMOUS RANDOM SUBJECT
1009"RTN","C0XF2N",261,0)
1010 I '$D(ZMETA) S ZMETA="_:G"_$$LKY9 ; RANDOM GRAPH NAME FOR METAGRAPH
1011"RTN","C0XF2N",262,0)
1012 D ADD(ZMETA,METAS,"fmts:about",ZGRF,FARY) ; POINT THE META TO THE GRAPH
1013"RTN","C0XF2N",263,0)
1014 D ADD(ZMETA,METAS,"fmts:status","unfinished",FARY) ; mark as unfinished
1015"RTN","C0XF2N",264,0)
1016 W !,"INSERTING GRAPH: ",ZGRF
1017"RTN","C0XF2N",265,0)
1018 ;S C0XDATE=$$FMDTOUTC^C0CUTIL($$NOW^XLFDT,"DT")
1019"RTN","C0XF2N",266,0)
1020 S C0XDATE=$$NOW^XLFDT
1021"RTN","C0XF2N",267,0)
1022 D ADD(ZMETA,METAS,"fmts:dateTime",C0XDATE,FARY)
1023"RTN","C0XF2N",268,0)
1024 D SWUPDIE(.C0XFDA) ; commit the metagraph changes to the triple store
1025"RTN","C0XF2N",269,0)
1026 ; --
1027"RTN","C0XF2N",270,0)
1028 ; -- pull out the vocabularies in the RDF statement. marked with xmlns:
1029"RTN","C0XF2N",271,0)
1030 ; -- put them in a local variable for quick reference
1031"RTN","C0XF2N",272,0)
1032 ; -- TODO: create a graph for vocabularies and validate incoming against it
1033"RTN","C0XF2N",273,0)
1034 ;
1035"RTN","C0XF2N",274,0)
1036 S C0XVOC=""
1037"RTN","C0XF2N",275,0)
1038 N ZI,ZJ,ZK S ZI=""
1039"RTN","C0XF2N",276,0)
1040 F S ZI=$O(@ZDOM@(1,"A",ZI)) Q:ZI="" D ; FOR EACH xmlns
1041"RTN","C0XF2N",277,0)
1042 . S ZVOC=$P(ZI,"xmlns:",2)
1043"RTN","C0XF2N",278,0)
1044 . I ZVOC'="" S C0XVOC(ZVOC)=$G(@ZDOM@(1,"A",ZI))
1045"RTN","C0XF2N",279,0)
1046 I $D(DEBUG) D ;
1047"RTN","C0XF2N",280,0)
1048 . W !,"VOCABS:"
1049"RTN","C0XF2N",281,0)
1050 . N ZZ S ZZ=""
1051"RTN","C0XF2N",282,0)
1052 . F S ZZ=$O(C0XVOC(ZZ)) Q:ZZ="" W !,ZZ,":",C0XVOC(ZZ)
1053"RTN","C0XF2N",283,0)
1054 ;
1055"RTN","C0XF2N",284,0)
1056 ; -- look for children called rdf:Description. quit if none. not an rdf file
1057"RTN","C0XF2N",285,0)
1058 ;
1059"RTN","C0XF2N",286,0)
1060 S C0XTYPE("rdf:Description")=1
1061"RTN","C0XF2N",287,0)
1062 S C0XTYPE("owl:ObjectProperty")=1
1063"RTN","C0XF2N",288,0)
1064 S C0XTYPE("owl:Ontology")=1
1065"RTN","C0XF2N",289,0)
1066 S C0XTYPE("owl:Class")=1
1067"RTN","C0XF2N",290,0)
1068 S C0XTYPE("rdfs:subClassOf")=1
1069"RTN","C0XF2N",291,0)
1070 S C0XTYPE("rdf:RDF")=1
1071"RTN","C0XF2N",292,0)
1072 S ZI=$O(@ZDOM@(1,"C",""))
1073"RTN","C0XF2N",293,0)
1074 I '$G(C0XTYPE(@ZDOM@(1,"C",ZI))) D ;Q ; not an rdf file
1075"RTN","C0XF2N",294,0)
1076 . W !,"Unusual RDF file ",@ZDOM@(1,"C",ZI)
1077"RTN","C0XF2N",295,0)
1078 . ;W !,"Error. Not an RDF file. Cannot process."
1079"RTN","C0XF2N",296,0)
1080 . D SHOW(1)
1081"RTN","C0XF2N",297,0)
1082 ;
1083"RTN","C0XF2N",298,0)
1084 ; -- now process the rdf description children
1085"RTN","C0XF2N",299,0)
1086 ;
1087"RTN","C0XF2N",300,0)
1088 S ZI=""
1089"RTN","C0XF2N",301,0)
1090 S (C0XSUB,C0XPRE,C0XOBJ)="" ; INITIALIZE subject, object and predicate
1091"RTN","C0XF2N",302,0)
1092 F S ZI=$O(@ZDOM@(1,"C",ZI)) Q:ZI="" D ;
1093"RTN","C0XF2N",303,0)
1094 . ; -- we are skipping any child that is not rdf:Description
1095"RTN","C0XF2N",304,0)
1096 . ; -- TODO: check to see if this is right in general
1097"RTN","C0XF2N",305,0)
1098 . ;
1099"RTN","C0XF2N",306,0)
1100 . IF '$G(C0XTYPE(@ZDOM@(1,"C",ZI))) D Q ;
1101"RTN","C0XF2N",307,0)
1102 . . W !,"SKIPPING NODE: ",ZI
1103"RTN","C0XF2N",308,0)
1104 . ; -- now looking for the subject for the triples
1105"RTN","C0XF2N",309,0)
1106 . S ZX=$G(@ZDOM@(ZI,"A","rdf:about"))
1107"RTN","C0XF2N",310,0)
1108 . I ZX'="" D ; we have the subject
1109"RTN","C0XF2N",311,0)
1110 . . ;W " about: ",ZX
1111"RTN","C0XF2N",312,0)
1112 . . S C0XSUB=ZX
1113"RTN","C0XF2N",313,0)
1114 . E D ;
1115"RTN","C0XF2N",314,0)
1116 . . S ZX=$G(@ZDOM@(ZI,"A","rdf:nodeID")) ; node id is another style of subject
1117"RTN","C0XF2N",315,0)
1118 . . I ZX'="" D ;
1119"RTN","C0XF2N",316,0)
1120 . . . S C0XSUB=ZX
1121"RTN","C0XF2N",317,0)
1122 . I C0XSUB="" S C0XSUB=$$ANONS ; DEFAULT TO BLANK SUBJECT
1123"RTN","C0XF2N",318,0)
1124 . ;
1125"RTN","C0XF2N",319,0)
1126 . ; -- we now have the subject. the children of this node have the rest
1127"RTN","C0XF2N",320,0)
1128 . ;
1129"RTN","C0XF2N",321,0)
1130 . S ZJ="" ; for the children of the rdf:Description nodes
1131"RTN","C0XF2N",322,0)
1132 . F S ZJ=$O(@ZDOM@(ZI,"C",ZJ)) Q:ZJ="" D ; for each child
1133"RTN","C0XF2N",323,0)
1134 . . S C0XPRE=@ZDOM@(ZJ) ; the predicate without a prefix
1135"RTN","C0XF2N",324,0)
1136 . . S ZX=$G(@ZDOM@(ZJ,"A","xmlns")) ; name space
1137"RTN","C0XF2N",325,0)
1138 . . I ZX'="" S C0XPRE=ZX_C0XPRE ; add the namespace prefix
1139"RTN","C0XF2N",326,0)
1140 . . I C0XPRE[":" D ; expand using vocabulary
1141"RTN","C0XF2N",327,0)
1142 . . . N ZB,ZA
1143"RTN","C0XF2N",328,0)
1144 . . . S ZB=$P(C0XPRE,":",1)
1145"RTN","C0XF2N",329,0)
1146 . . . S ZA=$P(C0XPRE,":",2)
1147"RTN","C0XF2N",330,0)
1148 . . . I $G(C0XVOC(ZB))'="" D ;
1149"RTN","C0XF2N",331,0)
1150 . . . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
1151"RTN","C0XF2N",332,0)
1152 . . S ZY=$G(@ZDOM@(ZJ,"A","rdf:resource")) ; potential object
1153"RTN","C0XF2N",333,0)
1154 . . I ZY'="" D Q ;
1155"RTN","C0XF2N",334,0)
1156 . . . S C0XOBJ=$$EXT^C0XUTIL(ZY) ; object
1157"RTN","C0XF2N",335,0)
1158 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; finally. our first real triple
1159"RTN","C0XF2N",336,0)
1160 . . ; -- this is an else because of the quit above
1161"RTN","C0XF2N",337,0)
1162 . . S ZX=$G(@ZDOM@(ZJ,"A","rdf:nodeID")) ; fishing for nodeId object
1163"RTN","C0XF2N",338,0)
1164 . . I ZX'="" D Q ; got one
1165"RTN","C0XF2N",339,0)
1166 . . . S C0XOBJ=ZX ; we are using the incoming nodeIDs as object/subject
1167"RTN","C0XF2N",340,0)
1168 . . . ; without change... this could be foolish .. look at it again later
1169"RTN","C0XF2N",341,0)
1170 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
1171"RTN","C0XF2N",342,0)
1172 . . S C0XOBJ=$G(@ZDOM@(ZJ,"T",1)) ; hopefully an object is here
1173"RTN","C0XF2N",343,0)
1174 . . I C0XOBJ="" D Q ; not a happy situation
1175"RTN","C0XF2N",344,0)
1176 . . . W !,"ERROR, NO OBJECT FOUND FOR NODE: ",ZJ
1177"RTN","C0XF2N",345,0)
1178 . . S C0XOBJ=$$EXT^C0XUTIL(C0XOBJ) ; might be namespaced
1179"RTN","C0XF2N",346,0)
1180 . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
1181"RTN","C0XF2N",347,0)
1182 S C0XTRP=$$NOW^XLFDT ; PARSE COMPLETE
1183"RTN","C0XF2N",348,0)
1184 W !,"TRIPLES COMPLETE AT ",C0XTRP
1185"RTN","C0XF2N",349,0)
1186 S C0XDIFF=$$FMDIFF^XLFDT(C0XTRP,C0XPRS,2)
1187"RTN","C0XF2N",350,0)
1188 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1189"RTN","C0XF2N",351,0)
1190 I C0XDIFF'=0 D ;
1191"RTN","C0XF2N",352,0)
1192 . W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
1193"RTN","C0XF2N",353,0)
1194 W !,"INSERTING ",C0XCNT," TRIPLES"
1195"RTN","C0XF2N",354,0)
1196 I $D(C0XFDA) D ;
1197"RTN","C0XF2N",355,0)
1198 . I $G(BLKLOAD) D ;
1199"RTN","C0XF2N",356,0)
1200 . . D BULKLOAD(.C0XFDA)
1201"RTN","C0XF2N",357,0)
1202 . E D ;
1203"RTN","C0XF2N",358,0)
1204 . . D UPDIE(.C0XFDA) ; commit the updates to the file
1205"RTN","C0XF2N",359,0)
1206 ; next, mark the graph as finished
1207"RTN","C0XF2N",360,0)
1208 S C0XINS=$$NOW^XLFDT ; PARSE COMPLETE
1209"RTN","C0XF2N",361,0)
1210 W !,"INSERTION COMPLETE AT ",C0XPRS
1211"RTN","C0XF2N",362,0)
1212 S C0XDIFF=$$FMDIFF^XLFDT(C0XINS,C0XTRP,2)
1213"RTN","C0XF2N",363,0)
1214 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1215"RTN","C0XF2N",364,0)
1216 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," NODES PER SECOND"
1217"RTN","C0XF2N",365,0)
1218 S C0XEND=$$NOW^XLFDT
1219"RTN","C0XF2N",366,0)
1220 W !," ENDED AT: ",C0XEND
1221"RTN","C0XF2N",367,0)
1222 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XSTART,2)
1223"RTN","C0XF2N",368,0)
1224 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
1225"RTN","C0XF2N",369,0)
1226 I C0XDIFF'=0 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
1227"RTN","C0XF2N",370,0)
1228 Q
1229"RTN","C0XF2N",371,0)
1230 ;
1231"RTN","C0XF2N",372,0)
1232SHOW(ZN) ;
1233"RTN","C0XF2N",373,0)
1234 I '$D(C0XJOB) S C0XJOB=$J
1235"RTN","C0XF2N",374,0)
1236 N ZD
1237"RTN","C0XF2N",375,0)
1238 S ZD=$NA(^TMP("MXMLDOM",C0XJOB,1,ZN))
1239"RTN","C0XF2N",376,0)
1240 W ZD,"=",@ZD
1241"RTN","C0XF2N",377,0)
1242 F S ZD=$Q(@ZD) Q:$QS(ZD,4)'=ZN W !,ZD,"=",@ZD
1243"RTN","C0XF2N",378,0)
1244 ;ZWR ^TMP("MXMLDOM",C0XJOB,1,ZN,*)
1245"RTN","C0XF2N",379,0)
1246 Q
1247"RTN","C0XF2N",380,0)
1248 ;
1249"RTN","C0XF2N",381,0)
1250ANONS() ; RETURNS AN ANONOMOUS SUBJECT
1251"RTN","C0XF2N",382,0)
1252 Q "iDPsDPss"_$$LKY9
1253"RTN","C0XF2N",383,0)
1254 ;
1255"RTN","C0XF2N",384,0)
1256NEWG(NGRAPH,NMETA) ; CREATES A NEW META GRAPH, MARKS IT AS UNFINISHED
1257"RTN","C0XF2N",385,0)
1258 ; THEN CREATES A NEW GRAPH AND POINTS THE METAGRAPH TO IT
1259"RTN","C0XF2N",386,0)
1260 ; NGRAPH AND NMETA ARE PASSED BY REFERENCE AND ARE THE RETURN
1261"RTN","C0XF2N",387,0)
1262 S NGRAPH="G"_$$LKY9
1263"RTN","C0XF2N",388,0)
1264 S NMETA=NGRAPH_"A"
1265"RTN","C0XF2N",389,0)
1266 Q
1267"RTN","C0XF2N",390,0)
1268 ;
1269"RTN","C0XF2N",391,0)
1270STARTADD ; INITIALIZE C0XFDA AND BATCNT
1271"RTN","C0XF2N",392,0)
1272 K C0XFDA
1273"RTN","C0XF2N",393,0)
1274 K BATCNT
1275"RTN","C0XF2N",394,0)
1276 Q
1277"RTN","C0XF2N",395,0)
1278 ;
1279"RTN","C0XF2N",396,0)
1280ADD(ZG,ZS,ZP,ZO,FARY) ; ADD A TRIPLE TO THE TRIPLESTORE. ALL VALUES ARE TEXT
1281"RTN","C0XF2N",397,0)
1282 ; THE FDA IS SET UP BUT THE FILES ARE NOT UPDATED. CALL UPDIE TO COMPLETE
1283"RTN","C0XF2N",398,0)
1284 I '$D(FARY) D ;
1285"RTN","C0XF2N",399,0)
1286 . D INITFARY("C0XFARY")
1287"RTN","C0XF2N",400,0)
1288 . S FARY="C0XFARY"
1289"RTN","C0XF2N",401,0)
1290 D USEFARY(FARY)
1291"RTN","C0XF2N",402,0)
1292 I '$D(C0XCNT) S C0XCNT=0
1293"RTN","C0XF2N",403,0)
1294 N ZNODE
1295"RTN","C0XF2N",404,0)
1296 S ZNODE="N"_$$LKY17
1297"RTN","C0XF2N",405,0)
1298 N ZNARY ; GET READY TO CALL IENOFA
1299"RTN","C0XF2N",406,0)
1300 I (ZG="")!(ZS="")!(ZP="")!(ZO="") D Q ;
1301"RTN","C0XF2N",407,0)
1302 . I $G(DEBUG) W !,"Error Empty String ZG:"_ZG_" ZS:"_ZS_" ZP:"_ZP_" ZO"_ZO
1303"RTN","C0XF2N",408,0)
1304 S ZNARY("ZG",ZG)=""
1305"RTN","C0XF2N",409,0)
1306 S ZNARY("ZS",ZS)=""
1307"RTN","C0XF2N",410,0)
1308 S ZNARY("ZP",ZP)=""
1309"RTN","C0XF2N",411,0)
1310 S ZNARY("ZO",ZO)=""
1311"RTN","C0XF2N",412,0)
1312 D IENOFA(.ZIENS,.ZNARY,FARY) ; RESOLVE/ADD STRINGS
1313"RTN","C0XF2N",413,0)
1314 ;S ZGIEN=$$IENOF(ZG) ; LAYGO TO GET IEN
1315"RTN","C0XF2N",414,0)
1316 ;S ZSIEN=$$IENOF(ZS)
1317"RTN","C0XF2N",415,0)
1318 ;S ZPIEN=$$IENOF(ZP)
1319"RTN","C0XF2N",416,0)
1320 ;S ZOIEN=$$IENOF(ZO)
1321"RTN","C0XF2N",417,0)
1322 ;I $D(C0XFDA) D UPDIE ; ADD THE STRINGS IF NEEDED
1323"RTN","C0XF2N",418,0)
1324 I '$D(BATCNT) S BATCNT=0
1325"RTN","C0XF2N",419,0)
1326 S BATCNT=BATCNT+1
1327"RTN","C0XF2N",420,0)
1328 S C0XCNT=C0XCNT+1
1329"RTN","C0XF2N",421,0)
1330 I $G(BLKLOAD)=1 D ; we are using bulk load
1331"RTN","C0XF2N",422,0)
1332 . S C0XFDA(C0XTFN,BATCNT,.01)=ZNODE
1333"RTN","C0XF2N",423,0)
1334 . S C0XFDA(C0XTFN,BATCNT,.02)=$O(ZIENS("IEN","ZG",""))
1335"RTN","C0XF2N",424,0)
1336 . S C0XFDA(C0XTFN,BATCNT,.03)=$O(ZIENS("IEN","ZS",""))
1337"RTN","C0XF2N",425,0)
1338 . S C0XFDA(C0XTFN,BATCNT,.04)=$O(ZIENS("IEN","ZP",""))
1339"RTN","C0XF2N",426,0)
1340 . S C0XFDA(C0XTFN,BATCNT,.05)=$O(ZIENS("IEN","ZO",""))
1341"RTN","C0XF2N",427,0)
1342 E D ;
1343"RTN","C0XF2N",428,0)
1344 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.01)=ZNODE
1345"RTN","C0XF2N",429,0)
1346 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.02)=$O(ZIENS("IEN","ZG",""))
1347"RTN","C0XF2N",430,0)
1348 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.03)=$O(ZIENS("IEN","ZS",""))
1349"RTN","C0XF2N",431,0)
1350 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.04)=$O(ZIENS("IEN","ZP",""))
1351"RTN","C0XF2N",432,0)
1352 . S C0XFDA(C0XTFN,"?+"_BATCNT_",",.05)=$O(ZIENS("IEN","ZO",""))
1353"RTN","C0XF2N",433,0)
1354 I '$D(BATMAX) S BATMAX=10000
1355"RTN","C0XF2N",434,0)
1356 I BATCNT=BATMAX D ; BATCH IS DONE
1357"RTN","C0XF2N",435,0)
1358 . I $G(BLKLOAD) D ; bulk load
1359"RTN","C0XF2N",436,0)
1360 . . D BULKLOAD(.C0XFDA) ; bulk load the batch
1361"RTN","C0XF2N",437,0)
1362 . E D ; no bulk load
1363"RTN","C0XF2N",438,0)
1364 . . D UPDIE(.C0XFDA)
1365"RTN","C0XF2N",439,0)
1366 . K C0XFDA
1367"RTN","C0XF2N",440,0)
1368 . S BATCNT=0 ; RESET COUNTER
1369"RTN","C0XF2N",441,0)
1370 ; REMEMBER TO CALL UPDIE WHEN YOU'RE DONE
1371"RTN","C0XF2N",442,0)
1372 Q
1373"RTN","C0XF2N",443,0)
1374 ;
1375"RTN","C0XF2N",444,0)
1376LKY5() ;EXTRINIC THAT RETURNS A RANDOM 5 DIGIT NUMBER. USED FOR GENERATING
1377"RTN","C0XF2N",445,0)
1378 ; UNIQUE NODE AND GRAPH NAMES
1379"RTN","C0XF2N",446,0)
1380 N ZN,ZI
1381"RTN","C0XF2N",447,0)
1382 S ZN=""
1383"RTN","C0XF2N",448,0)
1384 F ZI=1:1:5 D ;
1385"RTN","C0XF2N",449,0)
1386 . S ZN=ZN_$R(10)
1387"RTN","C0XF2N",450,0)
1388 Q ZN
1389"RTN","C0XF2N",451,0)
1390 ;
1391"RTN","C0XF2N",452,0)
1392LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
1393"RTN","C0XF2N",453,0)
1394 ; UNIQUE NODE AND GRAPH NAMES
1395"RTN","C0XF2N",454,0)
1396 N ZN,ZI
1397"RTN","C0XF2N",455,0)
1398 S ZN=""
1399"RTN","C0XF2N",456,0)
1400 F ZI=1:1:9 D ;
1401"RTN","C0XF2N",457,0)
1402 . S ZN=ZN_$R(10)
1403"RTN","C0XF2N",458,0)
1404 Q ZN
1405"RTN","C0XF2N",459,0)
1406 ;
1407"RTN","C0XF2N",460,0)
1408LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
1409"RTN","C0XF2N",461,0)
1410 ; UNIQUE NODE AND GRAPH NAMES
1411"RTN","C0XF2N",462,0)
1412 N ZN,ZI
1413"RTN","C0XF2N",463,0)
1414 S ZN=""
1415"RTN","C0XF2N",464,0)
1416 F ZI=1:1:17 D ;
1417"RTN","C0XF2N",465,0)
1418 . S ZN=ZN_$R(10)
1419"RTN","C0XF2N",466,0)
1420 Q ZN
1421"RTN","C0XF2N",467,0)
1422 ;
1423"RTN","C0XF2N",468,0)
1424 ; these routines add the string if it is not found
1425"RTN","C0XF2N",469,0)
1426 ;
1427"RTN","C0XF2N",470,0)
1428IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
1429"RTN","C0XF2N",471,0)
1430 I '$D(FARY) D ;
1431"RTN","C0XF2N",472,0)
1432 . D INITFARY("C0XFARY")
1433"RTN","C0XF2N",473,0)
1434 . S FARY="C0XFARY"
1435"RTN","C0XF2N",474,0)
1436 N ZIEN
1437"RTN","C0XF2N",475,0)
1438 I $G(ZSTRING)="" Q "" ; NO STRING
1439"RTN","C0XF2N",476,0)
1440 S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
1441"RTN","C0XF2N",477,0)
1442 I ZIEN="" D ;
1443"RTN","C0XF2N",478,0)
1444 . S C0XFDA2(C0XSFN,"+1,",.01)=ZSTRING
1445"RTN","C0XF2N",479,0)
1446 . D UPDIE(.C0XFDA2)
1447"RTN","C0XF2N",480,0)
1448 . S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
1449"RTN","C0XF2N",481,0)
1450 . K C0XFDA2
1451"RTN","C0XF2N",482,0)
1452 Q ZIEN
1453"RTN","C0XF2N",483,0)
1454 ;
1455"RTN","C0XF2N",484,0)
1456IENOFA(ZOUTARY,INARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
1457"RTN","C0XF2N",485,0)
1458 ; OR ADD THEM IF
1459"RTN","C0XF2N",486,0)
1460 ; MISSING. ZINARY AND ZOUTARY ARE PASSED BY REFERENCE
1461"RTN","C0XF2N",487,0)
1462 ; ZINARY LOOKS LIKE ZINARY("VAR","VAL")=""
1463"RTN","C0XF2N",488,0)
1464 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
1465"RTN","C0XF2N",489,0)
1466 I '$D(FARY) D ;
1467"RTN","C0XF2N",490,0)
1468 . D INITFARY("C0XFARY")
1469"RTN","C0XF2N",491,0)
1470 . S FARY="C0XFARY"
1471"RTN","C0XF2N",492,0)
1472 K ZOUTARY ; START WITH CLEAN RESULTS
1473"RTN","C0XF2N",493,0)
1474 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
1475"RTN","C0XF2N",494,0)
1476 I '$D(C0XVOC) D VOCINIT^C0XUTIL
1477"RTN","C0XF2N",495,0)
1478 N ZINARY
1479"RTN","C0XF2N",496,0)
1480 N ZI S ZI=""
1481"RTN","C0XF2N",497,0)
1482 F S ZI=$O(INARY(ZI)) Q:ZI="" D ;
1483"RTN","C0XF2N",498,0)
1484 . N ZK
1485"RTN","C0XF2N",499,0)
1486 . S ZK=$O(INARY(ZI,""))
1487"RTN","C0XF2N",500,0)
1488 . S ZINARY($$EXT^C0XUTIL(ZI),$$EXT^C0XUTIL(ZK))=""
1489"RTN","C0XF2N",501,0)
1490 N ZV,ZIEN,ABORT
1491"RTN","C0XF2N",502,0)
1492 S ABORT=0
1493"RTN","C0XF2N",503,0)
1494 N ZCNT S ZCNT=0
1495"RTN","C0XF2N",504,0)
1496 F S ZI=$O(ZINARY(ZI)) Q:(ZI="")!+ABORT D ; LOOK FOR MISSING STRINGS
1497"RTN","C0XF2N",505,0)
1498 . S ZV=$O(ZINARY(ZI,""))
1499"RTN","C0XF2N",506,0)
1500 . I ZV="" S ABORT=1 Q ; abandon quad -- missing an entry
1501"RTN","C0XF2N",507,0)
1502 . I ZV["^" S ZV=$TR(ZV,"^","|")
1503"RTN","C0XF2N",508,0)
1504 . I $O(@C0XSN@("B",ZV,""))="" D ;
1505"RTN","C0XF2N",509,0)
1506 . . S ZCNT=ZCNT+1
1507"RTN","C0XF2N",510,0)
1508 . . S C0XFDA2(C0XSFN,"+"_ZCNT_",",.01)=ZV
1509"RTN","C0XF2N",511,0)
1510 I +ABORT Q ;
1511"RTN","C0XF2N",512,0)
1512 I $D(C0XFDA2) D ;
1513"RTN","C0XF2N",513,0)
1514 . D UPDIE(.C0XFDA2) ; ADD MISSING STRINGS
1515"RTN","C0XF2N",514,0)
1516 . K C0XFDA2 ; CLEAN UP
1517"RTN","C0XF2N",515,0)
1518 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOW GET ALL IENS
1519"RTN","C0XF2N",516,0)
1520 . S ZV=$O(ZINARY(ZI,""))
1521"RTN","C0XF2N",517,0)
1522 . I ZV["^" S ZV=$TR(ZV,"^","|")
1523"RTN","C0XF2N",518,0)
1524 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
1525"RTN","C0XF2N",519,0)
1526 . I ZIEN="" D ;
1527"RTN","C0XF2N",520,0)
1528 . . W !,"ERROR ADDING STRING: ",ZV
1529"RTN","C0XF2N",521,0)
1530 . . B
1531"RTN","C0XF2N",522,0)
1532 . S ZOUTARY("IEN",ZI,ZIEN)=""
1533"RTN","C0XF2N",523,0)
1534 Q
1535"RTN","C0XF2N",524,0)
1536 ;
1537"RTN","C0XF2N",525,0)
1538ADDINN(ZG,ZS,ZARY) ; ADD IF NOT NULL
1539"RTN","C0XF2N",526,0)
1540 ; ZG IS THE GRAPH NAME, PASSED BY VALUE
1541"RTN","C0XF2N",527,0)
1542 ; ZS IS THE SUBJECT, PASSED BY VALUE
1543"RTN","C0XF2N",528,0)
1544 ; ZARY IS AN ARRAY, PASSED BY REFERENCE OF THE PREDICATE AND OBJECT
1545"RTN","C0XF2N",529,0)
1546 ; FORMAT IS ZARY(PRED)=OBJ
1547"RTN","C0XF2N",530,0)
1548 N ZI S ZI=""
1549"RTN","C0XF2N",531,0)
1550 F S ZI=$O(ZARY(ZI)) Q:ZI="" D ;
1551"RTN","C0XF2N",532,0)
1552 . ;I ZARY(ZI)="" S ZARY(ZI)="NULL"
1553"RTN","C0XF2N",533,0)
1554 . I ZARY(ZI)'="" D ;
1555"RTN","C0XF2N",534,0)
1556 . . D ADD^C0XF2N(ZG,ZS,ZI,ZARY(ZI))
1557"RTN","C0XF2N",535,0)
1558 . . I $D(DEBUG) W !,"ADDING",ZI," ",ZARY(ZI)
1559"RTN","C0XF2N",536,0)
1560 ;ZWR ZARY
1561"RTN","C0XF2N",537,0)
1562 Q
1563"RTN","C0XF2N",538,0)
1564 ;
1565"RTN","C0XF2N",539,0)
1566BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
1567"RTN","C0XF2N",540,0)
1568 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
1569"RTN","C0XF2N",541,0)
1570 ; QUITS IF FILE IS NOT 172.101
1571"RTN","C0XF2N",542,0)
1572 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
1573"RTN","C0XF2N",543,0)
1574 ; QUITS IF FIRST ENTRY IS NOT IENS 1
1575"RTN","C0XF2N",544,0)
1576 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
1577"RTN","C0XF2N",545,0)
1578 ; ZBFDA IS PASSED BY REFERENCE
1579"RTN","C0XF2N",546,0)
1580 ;
1581"RTN","C0XF2N",547,0)
1582 ; -- reserves a block of iens from file 172.101 by locking the zero node
1583"RTN","C0XF2N",548,0)
1584 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
1585"RTN","C0XF2N",549,0)
1586 ; -- then unlocking to minimize the duration of the lock
1587"RTN","C0XF2N",550,0)
1588 ;
1589"RTN","C0XF2N",551,0)
1590 I $D(DEBUG) W !,"USING BULKLOAD"
1591"RTN","C0XF2N",552,0)
1592 I '$D(ZBFDA) Q ; EMPTY FDA
1593"RTN","C0XF2N",553,0)
1594 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
1595"RTN","C0XF2N",554,0)
1596 N ZCNT,ZP3,ZP4
1597"RTN","C0XF2N",555,0)
1598 ; -- find the number of nodes to insert
1599"RTN","C0XF2N",556,0)
1600 S ZCNT=$O(ZBFDA(172.101,""),-1)
1601"RTN","C0XF2N",557,0)
1602 I ZCNT="" D Q ;
1603"RTN","C0XF2N",558,0)
1604 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
1605"RTN","C0XF2N",559,0)
1606 . B
1607"RTN","C0XF2N",560,0)
1608 ; -- lock the zero node and reserve a block of iens to insert
1609"RTN","C0XF2N",561,0)
1610 I $D(DEBUG) W !,"LOCKING ZERO NODE"
1611"RTN","C0XF2N",562,0)
1612 LOCK +^C0X(101,0)
1613"RTN","C0XF2N",563,0)
1614 S ZP3=$P(^C0X(101,0),U,3)
1615"RTN","C0XF2N",564,0)
1616 S ZP4=$P(^C0X(101,0),U,4)
1617"RTN","C0XF2N",565,0)
1618 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
1619"RTN","C0XF2N",566,0)
1620 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
1621"RTN","C0XF2N",567,0)
1622 LOCK -^C0X(101,0)
1623"RTN","C0XF2N",568,0)
1624 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
1625"RTN","C0XF2N",569,0)
1626 S ZBASE=ZP3 ; the last ien in the file
1627"RTN","C0XF2N",570,0)
1628 I $D(DEBUG) W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
1629"RTN","C0XF2N",571,0)
1630 I $D(DEBUG) W !,$$NOW^XLFDT
1631"RTN","C0XF2N",572,0)
1632 S ZI=""
1633"RTN","C0XF2N",573,0)
1634 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
1635"RTN","C0XF2N",574,0)
1636 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
1637"RTN","C0XF2N",575,0)
1638 . I ZN="" D BLKERR Q ;
1639"RTN","C0XF2N",576,0)
1640 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
1641"RTN","C0XF2N",577,0)
1642 . I ZG="" D BLKERR Q ;
1643"RTN","C0XF2N",578,0)
1644 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
1645"RTN","C0XF2N",579,0)
1646 . I ZS="" D BLKERR Q ;
1647"RTN","C0XF2N",580,0)
1648 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
1649"RTN","C0XF2N",581,0)
1650 . I ZP="" D BLKERR Q ;
1651"RTN","C0XF2N",582,0)
1652 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
1653"RTN","C0XF2N",583,0)
1654 . I ZO="" D BLKERR Q ;
1655"RTN","C0XF2N",584,0)
1656 . S ZIEN=ZI+ZBASE ; the new ien
1657"RTN","C0XF2N",585,0)
1658 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
1659"RTN","C0XF2N",586,0)
1660 . D INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO)
1661"RTN","C0XF2N",587,0)
1662 Q
1663"RTN","C0XF2N",588,0)
1664 ;
1665"RTN","C0XF2N",589,0)
1666INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO) ; HARD SET THE INDEX FOR ONE ENTRY
1667"RTN","C0XF2N",590,0)
1668 S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
1669"RTN","C0XF2N",591,0)
1670 S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
1671"RTN","C0XF2N",592,0)
1672 S ^C0X(101,"SPO",ZS,ZP,ZO,ZIEN)=""
1673"RTN","C0XF2N",593,0)
1674 S ^C0X(101,"SOP",ZS,ZO,ZP,ZIEN)=""
1675"RTN","C0XF2N",594,0)
1676 S ^C0X(101,"OPS",ZO,ZP,ZS,ZIEN)=""
1677"RTN","C0XF2N",595,0)
1678 S ^C0X(101,"OSP",ZO,ZS,ZP,ZIEN)=""
1679"RTN","C0XF2N",596,0)
1680 S ^C0X(101,"PSO",ZP,ZS,ZO,ZIEN)=""
1681"RTN","C0XF2N",597,0)
1682 S ^C0X(101,"POS",ZP,ZO,ZS,ZIEN)=""
1683"RTN","C0XF2N",598,0)
1684 S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS,ZIEN)=""
1685"RTN","C0XF2N",599,0)
1686 S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP,ZIEN)=""
1687"RTN","C0XF2N",600,0)
1688 S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO,ZIEN)=""
1689"RTN","C0XF2N",601,0)
1690 S ^C0X(101,"GPOS",ZG,ZP,ZO,ZS,ZIEN)=""
1691"RTN","C0XF2N",602,0)
1692 S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO,ZIEN)=""
1693"RTN","C0XF2N",603,0)
1694 S ^C0X(101,"GSOP",ZG,ZS,ZO,ZP,ZIEN)=""
1695"RTN","C0XF2N",604,0)
1696 Q
1697"RTN","C0XF2N",605,0)
1698 ;
1699"RTN","C0XF2N",606,0)
1700REINDEX ; REINDEX THE ^C0X(101, TRIPLE STORE
1701"RTN","C0XF2N",607,0)
1702 K ^C0X(101,"B")
1703"RTN","C0XF2N",608,0)
1704 K ^C0X(101,"G")
1705"RTN","C0XF2N",609,0)
1706 K ^C0X(101,"SPO")
1707"RTN","C0XF2N",610,0)
1708 K ^C0X(101,"SOP")
1709"RTN","C0XF2N",611,0)
1710 K ^C0X(101,"OPS")
1711"RTN","C0XF2N",612,0)
1712 K ^C0X(101,"OSP")
1713"RTN","C0XF2N",613,0)
1714 K ^C0X(101,"PSO")
1715"RTN","C0XF2N",614,0)
1716 K ^C0X(101,"POS")
1717"RTN","C0XF2N",615,0)
1718 K ^C0X(101,"GOPS")
1719"RTN","C0XF2N",616,0)
1720 K ^C0X(101,"GOSP")
1721"RTN","C0XF2N",617,0)
1722 K ^C0X(101,"GPSO")
1723"RTN","C0XF2N",618,0)
1724 K ^C0X(101,"GPOS")
1725"RTN","C0XF2N",619,0)
1726 K ^C0X(101,"GSPO")
1727"RTN","C0XF2N",620,0)
1728 K ^C0X(101,"GSOP")
1729"RTN","C0XF2N",621,0)
1730 N ZIEN,ZZ
1731"RTN","C0XF2N",622,0)
1732 S ZIEN=0
1733"RTN","C0XF2N",623,0)
1734 F S ZIEN=$O(^C0X(101,ZIEN)) Q:+ZIEN=0 D ; FOR EACH NODE
1735"RTN","C0XF2N",624,0)
1736 . S ZZ=$G(^C0X(101,ZIEN,0))
1737"RTN","C0XF2N",625,0)
1738 . I ZZ="" D Q ;
1739"RTN","C0XF2N",626,0)
1740 . . W !,"ERROR REINDEXING NODE ",ZI
1741"RTN","C0XF2N",627,0)
1742 . S ZN=$P(ZZ,"^",1)
1743"RTN","C0XF2N",628,0)
1744 . S ZG=$P(ZZ,"^",2)
1745"RTN","C0XF2N",629,0)
1746 . S ZS=$P(ZZ,"^",3)
1747"RTN","C0XF2N",630,0)
1748 . S ZP=$P(ZZ,"^",4)
1749"RTN","C0XF2N",631,0)
1750 . S ZO=$P(ZZ,"^",5)
1751"RTN","C0XF2N",632,0)
1752 . D INDEX(ZIEN,ZN,ZG,ZS,ZP,ZO)
1753"RTN","C0XF2N",633,0)
1754 Q
1755"RTN","C0XF2N",634,0)
1756 ;
1757"RTN","C0XF2N",635,0)
1758BLKERR ;
1759"RTN","C0XF2N",636,0)
1760 W !,"ERROR IN BULK LOAD"
1761"RTN","C0XF2N",637,0)
1762 S C0XERR="ERROR IN BULK LOAD"
1763"RTN","C0XF2N",638,0)
1764 S C0XLOC=ZBFDA(ZI)
1765"RTN","C0XF2N",639,0)
1766 D ^%ZTER ; report the error
1767"RTN","C0XF2N",640,0)
1768 B
1769"RTN","C0XF2N",641,0)
1770 Q
1771"RTN","C0XF2N",642,0)
1772 ;
1773"RTN","C0XF2N",643,0)
1774DELGRAPH(ZGRF,FARY) ; delete a graph from the triplestore
1775"RTN","C0XF2N",644,0)
1776 ; (doesn't delete strings)
1777"RTN","C0XF2N",645,0)
1778 ;
1779"RTN","C0XF2N",646,0)
1780 I '$D(FARY) D ;
1781"RTN","C0XF2N",647,0)
1782 . D INITFARY("C0XFARY")
1783"RTN","C0XF2N",648,0)
1784 . S FARY="C0XFARY"
1785"RTN","C0XF2N",649,0)
1786 D USEFARY(FARY)
1787"RTN","C0XF2N",650,0)
1788 N ZGRAPH
1789"RTN","C0XF2N",651,0)
1790 D TING(.ZGRAPH,ZGRF,FARY)
1791"RTN","C0XF2N",652,0)
1792 I '$D(ZGRAPH) D Q ;
1793"RTN","C0XF2N",653,0)
1794 . I $D(DEBUG) W !,"NO TRIPLES IN GRAPH"
1795"RTN","C0XF2N",654,0)
1796 K C0XFDA
1797"RTN","C0XF2N",655,0)
1798 N ZI S ZI=""
1799"RTN","C0XF2N",656,0)
1800 F S ZI=$O(ZGRAPH(ZI)) Q:ZI="" D ;
1801"RTN","C0XF2N",657,0)
1802 . S C0XFDA(C0XTFN,ZI_",",.01)="@"
1803"RTN","C0XF2N",658,0)
1804 D UPDIE(.C0XFDA)
1805"RTN","C0XF2N",659,0)
1806 Q
1807"RTN","C0XF2N",660,0)
1808 ;
1809"RTN","C0XF2N",661,0)
1810TING(ZRTN,ZGRF,FARY) ; return the iens for graph ZGRF
1811"RTN","C0XF2N",662,0)
1812 ; ZRTN is passed by reference
1813"RTN","C0XF2N",663,0)
1814 I '$D(FARY) D ;
1815"RTN","C0XF2N",664,0)
1816 . D INITFARY("C0XFARY")
1817"RTN","C0XF2N",665,0)
1818 . S FARY="C0XFARY"
1819"RTN","C0XF2N",666,0)
1820 D USEFARY(FARY)
1821"RTN","C0XF2N",667,0)
1822 K ZRTN
1823"RTN","C0XF2N",668,0)
1824 N ZI,ZG S ZI=""
1825"RTN","C0XF2N",669,0)
1826 S ZG=$$IENOF^C0XGET1(ZGRF)
1827"RTN","C0XF2N",670,0)
1828 I ZG="" D Q ;
1829"RTN","C0XF2N",671,0)
1830 . I $D(DEBUG) W !,"ERROR GRAPH NOT FOUND"
1831"RTN","C0XF2N",672,0)
1832 I '$D(@C0XTN@("G",ZG)) Q ;
1833"RTN","C0XF2N",673,0)
1834 F S ZI=$O(@C0XTN@("G",ZG,ZI)) Q:ZI="" D ;
1835"RTN","C0XF2N",674,0)
1836 . S ZRTN(ZI)=""
1837"RTN","C0XF2N",675,0)
1838 Q
1839"RTN","C0XF2N",676,0)
1840 ;
1841"RTN","C0XF2N",677,0)
1842SWUPDIE(ZFDA) ; SWITCH BETWEEN UPDIE AND BULKLOAD
1843"RTN","C0XF2N",678,0)
1844 I $G(BLKLOAD)=1 D ; bulk load
1845"RTN","C0XF2N",679,0)
1846 . D BULKLOAD(.ZFDA) ; bulk load the batch
1847"RTN","C0XF2N",680,0)
1848 E D ; no bulk load
1849"RTN","C0XF2N",681,0)
1850 . D UPDIE(.ZFDA)
1851"RTN","C0XF2N",682,0)
1852 K ZFDA
1853"RTN","C0XF2N",683,0)
1854 Q
1855"RTN","C0XF2N",684,0)
1856 ;
1857"RTN","C0XF2N",685,0)
1858UPDIE(ZFDA) ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
1859"RTN","C0XF2N",686,0)
1860 ; ZFDA IS PASSED BY REFERENCE
1861"RTN","C0XF2N",687,0)
1862 ;ZWR ZFDA
1863"RTN","C0XF2N",688,0)
1864 ;B
1865"RTN","C0XF2N",689,0)
1866 K ZERR
1867"RTN","C0XF2N",690,0)
1868 D CLEAN^DILF
1869"RTN","C0XF2N",691,0)
1870 D UPDATE^DIE("","ZFDA","","ZERR")
1871"RTN","C0XF2N",692,0)
1872 I $D(ZERR) S ZZERR=ZZERR ; ZZERR DOESN'T EXIST,
1873"RTN","C0XF2N",693,0)
1874 ; INVOKE THE ERROR TRAP IF TASKED
1875"RTN","C0XF2N",694,0)
1876 ;. W "ERROR",!
1877"RTN","C0XF2N",695,0)
1878 ;. ZWR ZERR
1879"RTN","C0XF2N",696,0)
1880 ;. B
1881"RTN","C0XF2N",697,0)
1882 K ZFDA
1883"RTN","C0XF2N",698,0)
1884 Q
1885"RTN","C0XF2N",699,0)
1886 ;
1887"RTN","C0XGET1")
18880^8^B4808799
1889"RTN","C0XGET1",1,0)
1890C0XGET1 ; GPL - Fileman Triples entry point routine ;1/12/12 17:05
1891"RTN","C0XGET1",2,0)
1892 ;;0.1;C0X;nopatch;noreleasedate;Build 10
1893"RTN","C0XGET1",3,0)
1894 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
1895"RTN","C0XGET1",4,0)
1896 ;General Public License See attached copy of the License.
1897"RTN","C0XGET1",5,0)
1898 ;
1899"RTN","C0XGET1",6,0)
1900 ;This program is free software; you can redistribute it and/or modify
1901"RTN","C0XGET1",7,0)
1902 ;it under the terms of the GNU General Public License as published by
1903"RTN","C0XGET1",8,0)
1904 ;the Free Software Foundation; either version 2 of the License, or
1905"RTN","C0XGET1",9,0)
1906 ;(at your option) any later version.
1907"RTN","C0XGET1",10,0)
1908 ;
1909"RTN","C0XGET1",11,0)
1910 ;This program is distributed in the hope that it will be useful,
1911"RTN","C0XGET1",12,0)
1912 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
1913"RTN","C0XGET1",13,0)
1914 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1915"RTN","C0XGET1",14,0)
1916 ;GNU General Public License for more details.
1917"RTN","C0XGET1",15,0)
1918 ;
1919"RTN","C0XGET1",16,0)
1920 ;You should have received a copy of the GNU General Public License along
1921"RTN","C0XGET1",17,0)
1922 ;with this program; if not, write to the Free Software Foundation, Inc.,
1923"RTN","C0XGET1",18,0)
1924 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1925"RTN","C0XGET1",19,0)
1926 ;
1927"RTN","C0XGET1",20,0)
1928 Q
1929"RTN","C0XGET1",21,0)
1930 ;
1931"RTN","C0XGET1",22,0)
1932LSSUBJ(RTN,ZSUBJ,C0XFARY) ; LIST NODES WITH SUBJECT ZSUBJ
1933"RTN","C0XGET1",23,0)
1934 ;
1935"RTN","C0XGET1",24,0)
1936 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY")
1937"RTN","C0XGET1",25,0)
1938 D USEFARY^C0XF2N("C0XFARY")
1939"RTN","C0XGET1",26,0)
1940 Q
1941"RTN","C0XGET1",27,0)
1942 ;
1943"RTN","C0XGET1",28,0)
1944graph(sub,pred,obj,form,fary) ; extrinsic which returns a graph name
1945"RTN","C0XGET1",29,0)
1946 I '$D(fary) D ;
1947"RTN","C0XGET1",30,0)
1948 . S fary="C0XFARY"
1949"RTN","C0XGET1",31,0)
1950 . D INITFARY^C0XF2N(fary)
1951"RTN","C0XGET1",32,0)
1952 D USEFARY^C0XF2N(fary)
1953"RTN","C0XGET1",33,0)
1954 k triplertn ; start with a clean return
1955"RTN","C0XGET1",34,0)
1956 n zsub,zpred,zobj,zgraph,tmprtn
1957"RTN","C0XGET1",35,0)
1958 s zsub=$$IENOF($$EXT^C0XUTIL($g(sub)),fary) ; ien of subject
1959"RTN","C0XGET1",36,0)
1960 s zpred=$$IENOF($$EXT^C0XUTIL($g(pred)),fary) ; ien of predicate
1961"RTN","C0XGET1",37,0)
1962 s zobj=$$IENOF($$EXT^C0XUTIL($g(obj)),fary) ; ien of object
1963"RTN","C0XGET1",38,0)
1964 s zgraph=$$IENOF($g(graph),fary) ; ien of graph
1965"RTN","C0XGET1",39,0)
1966 I $G(DEBUG) W !,"s:",zsub," p:",zpred," o:",zobj
1967"RTN","C0XGET1",40,0)
1968 d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary)
1969"RTN","C0XGET1",41,0)
1970 n ztmp
1971"RTN","C0XGET1",42,0)
1972 d trip(.ztmp,$g(sub),$g(pred),$g(obj),"",$g(fary))
1973"RTN","C0XGET1",43,0)
1974 n zi,zg,zrtn
1975"RTN","C0XGET1",44,0)
1976 s zi=$o(tmprtn(""))
1977"RTN","C0XGET1",45,0)
1978 s zg=$$GET1^DIQ(C0XTFN,zi,.02,"E") ;
1979"RTN","C0XGET1",46,0)
1980 i zg="" q ""
1981"RTN","C0XGET1",47,0)
1982 s zrtn=zg
1983"RTN","C0XGET1",48,0)
1984 i $o(tmprtn(zi))'="" d
1985"RTN","C0XGET1",49,0)
1986 . s zrtn=""
1987"RTN","C0XGET1",50,0)
1988 q zrtn
1989"RTN","C0XGET1",51,0)
1990 ;
1991"RTN","C0XGET1",52,0)
1992GRAPHS(RTN,C0XFARY) ; LIST ALL GRAPHS
1993"RTN","C0XGET1",53,0)
1994 ;
1995"RTN","C0XGET1",54,0)
1996 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY")
1997"RTN","C0XGET1",55,0)
1998 D USEFARY^C0XF2N("C0XFARY")
1999"RTN","C0XGET1",56,0)
2000 N ZI S ZI=""
2001"RTN","C0XGET1",57,0)
2002 F S ZI=$O(@C0XTN@("G",ZI)) Q:ZI="" D ;
2003"RTN","C0XGET1",58,0)
2004 . S RTN(ZI,$$STR(ZI))=""
2005"RTN","C0XGET1",59,0)
2006 Q
2007"RTN","C0XGET1",60,0)
2008 ;
2009"RTN","C0XGET1",61,0)
2010STR(ZIN,C0XFARY) ; EXTRINSIC RETURNS A STRING
2011"RTN","C0XGET1",62,0)
2012 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY")
2013"RTN","C0XGET1",63,0)
2014 Q $$GET1^DIQ(C0XSFN,ZIN,.01,"E")
2015"RTN","C0XGET1",64,0)
2016 ;
2017"RTN","C0XGET1",65,0)
2018SPO(ZRTN,ZNODE,C0XFARY)
2019"RTN","C0XGET1",66,0)
2020 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY")
2021"RTN","C0XGET1",67,0)
2022 N ZI S ZI=$$NXT(.ZRTN)
2023"RTN","C0XGET1",68,0)
2024 S ZRTN(ZI,"S")=$$S(ZNODE)
2025"RTN","C0XGET1",69,0)
2026 S ZRTN(ZI,"P")=$$P(ZNODE)
2027"RTN","C0XGET1",70,0)
2028 S ZRTN(ZI,"O")=$$O(ZNODE)
2029"RTN","C0XGET1",71,0)
2030 Q
2031"RTN","C0XGET1",72,0)
2032 ;
2033"RTN","C0XGET1",73,0)
2034S(ZNODE,C0XFARY) ; EXTRINSIC RETURNING THE SUBJECT
2035"RTN","C0XGET1",74,0)
2036 Q $$STR($$GET1^DIQ(C0XTFN,ZNODE,.03,"I")) ;
2037"RTN","C0XGET1",75,0)
2038 ;
2039"RTN","C0XGET1",76,0)
2040P(ZNODE,C0XFARY) ; EXTRINSIC RETURNING THE PREDICATE
2041"RTN","C0XGET1",77,0)
2042 Q $$STR($$GET1^DIQ(C0XTFN,ZNODE,.04,"I")) ;
2043"RTN","C0XGET1",78,0)
2044 ;
2045"RTN","C0XGET1",79,0)
2046O(ZNODE,C0XFARY) ; EXTRINSIC RETURNING THE OBJECT
2047"RTN","C0XGET1",80,0)
2048 Q $$STR($$GET1^DIQ(C0XTFN,ZNODE,.05,"I")) ;
2049"RTN","C0XGET1",81,0)
2050 ;
2051"RTN","C0XGET1",82,0)
2052NXT(ZRTN) ;EXTRINSIC FOR THE NEXT NODE IN ARRAY ZRTN, PASSED BY REF
2053"RTN","C0XGET1",83,0)
2054 I '$D(ZRTN) S ZRTN=""
2055"RTN","C0XGET1",84,0)
2056 Q $O(ZRTN(""),-1)+1
2057"RTN","C0XGET1",85,0)
2058 ;
2059"RTN","C0XGET1",86,0)
2060SING(ZRTN,ZG) ; SUBJECTS IN GRAPH
2061"RTN","C0XGET1",87,0)
2062 ;
2063"RTN","C0XGET1",88,0)
2064 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY")
2065"RTN","C0XGET1",89,0)
2066 I '$D(ZRTN) S ZRTN=""
2067"RTN","C0XGET1",90,0)
2068 N ZI,ZN S ZI=""
2069"RTN","C0XGET1",91,0)
2070 F S ZI=$O(@C0XTN@("GSPO",ZG,ZI)) Q:ZI="" D ;
2071"RTN","C0XGET1",92,0)
2072 . S ZRTN($$NXT(.ZRTN),"S")=$$STR(ZI)
2073"RTN","C0XGET1",93,0)
2074 Q
2075"RTN","C0XGET1",94,0)
2076 ;
2077"RTN","C0XGET1",95,0)
2078qparse(qrtn,zquery) ; parses the query
2079"RTN","C0XGET1",96,0)
2080 ; want this to be able to handle the WHERE clause of SPARQL eventually
2081"RTN","C0XGET1",97,0)
2082 ;
2083"RTN","C0XGET1",98,0)
2084 n q1,q2,q3,qq
2085"RTN","C0XGET1",99,0)
2086 ;s qq=$tr(zquery," ","^")
2087"RTN","C0XGET1",100,0)
2088 s qq=query ; really want to remove whitespace here
2089"RTN","C0XGET1",101,0)
2090 s q1=$p(qq," ",1)
2091"RTN","C0XGET1",102,0)
2092 i q1["?" s q1=""
2093"RTN","C0XGET1",103,0)
2094 s q2=$p(qq," ",2)
2095"RTN","C0XGET1",104,0)
2096 i q2["?" s q2=""
2097"RTN","C0XGET1",105,0)
2098 s q3=$p(qq," ",3)
2099"RTN","C0XGET1",106,0)
2100 i q3["?" s q3=""
2101"RTN","C0XGET1",107,0)
2102 s qrtn(1)=q1_"^"_q2_"^"_q3 ; more lines to come later
2103"RTN","C0XGET1",108,0)
2104 q
2105"RTN","C0XGET1",109,0)
2106 ;
2107"RTN","C0XGET1",110,0)
2108getGraph(zrtn,zgrf,form) ; get all triples in graph zgrf
2109"RTN","C0XGET1",111,0)
2110 ; forms planned: "rdf" "json" "array" "turtle" "triples" "raw"
2111"RTN","C0XGET1",112,0)
2112 ; forms supported: "rdf" "json" "array" "raw"
2113"RTN","C0XGET1",113,0)
2114 I '$D(form) S form="rdf"
2115"RTN","C0XGET1",114,0)
2116 N ZIENS,ZTRIP
2117"RTN","C0XGET1",115,0)
2118 D TING^C0XF2N(.ZIENS,zgrf)
2119"RTN","C0XGET1",116,0)
2120 I '$D(ZIENS) Q ;
2121"RTN","C0XGET1",117,0)
2122 D ien2tary(.ZTRIP,"ZIENS")
2123"RTN","C0XGET1",118,0)
2124 I form="json" d jsonout(.zrtn,.ZTRIP) q ; what follows is else
2125"RTN","C0XGET1",119,0)
2126 i form="rdf" d rdfout^C0XRDF(.zrtn,.ZTRIP) q ;
2127"RTN","C0XGET1",120,0)
2128 i form="array" d arrayout^C0XGET1(.zrtn,.ZTRIP) q ;
2129"RTN","C0XGET1",121,0)
2130 i form="raw" d rawout^C0XGET1(.zrtn,.ZTRIP) q ;
2131"RTN","C0XGET1",122,0)
2132 W !,"Form not supported: ",form
2133"RTN","C0XGET1",123,0)
2134 Q
2135"RTN","C0XGET1",124,0)
2136 ;
2137"RTN","C0XGET1",125,0)
2138rpctrip(rtn,query,limit,offset) ; rpc to access triples with a query
2139"RTN","C0XGET1",126,0)
2140 ;
2141"RTN","C0XGET1",127,0)
2142 n zoff,zlim,zcount,zq
2143"RTN","C0XGET1",128,0)
2144 k rtn
2145"RTN","C0XGET1",129,0)
2146 i '$d(limit) s limit=250
2147"RTN","C0XGET1",130,0)
2148 i '$d(offset) s offset=0
2149"RTN","C0XGET1",131,0)
2150 d qparse(.zq,query) ; parse the query
2151"RTN","C0XGET1",132,0)
2152 n qsub,qpred,qobj,qtmp
2153"RTN","C0XGET1",133,0)
2154 W !,zq(1)
2155"RTN","C0XGET1",134,0)
2156 s qsub=$p(zq(1),"^",1)
2157"RTN","C0XGET1",135,0)
2158 s qpred=$p(zq(1),"^",2)
2159"RTN","C0XGET1",136,0)
2160 s qobj=$p(zq(1),"^",3)
2161"RTN","C0XGET1",137,0)
2162 d triples(.qtmp,qsub,qpred,qobj)
2163"RTN","C0XGET1",138,0)
2164 f zcount=offset+1:1:offset+limit q:'$d(qtmp(zcount)) d ;
2165"RTN","C0XGET1",139,0)
2166 . s rtn(zcount)=qtmp(zcount)
2167"RTN","C0XGET1",140,0)
2168 q
2169"RTN","C0XGET1",141,0)
2170 ;
2171"RTN","C0XGET1",142,0)
2172triples(triplertn,sub,pred,obj,graph,form,fary) ; returns triples
2173"RTN","C0XGET1",143,0)
2174 I '$D(fary) D ;
2175"RTN","C0XGET1",144,0)
2176 . D INITFARY^C0XF2N("C0XFARY")
2177"RTN","C0XGET1",145,0)
2178 . S fary="C0XFARY"
2179"RTN","C0XGET1",146,0)
2180 D USEFARY^C0XF2N(fary)
2181"RTN","C0XGET1",147,0)
2182 I '$D(form) S form="json"
2183"RTN","C0XGET1",148,0)
2184 k triplertn ; start with a clean return
2185"RTN","C0XGET1",149,0)
2186 n zsub,zpred,zobj,zgraph,tmprtn
2187"RTN","C0XGET1",150,0)
2188 s zsub=$$IENOF($$EXT^C0XUTIL($g(sub)),fary) ; ien of subject
2189"RTN","C0XGET1",151,0)
2190 s zpred=$$IENOF($$EXT^C0XUTIL($g(pred)),fary) ; ien of predicate
2191"RTN","C0XGET1",152,0)
2192 s zobj=$$IENOF($$EXT^C0XUTIL($g(obj)),fary) ; ien of object
2193"RTN","C0XGET1",153,0)
2194 s zgraph=$$IENOF($g(graph),fary) ; ien of graph
2195"RTN","C0XGET1",154,0)
2196 I $G(DEBUG) W !,"s:",zsub," p:",zpred," o:",zobj
2197"RTN","C0XGET1",155,0)
2198 d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary)
2199"RTN","C0XGET1",156,0)
2200 d ien2tary(.zrary,"tmprtn") ; convert to triples
2201"RTN","C0XGET1",157,0)
2202 ;
2203"RTN","C0XGET1",158,0)
2204 i form="json" d jsonout(.triplertn,.zrary) q ; what follows is 'else'
2205"RTN","C0XGET1",159,0)
2206 i form="rdf" d rdfout^C0XRDF(.triplertn,.zrary) q ;
2207"RTN","C0XGET1",160,0)
2208 i form="array" d arrayout(.triplertn,.zrary) q ;
2209"RTN","C0XGET1",161,0)
2210 i form="raw" d rawout(.triplertn,.zrary) q ;
2211"RTN","C0XGET1",162,0)
2212 w !,"form not supported: ",form
2213"RTN","C0XGET1",163,0)
2214 q
2215"RTN","C0XGET1",164,0)
2216 ;
2217"RTN","C0XGET1",165,0)
2218subjects(listrtn,pred,obj,graph,form,fary) ; return list of subjects
2219"RTN","C0XGET1",166,0)
2220 d onelist("S",,$g(pred),$g(obj),$g(fary)) ;subjects
2221"RTN","C0XGET1",167,0)
2222 q
2223"RTN","C0XGET1",168,0)
2224 ;
2225"RTN","C0XGET1",169,0)
2226subject(pred,obj,graph,form,fary) ; extrinsic which returns the first
2227"RTN","C0XGET1",170,0)
2228 ; multiple of return from subjects - returns null if more than one
2229"RTN","C0XGET1",171,0)
2230 ; subjects(.G,sub,pred)
2231"RTN","C0XGET1",172,0)
2232 ; G("nodeID:1234") ==> "nodeID:1234"
2233"RTN","C0XGET1",173,0)
2234 n zin,zrtn
2235"RTN","C0XGET1",174,0)
2236 d subjects(.zin,$g(pred),$g(obj),$g(form),$g(fary))
2237"RTN","C0XGET1",175,0)
2238 s zrtn=$o(zin(""))
2239"RTN","C0XGET1",176,0)
2240 i $o(zin(zrtn))'="" s zrtn=""
2241"RTN","C0XGET1",177,0)
2242 q zrtn
2243"RTN","C0XGET1",178,0)
2244 ;
2245"RTN","C0XGET1",179,0)
2246preds(listrtn,sub,obj,graph,form,fary) ; return list of subjects
2247"RTN","C0XGET1",180,0)
2248 d onelist("P",$g(sub),,$g(obj),$g(fary)) ;subjects
2249"RTN","C0XGET1",181,0)
2250 q
2251"RTN","C0XGET1",182,0)
2252 ;
2253"RTN","C0XGET1",183,0)
2254objects(listrtn,sub,pred,graph,form,fary) ; return list of subjects
2255"RTN","C0XGET1",184,0)
2256 d onelist("O",$g(sub),$g(pred),"",$g(fary)) ;subjects
2257"RTN","C0XGET1",185,0)
2258 q
2259"RTN","C0XGET1",186,0)
2260 ;
2261"RTN","C0XGET1",187,0)
2262object(sub,pred,graph,form,fary) ; extrinsic which returns the first
2263"RTN","C0XGET1",188,0)
2264 ; multiple of return from objects - returns null if more than one
2265"RTN","C0XGET1",189,0)
2266 ; objects(.G,sub,pred)
2267"RTN","C0XGET1",190,0)
2268 ; G("location") ==> "location"
2269"RTN","C0XGET1",191,0)
2270 n zin,zrtn
2271"RTN","C0XGET1",192,0)
2272 d objects(.zin,$g(sub),$g(pred),$g(form),$g(fary))
2273"RTN","C0XGET1",193,0)
2274 s zrtn=$o(zin(""))
2275"RTN","C0XGET1",194,0)
2276 i $o(zin(zrtn))'="" s zrtn=""
2277"RTN","C0XGET1",195,0)
2278 q zrtn
2279"RTN","C0XGET1",196,0)
2280 ;
2281"RTN","C0XGET1",197,0)
2282onelist(zw,sub,pred,obj,fary) ; returns list
2283"RTN","C0XGET1",198,0)
2284 ; zw is S P or O depending on what should be returned
2285"RTN","C0XGET1",199,0)
2286 I $g(fary)="" D ;
2287"RTN","C0XGET1",200,0)
2288 . D INITFARY^C0XF2N("C0XFARY")
2289"RTN","C0XGET1",201,0)
2290 . S fary="C0XFARY"
2291"RTN","C0XGET1",202,0)
2292 D USEFARY^C0XF2N(fary)
2293"RTN","C0XGET1",203,0)
2294 I '$D(form) S form="json"
2295"RTN","C0XGET1",204,0)
2296 k listrtn ; start with a clean return
2297"RTN","C0XGET1",205,0)
2298 n zsub,zpred,zobj,zgraph,tmprtn
2299"RTN","C0XGET1",206,0)
2300 s zsub=$$IENOF($$EXT^C0XUTIL($g(sub)),fary) ; ien of sub
2301"RTN","C0XGET1",207,0)
2302 s zpred=$$IENOF($$EXT^C0XUTIL($g(pred)),fary) ; ien of pred
2303"RTN","C0XGET1",208,0)
2304 s zobj=$$IENOF($$EXT^C0XUTIL($g(obj)),fary) ; ien of obj
2305"RTN","C0XGET1",209,0)
2306 s zgraph=$$IENOF($g(graph),fary) ; ien of graph
2307"RTN","C0XGET1",210,0)
2308 I $G(DEBUG) W !,"s:",zsub," p:",zpred," o:",zobj
2309"RTN","C0XGET1",211,0)
2310 n c0xflag,zi,zx,zt
2311"RTN","C0XGET1",212,0)
2312 s zt=$na(^C0X(101)) ;
2313"RTN","C0XGET1",213,0)
2314 s c0xflag=$$mask(zsub,zpred,zobj) ; get mask flags
2315"RTN","C0XGET1",214,0)
2316 k tmprtn
2317"RTN","C0XGET1",215,0)
2318 n itbl,ii,ix
2319"RTN","C0XGET1",216,0)
2320 s ii=$s(zw="S":"SPO",zw="P":"POS",zw="O":"OSP") ; no constraint
2321"RTN","C0XGET1",217,0)
2322 s itbl("I000",ii)="d zip(.tmprtn,zt,zi)"
2323"RTN","C0XGET1",218,0)
2324 s ii=$s(zw="S":"OSP",zw="P":"OPS",zw="O":"OSP") ; obj constraint
2325"RTN","C0XGET1",219,0)
2326 s ix=$s(zw="O":"d just(zobj)",1:"d zip1(.tmprtn,zt,zi,zobj)")
2327"RTN","C0XGET1",220,0)
2328 s itbl("I001",ii)=ix
2329"RTN","C0XGET1",221,0)
2330 s ii=$s(zw="S":"PSO",zw="P":"POS",zw="O":"POS") ; pred constraint
2331"RTN","C0XGET1",222,0)
2332 s ix=$s(zw="P":"d just(zpred)",1:"d zip1(.tmprtn,zt,zi,zpred)")
2333"RTN","C0XGET1",223,0)
2334 s itbl("I010",ii)=ix
2335"RTN","C0XGET1",224,0)
2336 s ii=$s(zw="S":"POS",zw="P":"OPS",zw="O":"OSP") ; pred + obj constraint
2337"RTN","C0XGET1",225,0)
2338 s ix=$s(zw="S":"d zip2(.tmprtn,zt,zi,zpred,zobj)",zw="P":"d just(zpred)",zw="O":"d just(zobj)",1:"d just(zobj)")
2339"RTN","C0XGET1",226,0)
2340 s itbl("I011",ii)=ix
2341"RTN","C0XGET1",227,0)
2342 s ii=$s(zw="S":"SPO",zw="P":"SPO",zw="O":"SOP") ; sub constraint
2343"RTN","C0XGET1",228,0)
2344 s ix=$s(zw="S":"d just(zsub)",1:"d zip1(.tmprtn,zt,zi,zsub)")
2345"RTN","C0XGET1",229,0)
2346 s itbl("I100",ii)=ix
2347"RTN","C0XGET1",230,0)
2348 s ii=$s(zw="S":"SPO",zw="P":"SOP",zw="O":"OSP") ; sub + obj constraint
2349"RTN","C0XGET1",231,0)
2350 s ix=$s(zw="P":"d zip2(.tmprtn,zt,zi,zsub,zobj)",zw="S":"d just(zsub)",zw="O":"d just(zobj)",1:"d just(zobj)")
2351"RTN","C0XGET1",232,0)
2352 s itbl("I101",ii)=ix
2353"RTN","C0XGET1",233,0)
2354 s ii=$s(zw="S":"SPO",zw="P":"POS",zw="O":"SPO") ; sub + pred constraint
2355"RTN","C0XGET1",234,0)
2356 s ix=$s(zw="O":"d zip2(.tmprtn,zt,zi,zsub,zpred)",zw="S":"d just(zsub)",zw="P":"d just(zpred)",1:"d just(zsub)")
2357"RTN","C0XGET1",235,0)
2358 s itbl("I110",ii)=ix
2359"RTN","C0XGET1",236,0)
2360 s ii=$s(zw="S":"SPO",zw="P":"POS",zw="O":"OSP") ; sub + pred + obj constraint
2361"RTN","C0XGET1",237,0)
2362 s ix=$s(zw="O":"d just(zobj)",zw="S":"d just(zsub)",zw="P":"d just(zpred)",1:"d just(zsub)")
2363"RTN","C0XGET1",238,0)
2364 s itbl("I111",ii)=ix
2365"RTN","C0XGET1",239,0)
2366 ; end itbl definition
2367"RTN","C0XGET1",240,0)
2368 ;
2369"RTN","C0XGET1",241,0)
2370 s zi=$o(itbl(c0xflag,"")) ; find index to use
2371"RTN","C0XGET1",242,0)
2372 s zx=itbl(c0xflag,zi) ; executable instruction to run
2373"RTN","C0XGET1",243,0)
2374 ;i $g(ngraph)'="" s zi="G"_zi ; this is wrong.. don't do graphs yet
2375"RTN","C0XGET1",244,0)
2376 i $g(DEBUG) w !,c0xflag," ",zw," ",zt," ",zi," ",zx,!
2377"RTN","C0XGET1",245,0)
2378 ;zwr itbl
2379"RTN","C0XGET1",246,0)
2380 x zx
2381"RTN","C0XGET1",247,0)
2382 k listrtn
2383"RTN","C0XGET1",248,0)
2384 d strings(.listrtn,"tmprtn") ; convert pointer to strings
2385"RTN","C0XGET1",249,0)
2386 q
2387"RTN","C0XGET1",250,0)
2388 ;
2389"RTN","C0XGET1",251,0)
2390just(zin) ; add one element to tmprtn
2391"RTN","C0XGET1",252,0)
2392 s tmprtn(zin)=""
2393"RTN","C0XGET1",253,0)
2394 q
2395"RTN","C0XGET1",254,0)
2396 ;
2397"RTN","C0XGET1",255,0)
2398zip(zrtn,zt,zi) ; pull out just the first element of the index
2399"RTN","C0XGET1",256,0)
2400 ;
2401"RTN","C0XGET1",257,0)
2402 n zii s zii=""
2403"RTN","C0XGET1",258,0)
2404 f s zii=$o(@zt@(zi,zii)) q:zii="" d ;
2405"RTN","C0XGET1",259,0)
2406 . s zrtn(zii)=""
2407"RTN","C0XGET1",260,0)
2408 q
2409"RTN","C0XGET1",261,0)
2410 ;
2411"RTN","C0XGET1",262,0)
2412zip1(zrtn,zt,zi,zn) ; pull out just the first element of the index
2413"RTN","C0XGET1",263,0)
2414 ;
2415"RTN","C0XGET1",264,0)
2416 n zii s zii=""
2417"RTN","C0XGET1",265,0)
2418 f s zii=$o(@zt@(zi,zn,zii)) q:zii="" d ;
2419"RTN","C0XGET1",266,0)
2420 . s zrtn(zii)=""
2421"RTN","C0XGET1",267,0)
2422 q
2423"RTN","C0XGET1",268,0)
2424 ;
2425"RTN","C0XGET1",269,0)
2426zip2(zrtn,zt,zi,zn,zn1) ; pull out just the first element of the index
2427"RTN","C0XGET1",270,0)
2428 ;
2429"RTN","C0XGET1",271,0)
2430 n zii s zii=""
2431"RTN","C0XGET1",272,0)
2432 f s zii=$o(@zt@(zi,zn,zn1,zii)) q:zii="" d ;
2433"RTN","C0XGET1",273,0)
2434 . s zrtn(zii)=""
2435"RTN","C0XGET1",274,0)
2436 q
2437"RTN","C0XGET1",275,0)
2438 ;
2439"RTN","C0XGET1",276,0)
2440arrayout(rtn,zary) ; output an array of triples
2441"RTN","C0XGET1",277,0)
2442 ;
2443"RTN","C0XGET1",278,0)
2444 s zrsub=""
2445"RTN","C0XGET1",279,0)
2446 s zcnt=1
2447"RTN","C0XGET1",280,0)
2448 f s zrsub=$o(zary(zrsub)) q:zrsub="" d ; organized by subject
2449"RTN","C0XGET1",281,0)
2450 . s zzz=""
2451"RTN","C0XGET1",282,0)
2452 . f s zzz=$o(zary(zrsub,zzz)) q:zzz="" d ; pred and obj
2453"RTN","C0XGET1",283,0)
2454 . . s rtn(zcnt)=zrsub_"^"_zzz
2455"RTN","C0XGET1",284,0)
2456 . . s zcnt=zcnt+1
2457"RTN","C0XGET1",285,0)
2458 q
2459"RTN","C0XGET1",286,0)
2460 ;
2461"RTN","C0XGET1",287,0)
2462rawout(rtn,zary) ; output a mumps array of triples
2463"RTN","C0XGET1",288,0)
2464 ;
2465"RTN","C0XGET1",289,0)
2466 s zrsub=""
2467"RTN","C0XGET1",290,0)
2468 ;s zcnt=1
2469"RTN","C0XGET1",291,0)
2470 f s zrsub=$o(zary(zrsub)) q:zrsub="" d ; organized by subject
2471"RTN","C0XGET1",292,0)
2472 . s zzz=""
2473"RTN","C0XGET1",293,0)
2474 . f s zzz=$o(zary(zrsub,zzz)) q:zzz="" d ; pred and obj
2475"RTN","C0XGET1",294,0)
2476 . . s rtn(zrsub,$p(zzz,"^",1))=$p(zzz,"^",2)
2477"RTN","C0XGET1",295,0)
2478 . . ;s zcnt=zcnt+1
2479"RTN","C0XGET1",296,0)
2480 q
2481"RTN","C0XGET1",297,0)
2482 ;
2483"RTN","C0XGET1",298,0)
2484strings(zrary,zinary) ; convert pointers to strings
2485"RTN","C0XGET1",299,0)
2486 ;
2487"RTN","C0XGET1",300,0)
2488 k zrary
2489"RTN","C0XGET1",301,0)
2490 n zzz s zzz=""
2491"RTN","C0XGET1",302,0)
2492 f s zzz=$o(@zinary@(zzz)) q:zzz="" d ;
2493"RTN","C0XGET1",303,0)
2494 . n zs
2495"RTN","C0XGET1",304,0)
2496 . ;s zs=$$GET1^DIQ(C0XSFN,zzz_",",.01)
2497"RTN","C0XGET1",305,0)
2498 . s zs=$$NSP^C0XUTIL(zzz) ; get namespaced string
2499"RTN","C0XGET1",306,0)
2500 . q:zs=""
2501"RTN","C0XGET1",307,0)
2502 . s zrary(zs)="" ;
2503"RTN","C0XGET1",308,0)
2504 q
2505"RTN","C0XGET1",309,0)
2506 ;
2507"RTN","C0XGET1",310,0)
2508ien2tary(zrary,zinary) ; zinary is an array of iens passed by name
2509"RTN","C0XGET1",311,0)
2510 ; zrary is passed by reference and is return array of triples
2511"RTN","C0XGET1",312,0)
2512 ; format zrary(zsub,"zpred^zobj")=""
2513"RTN","C0XGET1",313,0)
2514 ;
2515"RTN","C0XGET1",314,0)
2516 k zrary ; start out clean
2517"RTN","C0XGET1",315,0)
2518 n zzz,zrsub,zrpred,zrobj,zgraph,zcnt
2519"RTN","C0XGET1",316,0)
2520 s zzz=""
2521"RTN","C0XGET1",317,0)
2522 f s zzz=$o(@zinary@(zzz)) q:zzz="" d ;
2523"RTN","C0XGET1",318,0)
2524 . s zrsub=$$GET1^DIQ(C0XTFN,zzz_",",.03,"E")
2525"RTN","C0XGET1",319,0)
2526 . s zrpred=$$GET1^DIQ(C0XTFN,zzz_",",.04,"E")
2527"RTN","C0XGET1",320,0)
2528 . s zrobj=$$GET1^DIQ(C0XTFN,zzz_",",.05,"E")
2529"RTN","C0XGET1",321,0)
2530 . s zrgraph=$$GET1^DIQ(C0XTFN,zzz_",",.02,"E")
2531"RTN","C0XGET1",322,0)
2532 . s zrary(zrsub,zrpred_"^"_zrobj)=""
2533"RTN","C0XGET1",323,0)
2534 q
2535"RTN","C0XGET1",324,0)
2536 ;
2537"RTN","C0XGET1",325,0)
2538jsonout(jout,zary) ;
2539"RTN","C0XGET1",326,0)
2540 d REPLYSTART^FMQLJSON("jout")
2541"RTN","C0XGET1",327,0)
2542 d LISTSTART^FMQLJSON("jout","results")
2543"RTN","C0XGET1",328,0)
2544 n zi s zi=""
2545"RTN","C0XGET1",329,0)
2546 f s zi=$o(zary(zi)) q:zi="" d ; for each subject
2547"RTN","C0XGET1",330,0)
2548 . n zii s zii=""
2549"RTN","C0XGET1",331,0)
2550 . D DICTSTART^FMQLJSON("jout",zi)
2551"RTN","C0XGET1",332,0)
2552 . f s zii=$o(zary(zi,zii)) q:zii="" d ; for each pred^obj pair
2553"RTN","C0XGET1",333,0)
2554 . . d DASSERT^FMQLJSON("jout",$p(zii,"^",1),$p(zii,"^",2))
2555"RTN","C0XGET1",334,0)
2556 . D DICTEND^FMQLJSON("jout")
2557"RTN","C0XGET1",335,0)
2558 d LISTEND^FMQLJSON("jout")
2559"RTN","C0XGET1",336,0)
2560 d REPLYEND^FMQLJSON("jout")
2561"RTN","C0XGET1",337,0)
2562 q
2563"RTN","C0XGET1",338,0)
2564 ;
2565"RTN","C0XGET1",339,0)
2566mask(zsub,zpred,zobj) ; function to return mask information
2567"RTN","C0XGET1",340,0)
2568 ; about the inputs ie I100 for just a subject and no pred or obj
2569"RTN","C0XGET1",341,0)
2570 n zf1,zf2,zf3,zflag
2571"RTN","C0XGET1",342,0)
2572 s zf1=$s($g(zsub)="":0,1:1)
2573"RTN","C0XGET1",343,0)
2574 s zf2=$s($g(zpred)="":0,1:1)
2575"RTN","C0XGET1",344,0)
2576 s zf3=$s($g(zobj)="":0,1:1)
2577"RTN","C0XGET1",345,0)
2578 s zflag="I"_zf1_zf2_zf3
2579"RTN","C0XGET1",346,0)
2580 q zflag
2581"RTN","C0XGET1",347,0)
2582 ;
2583"RTN","C0XGET1",348,0)
2584trip(triprtn,nsub,npred,nobj,ngraph,fary) ; returns triples iens
2585"RTN","C0XGET1",349,0)
2586 ; nsub,npred,nobj are all optional
2587"RTN","C0XGET1",350,0)
2588 ; graf is also optional, and will limit the search to a particular ngraph
2589"RTN","C0XGET1",351,0)
2590 ; fary is which triple store (not implemented yet)
2591"RTN","C0XGET1",352,0)
2592 n c0xflag,zi,zx,zt
2593"RTN","C0XGET1",353,0)
2594 s zt=$na(^C0X(101)) ;
2595"RTN","C0XGET1",354,0)
2596 s c0xflag=$$mask(nsub,npred,nobj) ; get mask flags
2597"RTN","C0XGET1",355,0)
2598 n itbl
2599"RTN","C0XGET1",356,0)
2600 s itbl("I000","SPO")="d do3(.triprtn,zt,zi)"
2601"RTN","C0XGET1",357,0)
2602 s itbl("I001","OSP")="d do2(.triprtn,zt,zi,nobj)"
2603"RTN","C0XGET1",358,0)
2604 s itbl("I010","PSO")="d do2(.triprtn,zt,zi,npred)"
2605"RTN","C0XGET1",359,0)
2606 s itbl("I011","POS")="d do1(.triprtn,zt,zi,npred,nobj)"
2607"RTN","C0XGET1",360,0)
2608 s itbl("I100","SPO")="d do2(.triprtn,zt,zi,nsub)"
2609"RTN","C0XGET1",361,0)
2610 s itbl("I101","SOP")="d do1(.triprtn,zt,zi,nsub,nobj)"
2611"RTN","C0XGET1",362,0)
2612 s itbl("I110","SPO")="d do1(.triprtn,zt,zi,nsub,npred)"
2613"RTN","C0XGET1",363,0)
2614 s itbl("I111","SPO")="d do0(.triprtn,zt,zi,nsub,npred,nobj)"
2615"RTN","C0XGET1",364,0)
2616 s zi=$o(itbl(c0xflag,""))
2617"RTN","C0XGET1",365,0)
2618 s zx=itbl(c0xflag,zi) ; executable instruction to run
2619"RTN","C0XGET1",366,0)
2620 i $g(ngraph)'="" s zi="G"_zi
2621"RTN","C0XGET1",367,0)
2622 i $g(DEBUG) w !,zx
2623"RTN","C0XGET1",368,0)
2624 x zx
2625"RTN","C0XGET1",369,0)
2626 q
2627"RTN","C0XGET1",370,0)
2628 ;
2629"RTN","C0XGET1",371,0)
2630do0(dortn,zt,zi,z1,z2,z3)
2631"RTN","C0XGET1",372,0)
2632 ; looking for only one triple
2633"RTN","C0XGET1",373,0)
2634 n zz
2635"RTN","C0XGET1",374,0)
2636 s zz=$o(@zt@(zi,z1,z2,z3,""))
2637"RTN","C0XGET1",375,0)
2638 i zz'="" s dortn(zz)=""
2639"RTN","C0XGET1",376,0)
2640 q
2641"RTN","C0XGET1",377,0)
2642 ;
2643"RTN","C0XGET1",378,0)
2644do1(dortn,zt,zi,z1,z2) ; have 2, looking for one
2645"RTN","C0XGET1",379,0)
2646 n zr,zx1
2647"RTN","C0XGET1",380,0)
2648 s zx1=""
2649"RTN","C0XGET1",381,0)
2650 f s zx1=$o(@zt@(zi,z1,z2,zx1)) q:zx1="" d ;
2651"RTN","C0XGET1",382,0)
2652 . s zr=$o(@zt@(zi,z1,z2,zx1,""))
2653"RTN","C0XGET1",383,0)
2654 . s dortn(zr)=""
2655"RTN","C0XGET1",384,0)
2656 q
2657"RTN","C0XGET1",385,0)
2658 ;
2659"RTN","C0XGET1",386,0)
2660do2(dortn,zt,zi,z1) ; have one, looking for 2
2661"RTN","C0XGET1",387,0)
2662 n zr,zx1,zx2
2663"RTN","C0XGET1",388,0)
2664 s (zx1,zx2)=""
2665"RTN","C0XGET1",389,0)
2666 f s zx1=$o(@zt@(zi,z1,zx1)) q:zx1="" d ;
2667"RTN","C0XGET1",390,0)
2668 . f s zx2=$o(@zt@(zi,z1,zx1,zx2)) q:zx2="" d ;
2669"RTN","C0XGET1",391,0)
2670 . . s zr=$o(@zt@(zi,z1,zx1,zx2,""))
2671"RTN","C0XGET1",392,0)
2672 . . s dortn(zr)=""
2673"RTN","C0XGET1",393,0)
2674 q
2675"RTN","C0XGET1",394,0)
2676 ;
2677"RTN","C0XGET1",395,0)
2678do3(dortn,zt,zi) ; have none, looking for three
2679"RTN","C0XGET1",396,0)
2680 n zr,zx1,zx2,zx3
2681"RTN","C0XGET1",397,0)
2682 s (zx1,zx2,zx3)=""
2683"RTN","C0XGET1",398,0)
2684 f s zx1=$o(@zt@(zi,zx1)) q:zx1="" d ;
2685"RTN","C0XGET1",399,0)
2686 . f s zx2=$o(@zt@(zi,zx1,zx2)) q:zx2="" d ;
2687"RTN","C0XGET1",400,0)
2688 . . f s zx3=$o(@zt@(zi,zx1,zx2,zx3)) q:zx3="" d ;
2689"RTN","C0XGET1",401,0)
2690 . . . s zr=$o(@zt@(zi,zx1,zx2,zx3,""))
2691"RTN","C0XGET1",402,0)
2692 . . . s dortn(zr)=""
2693"RTN","C0XGET1",403,0)
2694 q
2695"RTN","C0XGET1",404,0)
2696 ;
2697"RTN","C0XGET1",405,0)
2698IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
2699"RTN","C0XGET1",406,0)
2700 I '$D(FARY) D ;
2701"RTN","C0XGET1",407,0)
2702 . D INITFARY^C0XF2N("C0XFARY")
2703"RTN","C0XGET1",408,0)
2704 . S FARY="C0XFARY"
2705"RTN","C0XGET1",409,0)
2706 N ZIEN
2707"RTN","C0XGET1",410,0)
2708 I $G(ZSTRING)="" Q "" ; NO STRING
2709"RTN","C0XGET1",411,0)
2710 S ZIEN=$O(@C0XSN@("B",$$EXT^C0XUTIL(ZSTRING),""))
2711"RTN","C0XGET1",412,0)
2712 I ZIEN="" S ZIEN=-1
2713"RTN","C0XGET1",413,0)
2714 Q ZIEN
2715"RTN","C0XGET1",414,0)
2716 ;
2717"RTN","C0XGET1",415,0)
2718IENOFA(ZOUTARY,INARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
2719"RTN","C0XGET1",416,0)
2720 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
2721"RTN","C0XGET1",417,0)
2722 I '$D(FARY) D ;
2723"RTN","C0XGET1",418,0)
2724 . D INITFARY^C0XF2N("C0XFARY")
2725"RTN","C0XGET1",419,0)
2726 . S FARY="C0XFARY"
2727"RTN","C0XGET1",420,0)
2728 K ZOUTARY ; START WITH CLEAN RESULTS
2729"RTN","C0XGET1",421,0)
2730 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
2731"RTN","C0XGET1",422,0)
2732 I '$D(C0XVOC) D VOCINIT^C0XUTIL
2733"RTN","C0XGET1",423,0)
2734 N ZINARY
2735"RTN","C0XGET1",424,0)
2736 N ZI S ZI=""
2737"RTN","C0XGET1",425,0)
2738 F S ZI=$O(INARY(ZI)) Q:ZI="" D ;
2739"RTN","C0XGET1",426,0)
2740 . N ZK
2741"RTN","C0XGET1",427,0)
2742 . S ZK=$O(INARY(ZI,""))
2743"RTN","C0XGET1",428,0)
2744 . S ZINARY($$EXT^C0XUTIL(ZI),$$EXT^C0XUTIL(ZK))=""
2745"RTN","C0XGET1",429,0)
2746 N ZV,ZIEN
2747"RTN","C0XGET1",430,0)
2748 N ZCNT S ZCNT=0
2749"RTN","C0XGET1",431,0)
2750 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; LOOK FOR MISSING STRINGS
2751"RTN","C0XGET1",432,0)
2752 . S ZV=$O(ZINARY(ZI,""))
2753"RTN","C0XGET1",433,0)
2754 . I ZV["^" S ZV=$TR(ZV,"^","|")
2755"RTN","C0XGET1",434,0)
2756 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOW GET ALL IENS
2757"RTN","C0XGET1",435,0)
2758 . S ZV=$O(ZINARY(ZI,""))
2759"RTN","C0XGET1",436,0)
2760 . I ZV["^" S ZV=$TR(ZV,"^","|")
2761"RTN","C0XGET1",437,0)
2762 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
2763"RTN","C0XGET1",438,0)
2764 . I ZIEN="" S ZOUTARY("IEN",ZI)=""
2765"RTN","C0XGET1",439,0)
2766 . E S ZOUTARY("IEN",ZI,ZIEN)=""
2767"RTN","C0XGET1",440,0)
2768 Q
2769"RTN","C0XGET1",441,0)
2770 ;
2771"RTN","C0XGET1",442,0)
2772output(zwhat,zfname,zdir) ; function to write an array to a host file
2773"RTN","C0XGET1",443,0)
2774 ; if zdir is ommitted, will output to the CCR directory
2775"RTN","C0XGET1",444,0)
2776 ; ^TMP("C0CCCR","ODIR")
2777"RTN","C0XGET1",445,0)
2778 ; if fname is ommitted, will output yyyy-mm-dd-hh-mm-ss-C0XOUT.out
2779"RTN","C0XGET1",446,0)
2780 ; zwhat is passed by name
2781"RTN","C0XGET1",447,0)
2782 ;
2783"RTN","C0XGET1",448,0)
2784 i '$d(zdir) s zdir=$G(^TMP("C0CCCR","ODIR"))
2785"RTN","C0XGET1",449,0)
2786 i '$d(zfname) d ;
2787"RTN","C0XGET1",450,0)
2788 . s zfname=$$FMTE^XLFDT($$NOW^XLFDT,7)
2789"RTN","C0XGET1",451,0)
2790 . s zfname=$tr(zfname,"/","-")
2791"RTN","C0XGET1",452,0)
2792 . s zfname=$tr(zfname,"@","-")
2793"RTN","C0XGET1",453,0)
2794 . s zfname=$tr(zfname,":","-")
2795"RTN","C0XGET1",454,0)
2796 . s zfname=zfname_".out"
2797"RTN","C0XGET1",455,0)
2798 i $e(zwhat,1,1)'="^" d ; not a global
2799"RTN","C0XGET1",456,0)
2800 . k ^TMP("C0XOUT",$J)
2801"RTN","C0XGET1",457,0)
2802 . m ^TMP("C0XOUT",$J)=@zwhat
2803"RTN","C0XGET1",458,0)
2804 . s zwhat=$na(^TMP("C0XOUT",$J,1))
2805"RTN","C0XGET1",459,0)
2806 n zout s zout=""
2807"RTN","C0XGET1",460,0)
2808 s zout=$$OUTPUT^C0CXPATH(zwhat,zfname,zdir)
2809"RTN","C0XGET1",461,0)
2810 K ^TMP("C0XOUT",$J)
2811"RTN","C0XGET1",462,0)
2812 Q zout
2813"RTN","C0XGET1",463,0)
2814 ;
2815"RTN","C0XGET1",464,0)
2816tagText(ztag) ; extrinsic which returns the location of the text
2817"RTN","C0XGET1",465,0)
2818 ; associated with ztag
2819"RTN","C0XGET1",466,0)
2820 n zs,zo
2821"RTN","C0XGET1",467,0)
2822 s zs=$$subject("fmts:fileTag",ztag)
2823"RTN","C0XGET1",468,0)
2824 i zs="" d q "" ;
2825"RTN","C0XGET1",469,0)
2826 . w !,"error, tag is either missing or there are more than one ",ztag
2827"RTN","C0XGET1",470,0)
2828 s zo=$$object(zs,"fmts:fileSource")
2829"RTN","C0XGET1",471,0)
2830 i zo="" d q "" ;
2831"RTN","C0XGET1",472,0)
2832 . w !,"error, tag source not found ",zs
2833"RTN","C0XGET1",473,0)
2834 w !,zo
2835"RTN","C0XGET1",474,0)
2836 q $$WHERETXT^C0XF2N(zo)
2837"RTN","C0XGET1",475,0)
2838 ;
2839"RTN","C0XGET1",476,0)
2840tagRoot(ztag) ; extrinsic which returns the root for graphs and subjects
2841"RTN","C0XGET1",477,0)
2842 ; associated with ztag
2843"RTN","C0XGET1",478,0)
2844 n zs,zo
2845"RTN","C0XGET1",479,0)
2846 s zs=$$subject("fmts:fileTag",ztag)
2847"RTN","C0XGET1",480,0)
2848 i zs="" d q "" ;
2849"RTN","C0XGET1",481,0)
2850 . w !,"error, tag is either missing or there are more than one ",ztag
2851"RTN","C0XGET1",482,0)
2852 s zo=$$object(zs,"fmts:root")
2853"RTN","C0XGET1",483,0)
2854 i zo="" d q "" ;
2855"RTN","C0XGET1",484,0)
2856 . w !,"error, root not found ",zs
2857"RTN","C0XGET1",485,0)
2858 ;w !,zo
2859"RTN","C0XGET1",486,0)
2860 q zo
2861"RTN","C0XGET1",487,0)
2862 ;
2863"RTN","C0XINIT")
28640^4^B21176787
2865"RTN","C0XINIT",1,0)
2866C0XINIT ; GPL - Fileman Triples initialization routine ;10/13/11 17:05
2867"RTN","C0XINIT",2,0)
2868 ;;0.1;C0X;nopatch;noreleasedate;Build 10
2869"RTN","C0XINIT",3,0)
2870 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
2871"RTN","C0XINIT",4,0)
2872 ;General Public License See attached copy of the License.
2873"RTN","C0XINIT",5,0)
2874 ;
2875"RTN","C0XINIT",6,0)
2876 ;This program is free software; you can redistribute it and/or modify
2877"RTN","C0XINIT",7,0)
2878 ;it under the terms of the GNU General Public License as published by
2879"RTN","C0XINIT",8,0)
2880 ;the Free Software Foundation; either version 2 of the License, or
2881"RTN","C0XINIT",9,0)
2882 ;(at your option) any later version.
2883"RTN","C0XINIT",10,0)
2884 ;
2885"RTN","C0XINIT",11,0)
2886 ;This program is distributed in the hope that it will be useful,
2887"RTN","C0XINIT",12,0)
2888 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
2889"RTN","C0XINIT",13,0)
2890 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2891"RTN","C0XINIT",14,0)
2892 ;GNU General Public License for more details.
2893"RTN","C0XINIT",15,0)
2894 ;
2895"RTN","C0XINIT",16,0)
2896 ;You should have received a copy of the GNU General Public License along
2897"RTN","C0XINIT",17,0)
2898 ;with this program; if not, write to the Free Software Foundation, Inc.,
2899"RTN","C0XINIT",18,0)
2900 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2901"RTN","C0XINIT",19,0)
2902 ;
2903"RTN","C0XINIT",20,0)
2904 Q
2905"RTN","C0XINIT",21,0)
2906 ;
2907"RTN","C0XINIT",22,0)
2908CLEAR ; DELETE THE FILESTORE
2909"RTN","C0XINIT",23,0)
2910 K ^C0X(101)
2911"RTN","C0XINIT",24,0)
2912 K ^C0X(201)
2913"RTN","C0XINIT",25,0)
2914 S ^C0X(101,0)="C0X TRIPLE^172.101I^^"
2915"RTN","C0XINIT",26,0)
2916 S ^C0X(201,0)="C0X STRING^172.201I^^"
2917"RTN","C0XINIT",27,0)
2918 Q
2919"RTN","C0XINIT",28,0)
2920 ;
2921"RTN","C0XINIT",29,0)
2922INIT ; INITIALIZE THE TRIPLE STORE - THIS DELETES THE GLOBALS AND
2923"RTN","C0XINIT",30,0)
2924 ; START ALL OVER... USE WITH CAUTION
2925"RTN","C0XINIT",31,0)
2926 ;
2927"RTN","C0XINIT",32,0)
2928 ; -- we should be more sophisticated here.. at least warn the user
2929"RTN","C0XINIT",33,0)
2930 ; -- and give them a chance to cancel
2931"RTN","C0XINIT",34,0)
2932 ;
2933"RTN","C0XINIT",35,0)
2934 D CLEAR ; DELETE THE TRIPLESTORE
2935"RTN","C0XINIT",36,0)
2936 ;
2937"RTN","C0XINIT",37,0)
2938 ; -- we are assuming that FARY is set up properly in C0XF2N
2939"RTN","C0XINIT",38,0)
2940 ; -- with repect to the default directory and the defaut fileman files
2941"RTN","C0XINIT",39,0)
2942 ; -- here's what it is now: "/home/vista/gpl/fmts/trunk/samples/"
2943"RTN","C0XINIT",40,0)
2944 ; -- that means that all the sample files will look like:
2945"RTN","C0XINIT",41,0)
2946 ; --- qds/QDS_0001.rdf
2947"RTN","C0XINIT",42,0)
2948 ; --- smart-rdf-in/small.rdf
2949"RTN","C0XINIT",43,0)
2950 ;
2951"RTN","C0XINIT",44,0)
2952 S FARY="C0XFARY"
2953"RTN","C0XINIT",45,0)
2954 D INITFARY^C0XF2N(FARY)
2955"RTN","C0XINIT",46,0)
2956 D USEFARY^C0XF2N(FARY)
2957"RTN","C0XINIT",47,0)
2958 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/smart-rdf-in/" ;
2959"RTN","C0XINIT",48,0)
2960 D USEFARY^C0XF2N(FARY)
2961"RTN","C0XINIT",49,0)
2962 S SMART(1)="cole-susan.rdf"
2963"RTN","C0XINIT",50,0)
2964 S SMART(2)="jones-cynthia.rdf"
2965"RTN","C0XINIT",51,0)
2966 S SMART(3)="small.rdf"
2967"RTN","C0XINIT",52,0)
2968 S SMART(4)="collins-frank.rdf"
2969"RTN","C0XINIT",53,0)
2970 S SMART(5)="kelly-david.rdf"
2971"RTN","C0XINIT",54,0)
2972 S SMART(6)="smith-maria.rdf"
2973"RTN","C0XINIT",55,0)
2974 S SMART(7)="ford-shirley.rdf"
2975"RTN","C0XINIT",56,0)
2976 S SMART(8)="morgan-jason.rdf"
2977"RTN","C0XINIT",57,0)
2978 S SMART(9)="west-lisa.rdf"
2979"RTN","C0XINIT",58,0)
2980 S SMART(10)="gracia-paul.rdf"
2981"RTN","C0XINIT",59,0)
2982 S SMART(11)="reed-richard.rdf"
2983"RTN","C0XINIT",60,0)
2984 S SMART(12)="west-sandra.rdf"
2985"RTN","C0XINIT",61,0)
2986 S SMART(13)="jackson-jessica.rdf"
2987"RTN","C0XINIT",62,0)
2988 S SMART(14)="small-allergies.rdf"
2989"RTN","C0XINIT",63,0)
2990 S SMART(15)="white-patricia.rdf"
2991"RTN","C0XINIT",64,0)
2992 N ZI S ZI=""
2993"RTN","C0XINIT",65,0)
2994 F S ZI=$O(SMART(ZI)) Q:ZI="" D ; for each smart file
2995"RTN","C0XINIT",66,0)
2996 . D IMPORT^C0XF2N(SMART(ZI),C0XDIR,,FARY) ; import to the triplestore
2997"RTN","C0XINIT",67,0)
2998 S FARY="C0XFARY"
2999"RTN","C0XINIT",68,0)
3000 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/qds/"
3001"RTN","C0XINIT",69,0)
3002 D USEFARY^C0XF2N(FARY)
3003"RTN","C0XINIT",70,0)
3004 D IMPORT^C0XF2N("QDS_0001.rdf",C0XDIR,,FARY)
3005"RTN","C0XINIT",71,0)
3006 D IMPORT^C0XF2N("QDS_0028b.rdf",C0XDIR,,FARY)
3007"RTN","C0XINIT",72,0)
3008 D IMPORT^C0XF2N("QDS_0052.rdf",C0XDIR,,FARY)
3009"RTN","C0XINIT",73,0)
3010 D IMPORT^C0XF2N("QDS_0073.rdf",C0XDIR,,FARY)
3011"RTN","C0XINIT",74,0)
3012 D IMPORT^C0XF2N("QDS_0385.rdf",C0XDIR,,FARY)
3013"RTN","C0XINIT",75,0)
3014 D IMPORT^C0XF2N("QDS_0002.rdf",C0XDIR,,FARY)
3015"RTN","C0XINIT",76,0)
3016 D IMPORT^C0XF2N("QDS_0031.rdf",C0XDIR,,FARY)
3017"RTN","C0XINIT",77,0)
3018 D IMPORT^C0XF2N("QDS_0055.rdf",C0XDIR,,FARY)
3019"RTN","C0XINIT",78,0)
3020 D IMPORT^C0XF2N("QDS_0074.rdf",C0XDIR,,FARY)
3021"RTN","C0XINIT",79,0)
3022 D IMPORT^C0XF2N("QDS_0387.rdf",C0XDIR,,FARY)
3023"RTN","C0XINIT",80,0)
3024 D IMPORT^C0XF2N("QDS_0004.rdf",C0XDIR,,FARY)
3025"RTN","C0XINIT",81,0)
3026 D IMPORT^C0XF2N("QDS_0032.rdf",C0XDIR,,FARY)
3027"RTN","C0XINIT",82,0)
3028 D IMPORT^C0XF2N("QDS_0056.rdf",C0XDIR,,FARY)
3029"RTN","C0XINIT",83,0)
3030 D IMPORT^C0XF2N("QDS_0075.rdf",C0XDIR,,FARY)
3031"RTN","C0XINIT",84,0)
3032 D IMPORT^C0XF2N("QDS_0389.rdf",C0XDIR,,FARY)
3033"RTN","C0XINIT",85,0)
3034 D IMPORT^C0XF2N("QDS_0012.rdf",C0XDIR,,FARY)
3035"RTN","C0XINIT",86,0)
3036 D IMPORT^C0XF2N("QDS_0033.rdf",C0XDIR,,FARY)
3037"RTN","C0XINIT",87,0)
3038 D IMPORT^C0XF2N("QDS_0059.rdf",C0XDIR,,FARY)
3039"RTN","C0XINIT",88,0)
3040 D IMPORT^C0XF2N("QDS_0081.rdf",C0XDIR,,FARY)
3041"RTN","C0XINIT",89,0)
3042 D IMPORT^C0XF2N("QDS_0421.rdf",C0XDIR,,FARY)
3043"RTN","C0XINIT",90,0)
3044 D IMPORT^C0XF2N("QDS_0013.rdf",C0XDIR,,FARY)
3045"RTN","C0XINIT",91,0)
3046 D IMPORT^C0XF2N("QDS_0034.rdf",C0XDIR,,FARY)
3047"RTN","C0XINIT",92,0)
3048 D IMPORT^C0XF2N("QDS_0061.rdf",C0XDIR,,FARY)
3049"RTN","C0XINIT",93,0)
3050 D IMPORT^C0XF2N("QDS_0083.rdf",C0XDIR,,FARY)
3051"RTN","C0XINIT",94,0)
3052 D IMPORT^C0XF2N("QDS_0575.rdf",C0XDIR,,FARY)
3053"RTN","C0XINIT",95,0)
3054 D IMPORT^C0XF2N("QDS_0014.rdf",C0XDIR,,FARY)
3055"RTN","C0XINIT",96,0)
3056 D IMPORT^C0XF2N("QDS_0036.rdf",C0XDIR,,FARY)
3057"RTN","C0XINIT",97,0)
3058 D IMPORT^C0XF2N("QDS_0062.rdf",C0XDIR,,FARY)
3059"RTN","C0XINIT",98,0)
3060 D IMPORT^C0XF2N("QDS_0084.rdf",C0XDIR,,FARY)
3061"RTN","C0XINIT",99,0)
3062 D IMPORT^C0XF2N("QDS_0018.rdf",C0XDIR,,FARY)
3063"RTN","C0XINIT",100,0)
3064 D IMPORT^C0XF2N("QDS_0038.rdf",C0XDIR,,FARY)
3065"RTN","C0XINIT",101,0)
3066 D IMPORT^C0XF2N("QDS_0064.rdf",C0XDIR,,FARY)
3067"RTN","C0XINIT",102,0)
3068 D IMPORT^C0XF2N("QDS_0086.rdf",C0XDIR,,FARY)
3069"RTN","C0XINIT",103,0)
3070 D IMPORT^C0XF2N("QDS_0024.rdf",C0XDIR,,FARY)
3071"RTN","C0XINIT",104,0)
3072 D IMPORT^C0XF2N("QDS_0041.rdf",C0XDIR,,FARY)
3073"RTN","C0XINIT",105,0)
3074 D IMPORT^C0XF2N("QDS_0067.rdf",C0XDIR,,FARY)
3075"RTN","C0XINIT",106,0)
3076 D IMPORT^C0XF2N("QDS_0088.rdf",C0XDIR,,FARY)
3077"RTN","C0XINIT",107,0)
3078 D IMPORT^C0XF2N("QDS_0027.rdf",C0XDIR,,FARY)
3079"RTN","C0XINIT",108,0)
3080 D IMPORT^C0XF2N("QDS_0043.rdf",C0XDIR,,FARY)
3081"RTN","C0XINIT",109,0)
3082 D IMPORT^C0XF2N("QDS_0068.rdf",C0XDIR,,FARY)
3083"RTN","C0XINIT",110,0)
3084 D IMPORT^C0XF2N("QDS_0089.rdf",C0XDIR,,FARY)
3085"RTN","C0XINIT",111,0)
3086 D IMPORT^C0XF2N("QDS_0028a.rdf",C0XDIR,,FARY)
3087"RTN","C0XINIT",112,0)
3088 D IMPORT^C0XF2N("QDS_0047.rdf",C0XDIR,,FARY)
3089"RTN","C0XINIT",113,0)
3090 D IMPORT^C0XF2N("QDS_0070.rdf",C0XDIR,,FARY)
3091"RTN","C0XINIT",114,0)
3092 D IMPORT^C0XF2N("QDS_0105.rdf",C0XDIR,,FARY)
3093"RTN","C0XINIT",115,0)
3094 ;D IMPORT^C0XF2N("qds.rdf",C0XDIR,,FARY)
3095"RTN","C0XINIT",116,0)
3096 Q
3097"RTN","C0XINIT",117,0)
3098 ;
3099"RTN","C0XMAIN")
31000^1^B115393527
3101"RTN","C0XMAIN",1,0)
3102C0XMAIN ; GPL - Fileman Triples entry point routine ;10/13/11 17:05
3103"RTN","C0XMAIN",2,0)
3104 ;;0.1;C0X;nopatch;noreleasedate;Build 10
3105"RTN","C0XMAIN",3,0)
3106 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
3107"RTN","C0XMAIN",4,0)
3108 ;General Public License See attached copy of the License.
3109"RTN","C0XMAIN",5,0)
3110 ;
3111"RTN","C0XMAIN",6,0)
3112 ;This program is free software; you can redistribute it and/or modify
3113"RTN","C0XMAIN",7,0)
3114 ;it under the terms of the GNU General Public License as published by
3115"RTN","C0XMAIN",8,0)
3116 ;the Free Software Foundation; either version 2 of the License, or
3117"RTN","C0XMAIN",9,0)
3118 ;(at your option) any later version.
3119"RTN","C0XMAIN",10,0)
3120 ;
3121"RTN","C0XMAIN",11,0)
3122 ;This program is distributed in the hope that it will be useful,
3123"RTN","C0XMAIN",12,0)
3124 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3125"RTN","C0XMAIN",13,0)
3126 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3127"RTN","C0XMAIN",14,0)
3128 ;GNU General Public License for more details.
3129"RTN","C0XMAIN",15,0)
3130 ;
3131"RTN","C0XMAIN",16,0)
3132 ;You should have received a copy of the GNU General Public License along
3133"RTN","C0XMAIN",17,0)
3134 ;with this program; if not, write to the Free Software Foundation, Inc.,
3135"RTN","C0XMAIN",18,0)
3136 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3137"RTN","C0XMAIN",19,0)
3138 ;
3139"RTN","C0XMAIN",20,0)
3140 Q
3141"RTN","C0XMAIN",21,0)
3142 ;
3143"RTN","C0XMAIN",22,0)
3144INITFARY(ZFARY) ; INITIALIZE FILE NUMBERS AND OTHER USEFUL THINGS
3145"RTN","C0XMAIN",23,0)
3146 ; FOR THE DEFAULT TRIPLE STORE. USE OTHER VALUES FOR SUPPORTING ADDITIONAL
3147"RTN","C0XMAIN",24,0)
3148 ; TRIPLE STORES
3149"RTN","C0XMAIN",25,0)
3150 S @ZFARY@("C0XTFN")=172.101 ; TRIPLES FILE NUMBER
3151"RTN","C0XMAIN",26,0)
3152 S @ZFARY@("C0XSFN")=172.201 ; TRIPLES STRINGS FILE NUMBER
3153"RTN","C0XMAIN",27,0)
3154 S @ZFARY@("C0XTN")=$NA(^C0X(101)) ; TRIPLES GLOBAL NAME
3155"RTN","C0XMAIN",28,0)
3156 S @ZFARY@("C0XSN")=$NA(^C0X(201)) ; STRING FILE GLOBAL NAME
3157"RTN","C0XMAIN",29,0)
3158 ;S @ZFARY@("C0XDIR")="/home/glilly/all_smart_patient_data/smart-rdf/"
3159"RTN","C0XMAIN",30,0)
3160 S @ZFARY@("C0XDIR")="/home/george/fmts/trunk/samples/"
3161"RTN","C0XMAIN",31,0)
3162 D USEFARY(ZFARY)
3163"RTN","C0XMAIN",32,0)
3164 Q
3165"RTN","C0XMAIN",33,0)
3166 ;
3167"RTN","C0XMAIN",34,0)
3168USEFARY(ZFARY) ; INITIALIZES VARIABLES SAVED IN ARRAY ZFARY
3169"RTN","C0XMAIN",35,0)
3170 N ZI S ZI=""
3171"RTN","C0XMAIN",36,0)
3172 F S ZI=$O(@ZFARY@(ZI)) Q:ZI="" D
3173"RTN","C0XMAIN",37,0)
3174 . ;N ZX
3175"RTN","C0XMAIN",38,0)
3176 . S ZX="S "_ZI_"="""_@ZFARY@(ZI)_""""
3177"RTN","C0XMAIN",39,0)
3178 . ;W !,ZX
3179"RTN","C0XMAIN",40,0)
3180 . X ZX
3181"RTN","C0XMAIN",41,0)
3182 Q
3183"RTN","C0XMAIN",42,0)
3184 ;
3185"RTN","C0XMAIN",43,0)
3186IMPORT(FNAME,FDIR,FURL,FARY) ; EXTRINSIC THAT READS A FILE FROM THE STANDARD
3187"RTN","C0XMAIN",44,0)
3188 ; DIRECTORY, LOADS IT INTO THE TRIPLESTORE AS TEXT, AND RETURNS THE
3189"RTN","C0XMAIN",45,0)
3190 ; NODE NAME OF THE TEXT TRIPLE
3191"RTN","C0XMAIN",46,0)
3192 ; FDIR IS THE OPTIONAL DIRECTORY (DEFAUTS TO STANDARD DIR)
3193"RTN","C0XMAIN",47,0)
3194 ; FURL IS THE OPTIONAL URI FOR ACCESSING THE FILE FROM THE TRIPLE STORE
3195"RTN","C0XMAIN",48,0)
3196 ; FARY IS THE OPTIONAL FILE ARRAY OF THE TRIPLE STORE TO USE
3197"RTN","C0XMAIN",49,0)
3198 I '$D(FARY) D ;
3199"RTN","C0XMAIN",50,0)
3200 . D INITFARY("C0XFARY")
3201"RTN","C0XMAIN",51,0)
3202 . S FARY="C0XFARY"
3203"RTN","C0XMAIN",52,0)
3204 D USEFARY(FARY)
3205"RTN","C0XMAIN",53,0)
3206 N ZD,ZTMP
3207"RTN","C0XMAIN",54,0)
3208 I '$D(FDIR) S FDIR=C0XDIR ; DIRECTORY OF THE RDF FILE
3209"RTN","C0XMAIN",55,0)
3210 I '$D(FURL) D ;
3211"RTN","C0XMAIN",56,0)
3212 . N ZN2 S ZN2=$TR(FNAME,".","_") ; REMOVE THE DOT FROM THE NAME
3213"RTN","C0XMAIN",57,0)
3214 . S FURL=FDIR_ZN2
3215"RTN","C0XMAIN",58,0)
3216 N ZTMP
3217"RTN","C0XMAIN",59,0)
3218 S ZTMP=$NA(^TMP("C0X",$J,"FILEIN",1)) ; WHERE TO PUT THE INCOMING FILE
3219"RTN","C0XMAIN",60,0)
3220 K @ZTMP ; MAKE SURE IT'S CLEAR
3221"RTN","C0XMAIN",61,0)
3222 S C0XSTART=$$NOW^XLFDT
3223"RTN","C0XMAIN",62,0)
3224 W !,"STARTED: ",C0XSTART
3225"RTN","C0XMAIN",63,0)
3226 W !,"READING IN: ",FNAME
3227"RTN","C0XMAIN",64,0)
3228 I '$$FILEIN(ZTMP,FDIR,FNAME,4) D Q ; QUIT IF NO SUCCESS
3229"RTN","C0XMAIN",65,0)
3230 . W !,"ERROR READING FILE: ",FDIR,FNAME
3231"RTN","C0XMAIN",66,0)
3232 S ZRDF=$NA(^TMP("C0X",$J,"FILEIN")) ; WITHOUT THE SUBSCRIPT
3233"RTN","C0XMAIN",67,0)
3234 W !,$O(@ZRDF@(""),-1)," LINES READ"
3235"RTN","C0XMAIN",68,0)
3236 D INSRDF(ZRDF,FURL,FARY) ; IMPORT AND PROCESS THE RDF
3237"RTN","C0XMAIN",69,0)
3238 Q
3239"RTN","C0XMAIN",70,0)
3240 ;
3241"RTN","C0XMAIN",71,0)
3242WGET(ZURL,FARY) ; GET FROM THE INTERNET AN RDF FILE AND INSERT IT
3243"RTN","C0XMAIN",72,0)
3244 ;
3245"RTN","C0XMAIN",73,0)
3246 I '$D(FARY) D ;
3247"RTN","C0XMAIN",74,0)
3248 . D INITFARY("C0XFARY")
3249"RTN","C0XMAIN",75,0)
3250 . S FARY="C0XFARY"
3251"RTN","C0XMAIN",76,0)
3252 D USEFARY(FARY)
3253"RTN","C0XMAIN",77,0)
3254 ;N ZLOC,ZTMP
3255"RTN","C0XMAIN",78,0)
3256 K ZTMP
3257"RTN","C0XMAIN",79,0)
3258 S ZLOC=$NA(^TMP("C0X","WGET",$J))
3259"RTN","C0XMAIN",80,0)
3260 S C0XSTART=$$NOW^XLFDT
3261"RTN","C0XMAIN",81,0)
3262 W !,"STARTED: ",C0XSTART
3263"RTN","C0XMAIN",82,0)
3264 W !,"DOWNLOADING: ",ZURL
3265"RTN","C0XMAIN",83,0)
3266 S OK=$$httpGET^%zewdGTM(ZURL,.ZTMP)
3267"RTN","C0XMAIN",84,0)
3268 M @ZLOC=ZTMP
3269"RTN","C0XMAIN",85,0)
3270 W !,$O(@ZLOC@(""),-1)," LINES READ"
3271"RTN","C0XMAIN",86,0)
3272 D INSRDF(ZLOC,ZURL,FARY)
3273"RTN","C0XMAIN",87,0)
3274 Q
3275"RTN","C0XMAIN",88,0)
3276 ;
3277"RTN","C0XMAIN",89,0)
3278INSRDF(ZRDF,ZNAME,FARY) ; INSERT AN RDF FILE INTO THE STORE AND PROCESS
3279"RTN","C0XMAIN",90,0)
3280 ; ZRDF IS PASSED BY NAME
3281"RTN","C0XMAIN",91,0)
3282 I '$D(FARY) D ;
3283"RTN","C0XMAIN",92,0)
3284 . D INITFARY("C0XFARY")
3285"RTN","C0XMAIN",93,0)
3286 . S FARY="C0XFARY"
3287"RTN","C0XMAIN",94,0)
3288 D USEFARY(FARY)
3289"RTN","C0XMAIN",95,0)
3290 N ZGRAPH,ZSUBJECT
3291"RTN","C0XMAIN",96,0)
3292 S ZGRAPH="_:G"_$$LKY9 ; RANDOM GRAPH NAME
3293"RTN","C0XMAIN",97,0)
3294 S ZSUBJECT=$$ANONS ; RANDOM ANOYMOUS SUBJECT
3295"RTN","C0XMAIN",98,0)
3296 D ADD(ZGRAPH,ZSUBJECT,"fmts:url",ZNAME,FARY)
3297"RTN","C0XMAIN",99,0)
3298 N ZTXTNM
3299"RTN","C0XMAIN",100,0)
3300 S ZTXTNM="_TXT_INCOMING_RDF_FILE_"_ZNAME_"_"_$$LKY9 ; NAME FOR TEXT NODE
3301"RTN","C0XMAIN",101,0)
3302 D ADD(ZGRAPH,ZSUBJECT,"fmts:rdfSource",ZTXTNM,FARY)
3303"RTN","C0XMAIN",102,0)
3304 D UPDIE(.C0XFDA) ; TRY IT OUT
3305"RTN","C0XMAIN",103,0)
3306 K C0XCNT ;RESET FOR NEXT TIME
3307"RTN","C0XMAIN",104,0)
3308 D STORETXT(ZRDF,ZTXTNM,FARY)
3309"RTN","C0XMAIN",105,0)
3310 W !,"ADDED: ",ZGRAPH," ",ZSUBJECT," fmts:rdfSource ",ZTXTNM
3311"RTN","C0XMAIN",106,0)
3312 D PROCESS(.G,ZRDF,ZNAME,ZGRAPH,FARY) ; PARSE AND INSERT THE RDF
3313"RTN","C0XMAIN",107,0)
3314 Q
3315"RTN","C0XMAIN",108,0)
3316 ;
3317"RTN","C0XMAIN",109,0)
3318STORETXT(ZTXT,ZNAME,FARY) ; STORE TEXT IN THE TRIPLESTORE AT ZNAME
3319"RTN","C0XMAIN",110,0)
3320 ;
3321"RTN","C0XMAIN",111,0)
3322 I '$D(FARY) D ;
3323"RTN","C0XMAIN",112,0)
3324 . D INITFARY("C0XFARY")
3325"RTN","C0XMAIN",113,0)
3326 . S FARY="C0XFARY"
3327"RTN","C0XMAIN",114,0)
3328 D USEFARY(FARY)
3329"RTN","C0XMAIN",115,0)
3330 N ZIEN
3331"RTN","C0XMAIN",116,0)
3332 S ZIEN=$$IENOF(ZNAME,FARY) ; GET THE IEN
3333"RTN","C0XMAIN",117,0)
3334 D CLEAN^DILF
3335"RTN","C0XMAIN",118,0)
3336 K ZERR
3337"RTN","C0XMAIN",119,0)
3338 D WP^DIE(C0XSFN,ZIEN_",",1,,ZTXT,"ZERR")
3339"RTN","C0XMAIN",120,0)
3340 I $D(ZERR) D ;
3341"RTN","C0XMAIN",121,0)
3342 . ZWR ZERR
3343"RTN","C0XMAIN",122,0)
3344 Q
3345"RTN","C0XMAIN",123,0)
3346 ;
3347"RTN","C0XMAIN",124,0)
3348GETTXT(ZRTN,ZNAME,FARY) ; RETURNS RDF SOURCE OR OTHER TEXT
3349"RTN","C0XMAIN",125,0)
3350 ; ZRTN IS PASSED BY REFERENCE
3351"RTN","C0XMAIN",126,0)
3352 I '$D(FARY) D ;
3353"RTN","C0XMAIN",127,0)
3354 . D INITFARY("C0XFARY")
3355"RTN","C0XMAIN",128,0)
3356 . S FARY="C0XFARY"
3357"RTN","C0XMAIN",129,0)
3358 D USEFARY(FARY)
3359"RTN","C0XMAIN",130,0)
3360 N ZIEN
3361"RTN","C0XMAIN",131,0)
3362 S ZIEN=$$IENOF(ZNAME)
3363"RTN","C0XMAIN",132,0)
3364 S OK=$$GET1^DIQ(C0XSFN,ZIEN_",",1,,"ZRTN")
3365"RTN","C0XMAIN",133,0)
3366 Q
3367"RTN","C0XMAIN",134,0)
3368 ;
3369"RTN","C0XMAIN",135,0)
3370WHERETXT(ZNAME,FARY) ; EXTRINSIC WHICH RETURNS THE NAME OF THE GLOBAL
3371"RTN","C0XMAIN",136,0)
3372 ; WHERE THE TEXT IS LOCATED. NAME IS THE NAME OF THE STRING
3373"RTN","C0XMAIN",137,0)
3374 I '$D(FARY) D ;
3375"RTN","C0XMAIN",138,0)
3376 . D INITFARY("C0XFARY")
3377"RTN","C0XMAIN",139,0)
3378 . S FARY="C0XFARY"
3379"RTN","C0XMAIN",140,0)
3380 D USEFARY(FARY)
3381"RTN","C0XMAIN",141,0)
3382 N ZIEN
3383"RTN","C0XMAIN",142,0)
3384 S ZIEN=$$IENOF(ZNAME)
3385"RTN","C0XMAIN",143,0)
3386 Q $NA(@C0XSN@(ZIEN,1))
3387"RTN","C0XMAIN",144,0)
3388 ;
3389"RTN","C0XMAIN",145,0)
3390FILEIN(ZINTMP,ZDIR,ZFNAME,ZLVL) ; READS A FILE INTO ZINTMP USING FTG^%ZISH
3391"RTN","C0XMAIN",146,0)
3392 ; ZINTMP IS PASSED BY NAME AND INCLUDES THE NEW SUBSCRIPT
3393"RTN","C0XMAIN",147,0)
3394 ; IE ^TMP("C0X","FILEIN",1)
3395"RTN","C0XMAIN",148,0)
3396 ; ZLVL IN THIS CASE WOULD BE 3 INCREMENTING THE 1
3397"RTN","C0XMAIN",149,0)
3398 ; EXTRINSIC WHICH RETURNS THE RESULT OF FTG^%ZISH
3399"RTN","C0XMAIN",150,0)
3400 S OK=$$FTG^%ZISH(ZDIR,FNAME,ZINTMP,ZLVL)
3401"RTN","C0XMAIN",151,0)
3402 Q OK
3403"RTN","C0XMAIN",152,0)
3404 ;
3405"RTN","C0XMAIN",153,0)
3406TESTPROC ; TEST PROCESS WITH EXISTING SMALL RDF FILE
3407"RTN","C0XMAIN",154,0)
3408 S ZIN=$NA(^TMP("C0X",12226,"FILEIN"))
3409"RTN","C0XMAIN",155,0)
3410 S ZGRAPH="/test/rdfFile"
3411"RTN","C0XMAIN",156,0)
3412 S ZM="/test/rdfFile/meta"
3413"RTN","C0XMAIN",157,0)
3414 D PROCESS(.G,ZIN,ZGRAPH,ZM)
3415"RTN","C0XMAIN",158,0)
3416 Q
3417"RTN","C0XMAIN",159,0)
3418 ;
3419"RTN","C0XMAIN",160,0)
3420PROCESS(ZRTN,ZRDF,ZGRF,ZMETA,FARY) ; PROCESS AN INCOMING RDF FILE
3421"RTN","C0XMAIN",161,0)
3422 ; ZRTN IS PASS BY REFERENCE AND RETURNS MESSAGES ABOUT THE PROCESSING
3423"RTN","C0XMAIN",162,0)
3424 ; ZRDF IS PASSED BY NAME AND IS THE GLOBAL CONTAINING THE RDF FILE
3425"RTN","C0XMAIN",163,0)
3426 ; ZGRF IS THE NAME OF THE GRAPH TO USE IN THE TRIPLE STORE FOR RESULTS
3427"RTN","C0XMAIN",164,0)
3428 ; ZMETA IS OPTIONAL AND IS THE NAME OF THE GRAPH TO STORE METADATA
3429"RTN","C0XMAIN",165,0)
3430 ;
3431"RTN","C0XMAIN",166,0)
3432 I '$D(FARY) D ;
3433"RTN","C0XMAIN",167,0)
3434 . D INITFARY("C0XFARY")
3435"RTN","C0XMAIN",168,0)
3436 . S FARY="C0XFARY"
3437"RTN","C0XMAIN",169,0)
3438 D USEFARY(FARY)
3439"RTN","C0XMAIN",170,0)
3440 ; -- first parse the rdf file with the MXML parser
3441"RTN","C0XMAIN",171,0)
3442 ;S C0XDOCID=$$PARSE^C0CNHIN(ZRDF,"C0XARRAY") ; PARSE WITH MXML
3443"RTN","C0XMAIN",172,0)
3444 S C0XDOCID=$$EN^MXMLDOM(ZRDF,"W")
3445"RTN","C0XMAIN",173,0)
3446 ; -- assign the MXLM dom global name to ZDOM
3447"RTN","C0XMAIN",174,0)
3448 S ZDOM=$NA(^TMP("MXMLDOM",$J,C0XDOCID))
3449"RTN","C0XMAIN",175,0)
3450 W !,$O(@ZDOM@(""),-1)," XML NODES PARSED"
3451"RTN","C0XMAIN",176,0)
3452 ; -- populate the metagraph to point to the graph with status unfinished
3453"RTN","C0XMAIN",177,0)
3454 S METAS=$$ANONS ; GET AN ANONOMOUS RANDOM SUBJECT
3455"RTN","C0XMAIN",178,0)
3456 I '$D(ZMETA) S ZMETA="_:G"_$$LKY9 ; RANDOM GRAPH NAME FOR METAGRAPH
3457"RTN","C0XMAIN",179,0)
3458 D ADD(ZMETA,METAS,"fmts:about",ZGRF,FARY) ; POINT THE META TO THE GRAPH
3459"RTN","C0XMAIN",180,0)
3460 D ADD(ZMETA,METAS,"fmts:status","unfinished",FARY) ; mark as unfinished
3461"RTN","C0XMAIN",181,0)
3462 ;S C0XDATE=$$FMDTOUTC^C0CUTIL($$NOW^XLFDT,"DT")
3463"RTN","C0XMAIN",182,0)
3464 S C0XDATE=$$NOW^XLFDT
3465"RTN","C0XMAIN",183,0)
3466 D ADD(ZMETA,METAS,"fmts:dateTime",C0XDATE,FARY)
3467"RTN","C0XMAIN",184,0)
3468 D UPDIE(.C0XFDA) ; commit the metagraph changes to the triple store
3469"RTN","C0XMAIN",185,0)
3470 ; --
3471"RTN","C0XMAIN",186,0)
3472 ; -- pull out the vocabularies in the RDF statement. marked with xmlns:
3473"RTN","C0XMAIN",187,0)
3474 ; -- put them in a local variable for quick reference
3475"RTN","C0XMAIN",188,0)
3476 ; -- TODO: create a graph for vocabularies and validate incoming against it
3477"RTN","C0XMAIN",189,0)
3478 ;
3479"RTN","C0XMAIN",190,0)
3480 S C0XVOC=""
3481"RTN","C0XMAIN",191,0)
3482 N ZI,ZJ,ZK S ZI=""
3483"RTN","C0XMAIN",192,0)
3484 F S ZI=$O(@ZDOM@(1,"A",ZI)) Q:ZI="" D ; FOR EACH xmlns
3485"RTN","C0XMAIN",193,0)
3486 . S ZVOC=$P(ZI,"xmlns:",2)
3487"RTN","C0XMAIN",194,0)
3488 . I ZVOC'="" S C0XVOC(ZVOC)=$G(@ZDOM@(1,"A",ZI))
3489"RTN","C0XMAIN",195,0)
3490 ;W !,"VOCABS:" ZWR C0XVOC
3491"RTN","C0XMAIN",196,0)
3492 ;
3493"RTN","C0XMAIN",197,0)
3494 ; -- look for children called rdf:Description. quit if none. not an rdf file
3495"RTN","C0XMAIN",198,0)
3496 ;
3497"RTN","C0XMAIN",199,0)
3498 S ZI=$O(@ZDOM@(1,"C",""))
3499"RTN","C0XMAIN",200,0)
3500 I $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ; not an rdf file
3501"RTN","C0XMAIN",201,0)
3502 . W !,"Error. Not an RDF file. Cannot process."
3503"RTN","C0XMAIN",202,0)
3504 ;
3505"RTN","C0XMAIN",203,0)
3506 ; -- now process the rdf description children
3507"RTN","C0XMAIN",204,0)
3508 ;
3509"RTN","C0XMAIN",205,0)
3510 S ZI=""
3511"RTN","C0XMAIN",206,0)
3512 S (C0XSUB,C0XPRE,C0XOBJ)="" ; INITIALIZE subject, object and predicate
3513"RTN","C0XMAIN",207,0)
3514 F S ZI=$O(@ZDOM@(1,"C",ZI)) Q:ZI="" D ;
3515"RTN","C0XMAIN",208,0)
3516 . ; -- we are skipping any child that is not rdf:Description
3517"RTN","C0XMAIN",209,0)
3518 . ; -- TODO: check to see if this is right in general
3519"RTN","C0XMAIN",210,0)
3520 . ;
3521"RTN","C0XMAIN",211,0)
3522 . IF $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ;
3523"RTN","C0XMAIN",212,0)
3524 . . W !,"SKIPPING NODE: ",ZI
3525"RTN","C0XMAIN",213,0)
3526 . ; -- now looking for the subject for the triples
3527"RTN","C0XMAIN",214,0)
3528 . S ZX=$G(@ZDOM@(ZI,"A","rdf:about"))
3529"RTN","C0XMAIN",215,0)
3530 . I ZX'="" D ; we have the subject
3531"RTN","C0XMAIN",216,0)
3532 . . ;W " about: ",ZX
3533"RTN","C0XMAIN",217,0)
3534 . . S C0XSUB=ZX
3535"RTN","C0XMAIN",218,0)
3536 . E D ;
3537"RTN","C0XMAIN",219,0)
3538 . . S ZX=$G(@ZDOM@(ZI,"A","rdf:nodeID")) ; node id is another style of subject
3539"RTN","C0XMAIN",220,0)
3540 . . I ZX'="" D ;
3541"RTN","C0XMAIN",221,0)
3542 . . . S C0XSUB=ZX
3543"RTN","C0XMAIN",222,0)
3544 . I C0XSUB="" S C0XSUB=$$ANONS ; DEFAULT TO BLANK SUBJECT
3545"RTN","C0XMAIN",223,0)
3546 . ;
3547"RTN","C0XMAIN",224,0)
3548 . ; -- we now have the subject. the children of this node have the rest
3549"RTN","C0XMAIN",225,0)
3550 . ;
3551"RTN","C0XMAIN",226,0)
3552 . S ZJ="" ; for the children of the rdf:Description nodes
3553"RTN","C0XMAIN",227,0)
3554 . F S ZJ=$O(@ZDOM@(ZI,"C",ZJ)) Q:ZJ="" D ; for each child
3555"RTN","C0XMAIN",228,0)
3556 . . S C0XPRE=@ZDOM@(ZJ) ; the predicate without a prefix
3557"RTN","C0XMAIN",229,0)
3558 . . S ZX=$G(@ZDOM@(ZJ,"A","xmlns")) ; name space
3559"RTN","C0XMAIN",230,0)
3560 . . I ZX'="" S C0XPRE=ZX_C0XPRE ; add the namespace prefix
3561"RTN","C0XMAIN",231,0)
3562 . . I C0XPRE[":" D ; expand using vocabulary
3563"RTN","C0XMAIN",232,0)
3564 . . . N ZB,ZA
3565"RTN","C0XMAIN",233,0)
3566 . . . S ZB=$P(C0XPRE,":",1)
3567"RTN","C0XMAIN",234,0)
3568 . . . S ZA=$P(C0XPRE,":",2)
3569"RTN","C0XMAIN",235,0)
3570 . . . I $G(C0XVOC(ZB))'="" D ;
3571"RTN","C0XMAIN",236,0)
3572 . . . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
3573"RTN","C0XMAIN",237,0)
3574 . . S ZY=$G(@ZDOM@(ZJ,"A","rdf:resource")) ; potential object
3575"RTN","C0XMAIN",238,0)
3576 . . I ZY'="" D Q ;
3577"RTN","C0XMAIN",239,0)
3578 . . . S C0XOBJ=ZY ; object
3579"RTN","C0XMAIN",240,0)
3580 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; finally. our first real triple
3581"RTN","C0XMAIN",241,0)
3582 . . ; -- this is an else because of the quit above
3583"RTN","C0XMAIN",242,0)
3584 . . S ZX=$G(@ZDOM@(ZJ,"A","rdf:nodeID")) ; fishing for nodeId object
3585"RTN","C0XMAIN",243,0)
3586 . . I ZX'="" D Q ; got one
3587"RTN","C0XMAIN",244,0)
3588 . . . S C0XOBJ=ZX ; we are using the incoming nodeIDs as object/subject
3589"RTN","C0XMAIN",245,0)
3590 . . . ; without change... this could be foolish .. look at it again later
3591"RTN","C0XMAIN",246,0)
3592 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
3593"RTN","C0XMAIN",247,0)
3594 . . S C0XOBJ=$G(@ZDOM@(ZJ,"T",1)) ; hopefully an object is here
3595"RTN","C0XMAIN",248,0)
3596 . . I C0XOBJ="" D Q ; not a happy situation
3597"RTN","C0XMAIN",249,0)
3598 . . . W !,"ERROR, NO OBJECT FOUND FOR NODE: ",ZJ
3599"RTN","C0XMAIN",250,0)
3600 . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
3601"RTN","C0XMAIN",251,0)
3602 W !,"INSERTING ",C0XCNT," TRIPLES"
3603"RTN","C0XMAIN",252,0)
3604 D UPDIE(.C0XFDA) ; commit the updates to the file
3605"RTN","C0XMAIN",253,0)
3606 ; next, mark the graph as finished
3607"RTN","C0XMAIN",254,0)
3608 S C0XEND=$$NOW^XLFDT
3609"RTN","C0XMAIN",255,0)
3610 W !," ENDED AT: ",C0XEND
3611"RTN","C0XMAIN",256,0)
3612 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XSTART,2)
3613"RTN","C0XMAIN",257,0)
3614 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
3615"RTN","C0XMAIN",258,0)
3616 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
3617"RTN","C0XMAIN",259,0)
3618 Q
3619"RTN","C0XMAIN",260,0)
3620 ;
3621"RTN","C0XMAIN",261,0)
3622SHOW(ZN) ;
3623"RTN","C0XMAIN",262,0)
3624 ZWR ^TMP("MXMLDOM",$J,1,ZN,*)
3625"RTN","C0XMAIN",263,0)
3626 Q
3627"RTN","C0XMAIN",264,0)
3628 ;
3629"RTN","C0XMAIN",265,0)
3630ANONS() ; RETURNS AN ANONOMOUS SUBJECT
3631"RTN","C0XMAIN",266,0)
3632 Q "_S:"_$$LKY9
3633"RTN","C0XMAIN",267,0)
3634 ;
3635"RTN","C0XMAIN",268,0)
3636NEWG(NGRAPH,NMETA) ; CREATES A NEW META GRAPH, MARKS IT AS UNFINISHED
3637"RTN","C0XMAIN",269,0)
3638 ; THEN CREATES A NEW GRAPH AND POINTS THE METAGRAPH TO IT
3639"RTN","C0XMAIN",270,0)
3640 ; NGRAPH AND NMETA ARE PASSED BY REFERENCE AND ARE THE RETURN
3641"RTN","C0XMAIN",271,0)
3642 S NGRAPH="G"_$$LKY9
3643"RTN","C0XMAIN",272,0)
3644 S NMETA=NGRAPH_"A"
3645"RTN","C0XMAIN",273,0)
3646 Q
3647"RTN","C0XMAIN",274,0)
3648 ;
3649"RTN","C0XMAIN",275,0)
3650ADD(ZG,ZS,ZP,ZO,FARY) ; ADD A TRIPLE TO THE TRIPLESTORE. ALL VALUES ARE TEXT
3651"RTN","C0XMAIN",276,0)
3652 ; THE FDA IS SET UP BUT THE FILES ARE NOT UPDATED. CALL UPDIE TO COMPLETE
3653"RTN","C0XMAIN",277,0)
3654 I '$D(FARY) D ;
3655"RTN","C0XMAIN",278,0)
3656 . D INITFARY("C0XFARY")
3657"RTN","C0XMAIN",279,0)
3658 . S FARY="C0XFARY"
3659"RTN","C0XMAIN",280,0)
3660 D USEFARY(FARY)
3661"RTN","C0XMAIN",281,0)
3662 I '$D(C0XCNT) S C0XCNT=0
3663"RTN","C0XMAIN",282,0)
3664 N ZNODE
3665"RTN","C0XMAIN",283,0)
3666 S ZNODE="N"_$$LKY17
3667"RTN","C0XMAIN",284,0)
3668 N ZNARY ; GET READY TO CALL IENOFA
3669"RTN","C0XMAIN",285,0)
3670 S ZNARY("ZG",ZG)=""
3671"RTN","C0XMAIN",286,0)
3672 S ZNARY("ZS",ZS)=""
3673"RTN","C0XMAIN",287,0)
3674 S ZNARY("ZP",ZP)=""
3675"RTN","C0XMAIN",288,0)
3676 S ZNARY("ZO",ZO)=""
3677"RTN","C0XMAIN",289,0)
3678 D IENOFA(.ZIENS,.ZNARY,FARY) ; RESOLVE/ADD STRINGS
3679"RTN","C0XMAIN",290,0)
3680 ;S ZGIEN=$$IENOF(ZG) ; LAYGO TO GET IEN
3681"RTN","C0XMAIN",291,0)
3682 ;S ZSIEN=$$IENOF(ZS)
3683"RTN","C0XMAIN",292,0)
3684 ;S ZPIEN=$$IENOF(ZP)
3685"RTN","C0XMAIN",293,0)
3686 ;S ZOIEN=$$IENOF(ZO)
3687"RTN","C0XMAIN",294,0)
3688 ;I $D(C0XFDA) D UPDIE ; ADD THE STRINGS IF NEEDED
3689"RTN","C0XMAIN",295,0)
3690 S C0XCNT=C0XCNT+1
3691"RTN","C0XMAIN",296,0)
3692 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.01)=ZNODE
3693"RTN","C0XMAIN",297,0)
3694 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.02)=$O(ZIENS("IEN","ZG",""))
3695"RTN","C0XMAIN",298,0)
3696 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.03)=$O(ZIENS("IEN","ZS",""))
3697"RTN","C0XMAIN",299,0)
3698 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.04)=$O(ZIENS("IEN","ZP",""))
3699"RTN","C0XMAIN",300,0)
3700 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.05)=$O(ZIENS("IEN","ZO",""))
3701"RTN","C0XMAIN",301,0)
3702 ; REMEMBER TO CALL UPDIE WHEN YOU'RE DONE
3703"RTN","C0XMAIN",302,0)
3704 Q
3705"RTN","C0XMAIN",303,0)
3706 ;
3707"RTN","C0XMAIN",304,0)
3708LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3709"RTN","C0XMAIN",305,0)
3710 ; UNIQUE NODE AND GRAPH NAMES
3711"RTN","C0XMAIN",306,0)
3712 N ZN,ZI
3713"RTN","C0XMAIN",307,0)
3714 S ZN=""
3715"RTN","C0XMAIN",308,0)
3716 F ZI=1:1:9 D ;
3717"RTN","C0XMAIN",309,0)
3718 . S ZN=ZN_$R(10)
3719"RTN","C0XMAIN",310,0)
3720 Q ZN
3721"RTN","C0XMAIN",311,0)
3722 ;
3723"RTN","C0XMAIN",312,0)
3724LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3725"RTN","C0XMAIN",313,0)
3726 ; UNIQUE NODE AND GRAPH NAMES
3727"RTN","C0XMAIN",314,0)
3728 N ZN,ZI
3729"RTN","C0XMAIN",315,0)
3730 S ZN=""
3731"RTN","C0XMAIN",316,0)
3732 F ZI=1:1:17 D ;
3733"RTN","C0XMAIN",317,0)
3734 . S ZN=ZN_$R(10)
3735"RTN","C0XMAIN",318,0)
3736 Q ZN
3737"RTN","C0XMAIN",319,0)
3738 ;
3739"RTN","C0XMAIN",320,0)
3740IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
3741"RTN","C0XMAIN",321,0)
3742 I '$D(FARY) D ;
3743"RTN","C0XMAIN",322,0)
3744 . D INITFARY("C0XFARY")
3745"RTN","C0XMAIN",323,0)
3746 . S FARY="C0XFARY"
3747"RTN","C0XMAIN",324,0)
3748 N ZIEN
3749"RTN","C0XMAIN",325,0)
3750 S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
3751"RTN","C0XMAIN",326,0)
3752 I ZIEN="" D ;
3753"RTN","C0XMAIN",327,0)
3754 . S C0XFDA2(C0XSFN,"+1,",.01)=ZSTRING
3755"RTN","C0XMAIN",328,0)
3756 . D UPDIE(.C0XFDA2)
3757"RTN","C0XMAIN",329,0)
3758 . S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
3759"RTN","C0XMAIN",330,0)
3760 . K C0XFDA2
3761"RTN","C0XMAIN",331,0)
3762 Q ZIEN
3763"RTN","C0XMAIN",332,0)
3764 ;
3765"RTN","C0XMAIN",333,0)
3766IENOFA(ZOUTARY,ZINARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
3767"RTN","C0XMAIN",334,0)
3768 ; OR ADD THEM IF
3769"RTN","C0XMAIN",335,0)
3770 ; MISSING. ZINARY AND ZOUTARY ARE PASSED BY REFERENCE
3771"RTN","C0XMAIN",336,0)
3772 ; ZINARY LOOKS LIKE ZINARY("VAR","VAL")=""
3773"RTN","C0XMAIN",337,0)
3774 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
3775"RTN","C0XMAIN",338,0)
3776 I '$D(FARY) D ;
3777"RTN","C0XMAIN",339,0)
3778 . D INITFARY("C0XFARY")
3779"RTN","C0XMAIN",340,0)
3780 . S FARY="C0XFARY"
3781"RTN","C0XMAIN",341,0)
3782 K ZOUTARY ; START WITH CLEAN RESULTS
3783"RTN","C0XMAIN",342,0)
3784 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
3785"RTN","C0XMAIN",343,0)
3786 N ZI S ZI=""
3787"RTN","C0XMAIN",344,0)
3788 N ZV,ZIEN
3789"RTN","C0XMAIN",345,0)
3790 N ZCNT S ZCNT=0
3791"RTN","C0XMAIN",346,0)
3792 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; LOOK FOR MISSING STRINGS
3793"RTN","C0XMAIN",347,0)
3794 . S ZV=$O(ZINARY(ZI,""))
3795"RTN","C0XMAIN",348,0)
3796 . I $O(@C0XSN@("B",ZV,""))="" D ;
3797"RTN","C0XMAIN",349,0)
3798 . . S ZCNT=ZCNT+1
3799"RTN","C0XMAIN",350,0)
3800 . . S C0XFDA2(C0XSFN,"+"_ZCNT_",",.01)=ZV
3801"RTN","C0XMAIN",351,0)
3802 I $D(C0XFDA2) D ;
3803"RTN","C0XMAIN",352,0)
3804 . D UPDIE(.C0XFDA2) ; ADD MISSING STRINGS
3805"RTN","C0XMAIN",353,0)
3806 . K C0XFDA2 ; CLEAN UP
3807"RTN","C0XMAIN",354,0)
3808 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOT GET ALL IENS
3809"RTN","C0XMAIN",355,0)
3810 . S ZV=$O(ZINARY(ZI,""))
3811"RTN","C0XMAIN",356,0)
3812 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
3813"RTN","C0XMAIN",357,0)
3814 . I ZIEN="" D ;
3815"RTN","C0XMAIN",358,0)
3816 . . W !,"ERROR ADDING STRING: ",ZV
3817"RTN","C0XMAIN",359,0)
3818 . . B
3819"RTN","C0XMAIN",360,0)
3820 . S ZOUTARY("IEN",ZI,ZIEN)=""
3821"RTN","C0XMAIN",361,0)
3822 Q
3823"RTN","C0XMAIN",362,0)
3824 ;
3825"RTN","C0XMAIN",363,0)
3826UPDIE(ZFDA) ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
3827"RTN","C0XMAIN",364,0)
3828 ; ZFDA IS PASSED BY REFERENCE
3829"RTN","C0XMAIN",365,0)
3830 ;ZWR ZFDA
3831"RTN","C0XMAIN",366,0)
3832 ;B
3833"RTN","C0XMAIN",367,0)
3834 K ZERR
3835"RTN","C0XMAIN",368,0)
3836 D CLEAN^DILF
3837"RTN","C0XMAIN",369,0)
3838 D UPDATE^DIE("","ZFDA","","ZERR")
3839"RTN","C0XMAIN",370,0)
3840 I $D(ZERR) S ZZERR=ZZERR ; ZZERR DOESN'T EXIST,
3841"RTN","C0XMAIN",371,0)
3842 ; INVOKE THE ERROR TRAP IF TASKED
3843"RTN","C0XMAIN",372,0)
3844 ;. W "ERROR",!
3845"RTN","C0XMAIN",373,0)
3846 ;. ZWR ZERR
3847"RTN","C0XMAIN",374,0)
3848 ;. B
3849"RTN","C0XMAIN",375,0)
3850 K ZFDA
3851"RTN","C0XMAIN",376,0)
3852 Q
3853"RTN","C0XMAIN",377,0)
3854 ;
3855"RTN","C0XRDF")
38560^7^B4392
3857"RTN","C0XRDF",1,0)
3858C0XRDF ; GPL - Fileman Triples RDF out ;11/07/11 17:05
3859"RTN","C0XRDF",2,0)
3860 ;;0.1;C0X;nopatch;noreleasedate;Build 10
3861"RTN","C0XRDF",3,0)
3862 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU
3863"RTN","C0XRDF",4,0)
3864 ;General Public License See attached copy of the License.
3865"RTN","C0XRDF",5,0)
3866 ;
3867"RTN","C0XRDF",6,0)
3868 ;This program is free software; you can redistribute it and/or modify
3869"RTN","C0XRDF",7,0)
3870 ;it under the terms of the GNU General Public License as published by
3871"RTN","C0XRDF",8,0)
3872 ;the Free Software Foundation; either version 2 of the License, or
3873"RTN","C0XRDF",9,0)
3874 ;(at your option) any later version.
3875"RTN","C0XRDF",10,0)
3876 ;
3877"RTN","C0XRDF",11,0)
3878 ;This program is distributed in the hope that it will be useful,
3879"RTN","C0XRDF",12,0)
3880 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3881"RTN","C0XRDF",13,0)
3882 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3883"RTN","C0XRDF",14,0)
3884 ;GNU General Public License for more details.
3885"RTN","C0XRDF",15,0)
3886 ;
3887"RTN","C0XRDF",16,0)
3888 ;You should have received a copy of the GNU General Public License along
3889"RTN","C0XRDF",17,0)
3890 ;with this program; if not, write to the Free Software Foundation, Inc.,
3891"RTN","C0XRDF",18,0)
3892 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3893"RTN","C0XRDF",19,0)
3894 ;
3895"RTN","C0XRDF",20,0)
3896 Q
3897"RTN","C0XRDF",21,0)
3898 ;
3899"RTN","C0XRDF",22,0)
3900REPLYSTART(ZARY);
3901"RTN","C0XRDF",23,0)
3902 D ADD(ZARY,"<?xml version=""1.0"" encoding=""UTF-8""?>")
3903"RTN","C0XRDF",24,0)
3904 D ADD(ZARY,"<rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"">")
3905"RTN","C0XRDF",25,0)
3906 Q
3907"RTN","C0XRDF",26,0)
3908 ;
3909"RTN","C0XRDF",27,0)
3910LISTSTART(ZARY,ZNAM)
3911"RTN","C0XRDF",28,0)
3912 Q
3913"RTN","C0XRDF",29,0)
3914 ;
3915"RTN","C0XRDF",30,0)
3916DICTSTART(ZARY,ZSUB)
3917"RTN","C0XRDF",31,0)
3918 I ZSUB["http" D Q ;
3919"RTN","C0XRDF",32,0)
3920 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
3921"RTN","C0XRDF",33,0)
3922 I $E(ZSUB,1,1)="/" D Q ;
3923"RTN","C0XRDF",34,0)
3924 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
3925"RTN","C0XRDF",35,0)
3926 D ADD(ZARY,"<rdf:Description rdf:nodeID="""_ZSUB_""">")
3927"RTN","C0XRDF",36,0)
3928 Q
3929"RTN","C0XRDF",37,0)
3930 ;
3931"RTN","C0XRDF",38,0)
3932DASSERT(ZARY,ZPRED,ZOBJ)
3933"RTN","C0XRDF",39,0)
3934 I ZPRED[":" D Q ;
3935"RTN","C0XRDF",40,0)
3936 . I ZPRED="rdf:type" D Q ;
3937"RTN","C0XRDF",41,0)
3938 . . D ADD(ZARY,"<rdf:type rdf:resource="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
3939"RTN","C0XRDF",42,0)
3940 . N ZA,ZB,ZC
3941"RTN","C0XRDF",43,0)
3942 . S ZA=$P(ZPRED,":",1)
3943"RTN","C0XRDF",44,0)
3944 . S ZB=$P(ZPRED,":",2)
3945"RTN","C0XRDF",45,0)
3946 . I $E(ZB,1,1)="/" D ;
3947"RTN","C0XRDF",46,0)
3948 . . S ZB=$P(ZB,"/",2) ; handling gpltest:/note situations
3949"RTN","C0XRDF",47,0)
3950 . S ZC=C0XVOC(ZA)
3951"RTN","C0XRDF",48,0)
3952 . I ZOBJ["nodeID:" D Q ;
3953"RTN","C0XRDF",49,0)
3954 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:nodeID="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
3955"RTN","C0XRDF",50,0)
3956 . S ZOBJ=$$EXT^C0XUTIL(ZOBJ)
3957"RTN","C0XRDF",51,0)
3958 . I ZOBJ["http" D Q ;
3959"RTN","C0XRDF",52,0)
3960 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
3961"RTN","C0XRDF",53,0)
3962 . I $E(ZOBJ,1,1)="/" D Q ;
3963"RTN","C0XRDF",54,0)
3964 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
3965"RTN","C0XRDF",55,0)
3966 . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""">"_$$EXT^C0XUTIL(ZOBJ)_"</"_ZB_">")
3967"RTN","C0XRDF",56,0)
3968 Q
3969"RTN","C0XRDF",57,0)
3970 ;
3971"RTN","C0XRDF",58,0)
3972DICTEND(ZARY)
3973"RTN","C0XRDF",59,0)
3974 D ADD(ZARY,"</rdf:Description>")
3975"RTN","C0XRDF",60,0)
3976 Q
3977"RTN","C0XRDF",61,0)
3978 ;
3979"RTN","C0XRDF",62,0)
3980LISTEND(ZARY)
3981"RTN","C0XRDF",63,0)
3982 Q
3983"RTN","C0XRDF",64,0)
3984 ;
3985"RTN","C0XRDF",65,0)
3986REPLYEND(ZARY)
3987"RTN","C0XRDF",66,0)
3988 D ADD(ZARY,"</rdf:RDF>")
3989"RTN","C0XRDF",67,0)
3990 Q
3991"RTN","C0XRDF",68,0)
3992 ;
3993"RTN","C0XRDF",69,0)
3994ADD(ZARY,ZELE)
3995"RTN","C0XRDF",70,0)
3996 N ZI
3997"RTN","C0XRDF",71,0)
3998 I '$D(ZARY) S @ZARY@(1)=ZELE Q ;
3999"RTN","C0XRDF",72,0)
4000 S ZI=$O(@ZARY@(""),-1)
4001"RTN","C0XRDF",73,0)
4002 S @ZARY@(ZI+1)=ZELE
4003"RTN","C0XRDF",74,0)
4004 Q
4005"RTN","C0XRDF",75,0)
4006 ;
4007"RTN","C0XRDF",76,0)
4008rdfout(rdfout,zary) ;
4009"RTN","C0XRDF",77,0)
4010 d REPLYSTART("rdfout")
4011"RTN","C0XRDF",78,0)
4012 d LISTSTART("rdfout","results")
4013"RTN","C0XRDF",79,0)
4014 n zi s zi=""
4015"RTN","C0XRDF",80,0)
4016 f s zi=$o(zary(zi)) q:zi="" d ; for each subject
4017"RTN","C0XRDF",81,0)
4018 . n zii s zii=""
4019"RTN","C0XRDF",82,0)
4020 . D DICTSTART("rdfout",$$EXT^C0XUTIL(zi))
4021"RTN","C0XRDF",83,0)
4022 . f s zii=$o(zary(zi,zii)) q:zii="" d ; for each pred^obj pair
4023"RTN","C0XRDF",84,0)
4024 . . d DASSERT("rdfout",$p(zii,"^",1),$p(zii,"^",2))
4025"RTN","C0XRDF",85,0)
4026 . D DICTEND("rdfout")
4027"RTN","C0XRDF",86,0)
4028 d LISTEND("rdfout")
4029"RTN","C0XRDF",87,0)
4030 d REPLYEND("rdfout")
4031"RTN","C0XRDF",88,0)
4032 q
4033"RTN","C0XRDF",89,0)
4034 ;
4035"RTN","C0XTEST")
40360^3^B14490662
4037"RTN","C0XTEST",1,0)
4038C0XTEST ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
4039"RTN","C0XTEST",2,0)
4040 ;;0.1;C0X;nopatch;noreleasedate;Build 10
4041"RTN","C0XTEST",3,0)
4042 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4043"RTN","C0XTEST",4,0)
4044 ;General Public License See attached copy of the License.
4045"RTN","C0XTEST",5,0)
4046 ;
4047"RTN","C0XTEST",6,0)
4048 ;This program is free software; you can redistribute it and/or modify
4049"RTN","C0XTEST",7,0)
4050 ;it under the terms of the GNU General Public License as published by
4051"RTN","C0XTEST",8,0)
4052 ;the Free Software Foundation; either version 2 of the License, or
4053"RTN","C0XTEST",9,0)
4054 ;(at your option) any later version.
4055"RTN","C0XTEST",10,0)
4056 ;
4057"RTN","C0XTEST",11,0)
4058 ;This program is distributed in the hope that it will be useful,
4059"RTN","C0XTEST",12,0)
4060 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4061"RTN","C0XTEST",13,0)
4062 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4063"RTN","C0XTEST",14,0)
4064 ;GNU General Public License for more details.
4065"RTN","C0XTEST",15,0)
4066 ;
4067"RTN","C0XTEST",16,0)
4068 ;You should have received a copy of the GNU General Public License along
4069"RTN","C0XTEST",17,0)
4070 ;with this program; if not, write to the Free Software Foundation, Inc.,
4071"RTN","C0XTEST",18,0)
4072 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4073"RTN","C0XTEST",19,0)
4074 ;
4075"RTN","C0XTEST",20,0)
4076 Q
4077"RTN","C0XTEST",21,0)
4078 ;
4079"RTN","C0XTEST",22,0)
4080EN ; run the test
4081"RTN","C0XTEST",23,0)
4082 ;
4083"RTN","C0XTEST",24,0)
4084 k C0XFDA ; clear the node variable
4085"RTN","C0XTEST",25,0)
4086 i '$d(^C0X(101,0)) d ; global doesn't exist
4087"RTN","C0XTEST",26,0)
4088 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
4089"RTN","C0XTEST",27,0)
4090 n zg
4091"RTN","C0XTEST",28,0)
4092 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
4093"RTN","C0XTEST",29,0)
4094 n zi
4095"RTN","C0XTEST",30,0)
4096 f zi=1:1:100000 d ; try a test of 10000 nodes
4097"RTN","C0XTEST",31,0)
4098 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
4099"RTN","C0XTEST",32,0)
4100 . s C0XFDA(172.101,zi,.02)=zg
4101"RTN","C0XTEST",33,0)
4102 . s C0XFDA(172.101,zi,.03)=$R(100000)
4103"RTN","C0XTEST",34,0)
4104 . s C0XFDA(172.101,zi,.04)=$R(100000)
4105"RTN","C0XTEST",35,0)
4106 . s C0XFDA(172.101,zi,.05)=$R(100000)
4107"RTN","C0XTEST",36,0)
4108 S C0XST=$$NOW^XLFDT ; start of the insertion test
4109"RTN","C0XTEST",37,0)
4110 W !,"INSERTION STARTS AT ",C0XST,!
4111"RTN","C0XTEST",38,0)
4112 d BULKLOAD(.C0XFDA)
4113"RTN","C0XTEST",39,0)
4114 s C0XEND=$$NOW^XLFDT ; end of the insertion test
4115"RTN","C0XTEST",40,0)
4116 W !,"INSERTION ENDS AT ",C0XEND
4117"RTN","C0XTEST",41,0)
4118 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XST,2)
4119"RTN","C0XTEST",42,0)
4120 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
4121"RTN","C0XTEST",43,0)
4122 I C0XDIFF>0 W !," APPROXIMATELY ",$P(100000/C0XDIFF,".")," NODES PER SECOND"
4123"RTN","C0XTEST",44,0)
4124 q
4125"RTN","C0XTEST",45,0)
4126 ;
4127"RTN","C0XTEST",46,0)
4128LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4129"RTN","C0XTEST",47,0)
4130 ; UNIQUE NODE AND GRAPH NAMES
4131"RTN","C0XTEST",48,0)
4132 N ZN,ZI
4133"RTN","C0XTEST",49,0)
4134 S ZN=""
4135"RTN","C0XTEST",50,0)
4136 F ZI=1:1:9 D ;
4137"RTN","C0XTEST",51,0)
4138 . S ZN=ZN_$R(10)
4139"RTN","C0XTEST",52,0)
4140 Q ZN
4141"RTN","C0XTEST",53,0)
4142 ;
4143"RTN","C0XTEST",54,0)
4144LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4145"RTN","C0XTEST",55,0)
4146 ; UNIQUE NODE AND GRAPH NAMES
4147"RTN","C0XTEST",56,0)
4148 N ZN,ZI
4149"RTN","C0XTEST",57,0)
4150 S ZN=""
4151"RTN","C0XTEST",58,0)
4152 F ZI=1:1:17 D ;
4153"RTN","C0XTEST",59,0)
4154 . S ZN=ZN_$R(10)
4155"RTN","C0XTEST",60,0)
4156 Q ZN
4157"RTN","C0XTEST",61,0)
4158 ;
4159"RTN","C0XTEST",62,0)
4160BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
4161"RTN","C0XTEST",63,0)
4162 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
4163"RTN","C0XTEST",64,0)
4164 ; QUITS IF FILE IS NOT 172.101
4165"RTN","C0XTEST",65,0)
4166 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
4167"RTN","C0XTEST",66,0)
4168 ; QUITS IF FIRST ENTRY IS NOT IENS 1
4169"RTN","C0XTEST",67,0)
4170 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
4171"RTN","C0XTEST",68,0)
4172 ; ZBFDA IS PASSED BY REFERENCE
4173"RTN","C0XTEST",69,0)
4174 ;
4175"RTN","C0XTEST",70,0)
4176 ; -- reserves a block of iens from file 172.101 by locking the zero node
4177"RTN","C0XTEST",71,0)
4178 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
4179"RTN","C0XTEST",72,0)
4180 ; -- then unlocking to minimize the duration of the lock
4181"RTN","C0XTEST",73,0)
4182 ;
4183"RTN","C0XTEST",74,0)
4184 W !,"USING BULKLOAD"
4185"RTN","C0XTEST",75,0)
4186 I '$D(ZBFDA) Q ; EMPTY FDA
4187"RTN","C0XTEST",76,0)
4188 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
4189"RTN","C0XTEST",77,0)
4190 N ZCNT,ZP3,ZP4
4191"RTN","C0XTEST",78,0)
4192 ; -- find the number of nodes to insert
4193"RTN","C0XTEST",79,0)
4194 S ZCNT=$O(ZBFDA(172.101,""),-1)
4195"RTN","C0XTEST",80,0)
4196 I ZCNT="" D Q ;
4197"RTN","C0XTEST",81,0)
4198 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
4199"RTN","C0XTEST",82,0)
4200 . B
4201"RTN","C0XTEST",83,0)
4202 ; -- lock the zero node and reserve a block of iens to insert
4203"RTN","C0XTEST",84,0)
4204 W !,"LOCKING ZERO NODE"
4205"RTN","C0XTEST",85,0)
4206 LOCK +^C0X(101,0)
4207"RTN","C0XTEST",86,0)
4208 S ZP3=$P(^C0X(101,0),U,3)
4209"RTN","C0XTEST",87,0)
4210 S ZP4=$P(^C0X(101,0),U,4)
4211"RTN","C0XTEST",88,0)
4212 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
4213"RTN","C0XTEST",89,0)
4214 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
4215"RTN","C0XTEST",90,0)
4216 LOCK -^C0X(101,0)
4217"RTN","C0XTEST",91,0)
4218 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
4219"RTN","C0XTEST",92,0)
4220 S ZBASE=ZP3 ; the last ien in the file
4221"RTN","C0XTEST",93,0)
4222 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
4223"RTN","C0XTEST",94,0)
4224 W !,$$NOW^XLFDT
4225"RTN","C0XTEST",95,0)
4226 S ZI=""
4227"RTN","C0XTEST",96,0)
4228 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
4229"RTN","C0XTEST",97,0)
4230 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
4231"RTN","C0XTEST",98,0)
4232 . I ZN="" D BLKERR Q ;
4233"RTN","C0XTEST",99,0)
4234 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
4235"RTN","C0XTEST",100,0)
4236 . I ZG="" D BLKERR Q ;
4237"RTN","C0XTEST",101,0)
4238 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
4239"RTN","C0XTEST",102,0)
4240 . I ZS="" D BLKERR Q ;
4241"RTN","C0XTEST",103,0)
4242 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
4243"RTN","C0XTEST",104,0)
4244 . I ZP="" D BLKERR Q ;
4245"RTN","C0XTEST",105,0)
4246 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
4247"RTN","C0XTEST",106,0)
4248 . I ZO="" D BLKERR Q ;
4249"RTN","C0XTEST",107,0)
4250 . S ZIEN=ZI+ZBASE ; the new ien
4251"RTN","C0XTEST",108,0)
4252 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
4253"RTN","C0XTEST",109,0)
4254 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
4255"RTN","C0XTEST",110,0)
4256 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
4257"RTN","C0XTEST",111,0)
4258 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
4259"RTN","C0XTEST",112,0)
4260 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
4261"RTN","C0XTEST",113,0)
4262 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
4263"RTN","C0XTEST",114,0)
4264 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
4265"RTN","C0XTEST",115,0)
4266 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
4267"RTN","C0XTEST",116,0)
4268 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
4269"RTN","C0XTEST",117,0)
4270 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
4271"RTN","C0XTEST",118,0)
4272 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
4273"RTN","C0XTEST",119,0)
4274 Q
4275"RTN","C0XTEST",120,0)
4276 ;
4277"RTN","C0XTEST",121,0)
4278BLKERR ;
4279"RTN","C0XTEST",122,0)
4280 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
4281"RTN","C0XTEST",123,0)
4282 B
4283"RTN","C0XTEST",124,0)
4284 Q
4285"RTN","C0XTEST",125,0)
4286 ;
4287"RTN","C0XTKSB")
42880^6^B17580555
4289"RTN","C0XTKSB",1,0)
4290C0XTESTKSB ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
4291"RTN","C0XTKSB",2,0)
4292 ; KSB - modified to fix a minor bug and to use;;;;;Build 10
4293"RTN","C0XTKSB",3,0)
4294 ; high resolution time if routines available ; 11/19/11 1410 EST
4295"RTN","C0XTKSB",4,0)
4296 ;;0.1;C0X;nopatch;noreleasedate;Build 1
4297"RTN","C0XTKSB",5,0)
4298 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4299"RTN","C0XTKSB",6,0)
4300 ;General Public License See attached copy of the License.
4301"RTN","C0XTKSB",7,0)
4302 ;
4303"RTN","C0XTKSB",8,0)
4304 ;This program is free software; you can redistribute it and/or modify
4305"RTN","C0XTKSB",9,0)
4306 ;it under the terms of the GNU General Public License as published by
4307"RTN","C0XTKSB",10,0)
4308 ;the Free Software Foundation; either version 2 of the License, or
4309"RTN","C0XTKSB",11,0)
4310 ;(at your option) any later version.
4311"RTN","C0XTKSB",12,0)
4312 ;
4313"RTN","C0XTKSB",13,0)
4314 ;This program is distributed in the hope that it will be useful,
4315"RTN","C0XTKSB",14,0)
4316 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4317"RTN","C0XTKSB",15,0)
4318 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4319"RTN","C0XTKSB",16,0)
4320 ;GNU General Public License for more details.
4321"RTN","C0XTKSB",17,0)
4322 ;
4323"RTN","C0XTKSB",18,0)
4324 ;You should have received a copy of the GNU General Public License along
4325"RTN","C0XTKSB",19,0)
4326 ;with this program; if not, write to the Free Software Foundation, Inc.,
4327"RTN","C0XTKSB",20,0)
4328 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4329"RTN","C0XTKSB",21,0)
4330 ;
4331"RTN","C0XTKSB",22,0)
4332 Q
4333"RTN","C0XTKSB",23,0)
4334 ;
4335"RTN","C0XTKSB",24,0)
4336EN ; run the test
4337"RTN","C0XTKSB",25,0)
4338 ;
4339"RTN","C0XTKSB",26,0)
4340 k C0XFDA ; clear the node variable
4341"RTN","C0XTKSB",27,0)
4342 s U="^" ; initialization - Bhaskar 20111119
4343"RTN","C0XTKSB",28,0)
4344 i '$d(^C0X(101,0)) d ; global doesn't exist
4345"RTN","C0XTKSB",29,0)
4346 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
4347"RTN","C0XTKSB",30,0)
4348 n zg
4349"RTN","C0XTKSB",31,0)
4350 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
4351"RTN","C0XTKSB",32,0)
4352 n zi
4353"RTN","C0XTKSB",33,0)
4354 f zi=1:1:10000 d ; try a test of 10000 nodes
4355"RTN","C0XTKSB",34,0)
4356 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
4357"RTN","C0XTKSB",35,0)
4358 . s C0XFDA(172.101,zi,.02)=zg
4359"RTN","C0XTKSB",36,0)
4360 . s C0XFDA(172.101,zi,.03)=$R(100000)
4361"RTN","C0XTKSB",37,0)
4362 . s C0XFDA(172.101,zi,.04)=$R(100000)
4363"RTN","C0XTKSB",38,0)
4364 . s C0XFDA(172.101,zi,.05)=$R(100000)
4365"RTN","C0XTKSB",39,0)
4366 S C0XST=$$H ; start of the insertion test
4367"RTN","C0XTKSB",40,0)
4368 W !,"INSERTION STARTS AT ",$ZDATE(C0XST,"YEAR-MM-DD:24:60:SS"),!
4369"RTN","C0XTKSB",41,0)
4370 d BULKLOAD(.C0XFDA)
4371"RTN","C0XTKSB",42,0)
4372 s C0XEND=$$H ; end of the insertion test
4373"RTN","C0XTKSB",43,0)
4374 W !,"INSERTION ENDS AT ",$ZDATE(C0XEND,"YEAR-MM-DD:24:60:SS")
4375"RTN","C0XTKSB",44,0)
4376 S C0XDIFF=(86400*($P(C0XEND,",",1)-$P(C0XST,",",1)))+$P(C0XEND,",",2)-$P(C0XST,",",2)
4377"RTN","C0XTKSB",45,0)
4378 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
4379"RTN","C0XTKSB",46,0)
4380 W !
4381"RTN","C0XTKSB",47,0)
4382 W:C0XDIFF>0 " APPROXIMATELY ",$FN(10000/C0XDIFF,",",0)," NODES PER SECOND",!
4383"RTN","C0XTKSB",48,0)
4384 q
4385"RTN","C0XTKSB",49,0)
4386 ;
4387"RTN","C0XTKSB",50,0)
4388LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4389"RTN","C0XTKSB",51,0)
4390 ; UNIQUE NODE AND GRAPH NAMES
4391"RTN","C0XTKSB",52,0)
4392 N ZN,ZI
4393"RTN","C0XTKSB",53,0)
4394 S ZN=""
4395"RTN","C0XTKSB",54,0)
4396 F ZI=1:1:9 D ;
4397"RTN","C0XTKSB",55,0)
4398 . S ZN=ZN_$R(10)
4399"RTN","C0XTKSB",56,0)
4400 Q ZN
4401"RTN","C0XTKSB",57,0)
4402 ;
4403"RTN","C0XTKSB",58,0)
4404LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4405"RTN","C0XTKSB",59,0)
4406 ; UNIQUE NODE AND GRAPH NAMES
4407"RTN","C0XTKSB",60,0)
4408 N ZN,ZI
4409"RTN","C0XTKSB",61,0)
4410 S ZN=""
4411"RTN","C0XTKSB",62,0)
4412 F ZI=1:1:17 D ;
4413"RTN","C0XTKSB",63,0)
4414 . S ZN=ZN_$R(10)
4415"RTN","C0XTKSB",64,0)
4416 Q ZN
4417"RTN","C0XTKSB",65,0)
4418 ;
4419"RTN","C0XTKSB",66,0)
4420BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
4421"RTN","C0XTKSB",67,0)
4422 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
4423"RTN","C0XTKSB",68,0)
4424 ; QUITS IF FILE IS NOT 172.101
4425"RTN","C0XTKSB",69,0)
4426 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
4427"RTN","C0XTKSB",70,0)
4428 ; QUITS IF FIRST ENTRY IS NOT IENS 1
4429"RTN","C0XTKSB",71,0)
4430 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
4431"RTN","C0XTKSB",72,0)
4432 ; ZBFDA IS PASSED BY REFERENCE
4433"RTN","C0XTKSB",73,0)
4434 ;
4435"RTN","C0XTKSB",74,0)
4436 ; -- reserves a block of iens from file 172.101 by locking the zero node
4437"RTN","C0XTKSB",75,0)
4438 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
4439"RTN","C0XTKSB",76,0)
4440 ; -- then unlocking to minimize the duration of the lock
4441"RTN","C0XTKSB",77,0)
4442 ;
4443"RTN","C0XTKSB",78,0)
4444 W !,"USING BULKLOAD"
4445"RTN","C0XTKSB",79,0)
4446 I '$D(ZBFDA) Q ; EMPTY FDA
4447"RTN","C0XTKSB",80,0)
4448 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
4449"RTN","C0XTKSB",81,0)
4450 N ZCNT,ZP3,ZP4
4451"RTN","C0XTKSB",82,0)
4452 ; -- find the number of nodes to insert
4453"RTN","C0XTKSB",83,0)
4454 S ZCNT=$O(ZBFDA(172.101,""),-1)
4455"RTN","C0XTKSB",84,0)
4456 I ZCNT="" D Q ;
4457"RTN","C0XTKSB",85,0)
4458 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
4459"RTN","C0XTKSB",86,0)
4460 . B
4461"RTN","C0XTKSB",87,0)
4462 ; -- lock the zero node and reserve a block of iens to insert
4463"RTN","C0XTKSB",88,0)
4464 W !,"LOCKING ZERO NODE"
4465"RTN","C0XTKSB",89,0)
4466 LOCK +^C0X(101,0)
4467"RTN","C0XTKSB",90,0)
4468 S ZP3=$P(^C0X(101,0),U,3)
4469"RTN","C0XTKSB",91,0)
4470 S ZP4=$P(^C0X(101,0),U,4)
4471"RTN","C0XTKSB",92,0)
4472 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
4473"RTN","C0XTKSB",93,0)
4474 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
4475"RTN","C0XTKSB",94,0)
4476 LOCK -^C0X(101,0)
4477"RTN","C0XTKSB",95,0)
4478 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
4479"RTN","C0XTKSB",96,0)
4480 S ZBASE=ZP3 ; the last ien in the file
4481"RTN","C0XTKSB",97,0)
4482 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
4483"RTN","C0XTKSB",98,0)
4484 W !,$ZDATE($$H,"YEAR-MM-DD:24:60:SS")
4485"RTN","C0XTKSB",99,0)
4486 S ZI=""
4487"RTN","C0XTKSB",100,0)
4488 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
4489"RTN","C0XTKSB",101,0)
4490 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
4491"RTN","C0XTKSB",102,0)
4492 . I ZN="" D BLKERR Q ;
4493"RTN","C0XTKSB",103,0)
4494 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
4495"RTN","C0XTKSB",104,0)
4496 . I ZG="" D BLKERR Q ;
4497"RTN","C0XTKSB",105,0)
4498 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
4499"RTN","C0XTKSB",106,0)
4500 . I ZS="" D BLKERR Q ;
4501"RTN","C0XTKSB",107,0)
4502 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
4503"RTN","C0XTKSB",108,0)
4504 . I ZP="" D BLKERR Q ;
4505"RTN","C0XTKSB",109,0)
4506 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
4507"RTN","C0XTKSB",110,0)
4508 . I ZO="" D BLKERR Q ;
4509"RTN","C0XTKSB",111,0)
4510 . S ZIEN=ZI+ZBASE ; the new ien
4511"RTN","C0XTKSB",112,0)
4512 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
4513"RTN","C0XTKSB",113,0)
4514 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
4515"RTN","C0XTKSB",114,0)
4516 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
4517"RTN","C0XTKSB",115,0)
4518 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
4519"RTN","C0XTKSB",116,0)
4520 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
4521"RTN","C0XTKSB",117,0)
4522 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
4523"RTN","C0XTKSB",118,0)
4524 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
4525"RTN","C0XTKSB",119,0)
4526 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
4527"RTN","C0XTKSB",120,0)
4528 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
4529"RTN","C0XTKSB",121,0)
4530 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
4531"RTN","C0XTKSB",122,0)
4532 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
4533"RTN","C0XTKSB",123,0)
4534 Q
4535"RTN","C0XTKSB",124,0)
4536 ;
4537"RTN","C0XTKSB",125,0)
4538BLKERR ;
4539"RTN","C0XTKSB",126,0)
4540 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
4541"RTN","C0XTKSB",127,0)
4542 B
4543"RTN","C0XTKSB",128,0)
4544 Q
4545"RTN","C0XTKSB",129,0)
4546 ;
4547"RTN","C0XTKSB",130,0)
4548H()
4549"RTN","C0XTKSB",131,0)
4550 quit:$length($ztrnlnm("GTMXC_posix"))&$length($text(zhorolog^%POSIX)) $$zhorolog^%POSIX quit $horolog
4551"RTN","C0XUTIL")
45520^5^B11676522
4553"RTN","C0XUTIL",1,0)
4554C0XUTIL ; GPL - Fileman Triples utilities ;11/07/11 17:05
4555"RTN","C0XUTIL",2,0)
4556 ;;0.1;C0X;nopatch;noreleasedate;Build 10
4557"RTN","C0XUTIL",3,0)
4558 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4559"RTN","C0XUTIL",4,0)
4560 ;General Public License See attached copy of the License.
4561"RTN","C0XUTIL",5,0)
4562 ;
4563"RTN","C0XUTIL",6,0)
4564 ;This program is free software; you can redistribute it and/or modify
4565"RTN","C0XUTIL",7,0)
4566 ;it under the terms of the GNU General Public License as published by
4567"RTN","C0XUTIL",8,0)
4568 ;the Free Software Foundation; either version 2 of the License, or
4569"RTN","C0XUTIL",9,0)
4570 ;(at your option) any later version.
4571"RTN","C0XUTIL",10,0)
4572 ;
4573"RTN","C0XUTIL",11,0)
4574 ;This program is distributed in the hope that it will be useful,
4575"RTN","C0XUTIL",12,0)
4576 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4577"RTN","C0XUTIL",13,0)
4578 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4579"RTN","C0XUTIL",14,0)
4580 ;GNU General Public License for more details.
4581"RTN","C0XUTIL",15,0)
4582 ;
4583"RTN","C0XUTIL",16,0)
4584 ;You should have received a copy of the GNU General Public License along
4585"RTN","C0XUTIL",17,0)
4586 ;with this program; if not, write to the Free Software Foundation, Inc.,
4587"RTN","C0XUTIL",18,0)
4588 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4589"RTN","C0XUTIL",19,0)
4590 ;
4591"RTN","C0XUTIL",20,0)
4592 Q
4593"RTN","C0XUTIL",21,0)
4594 ;
4595"RTN","C0XUTIL",22,0)
4596NSP(ZX) ; OUTPUT TRANSFORM EXTRINSIC
4597"RTN","C0XUTIL",23,0)
4598 ;
4599"RTN","C0XUTIL",24,0)
4600 N ZR
4601"RTN","C0XUTIL",25,0)
4602 ; I WOULD REALLY LIKE TO NOT HAVE THE FILE NUMBER HARD CODED HERE
4603"RTN","C0XUTIL",26,0)
4604 ; ANYONE KNOW HOW I COULD DO THAT? :) GPL
4605"RTN","C0XUTIL",27,0)
4606 S ZR=$$GET1^DIQ(172.201,ZX_",",.01)
4607"RTN","C0XUTIL",28,0)
4608 I '$D(C0XNSP) S C0XNSP=1 ; DEFAULT ON
4609"RTN","C0XUTIL",29,0)
4610 I C0XNSP=0 Q ZR ; SWITCHED OFF
4611"RTN","C0XUTIL",30,0)
4612 I '$D(C0XVOC) D VOCINIT ; INITIALIZE THE VOCABULARIES
4613"RTN","C0XUTIL",31,0)
4614 N ZI,ZJ,ZK S ZI=""
4615"RTN","C0XUTIL",32,0)
4616 N DONE S DONE=0
4617"RTN","C0XUTIL",33,0)
4618 F S ZI=$O(C0XVOC(ZI)) Q:(DONE=1)!(ZI="") D ;
4619"RTN","C0XUTIL",34,0)
4620 . ;W !,ZI
4621"RTN","C0XUTIL",35,0)
4622 . S ZJ=C0XVOC(ZI)
4623"RTN","C0XUTIL",36,0)
4624 . S ZK=$P(ZR,ZJ,2)
4625"RTN","C0XUTIL",37,0)
4626 . ;W !,"ZK=",ZK
4627"RTN","C0XUTIL",38,0)
4628 . I ZK'="" D ; BINGO
4629"RTN","C0XUTIL",39,0)
4630 . . S ZR=ZI_":"_ZK
4631"RTN","C0XUTIL",40,0)
4632 . . S DONE=1
4633"RTN","C0XUTIL",41,0)
4634 Q ZR
4635"RTN","C0XUTIL",42,0)
4636 ;
4637"RTN","C0XUTIL",43,0)
4638VOCINIT ; INITIALIZE VOCABULARIES
4639"RTN","C0XUTIL",44,0)
4640 S C0XVOC("dcterms")="http://purl.org/dc/terms/"
4641"RTN","C0XUTIL",45,0)
4642 S C0XVOC("rdf")="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4643"RTN","C0XUTIL",46,0)
4644 S C0XVOC("sp")="http://smartplatforms.org/terms#"
4645"RTN","C0XUTIL",47,0)
4646 S C0XVOC("qds")="http://cms.gov/pqri/qds/"
4647"RTN","C0XUTIL",48,0)
4648 S C0XVOC("smart")="http://sandbox-api.smartplatforms.org/records/"
4649"RTN","C0XUTIL",49,0)
4650 S C0XVOC("snomed")="http://purl.bioontology.org/ontology/SNOMEDCT/"
4651"RTN","C0XUTIL",50,0)
4652 S C0XVOC("icd9")="http://purl.bioontology.org/ontology/ICD9/"
4653"RTN","C0XUTIL",51,0)
4654 S C0XVOC("rxnorm")="http://purl.bioontology.org/ontology/RXNORM/"
4655"RTN","C0XUTIL",52,0)
4656 S C0XVOC("loinc")="http://purl.bioontology.org/ontology/LNC/"
4657"RTN","C0XUTIL",53,0)
4658 S C0XVOC("file")="/home/glilly/fmts/trunk/samples/"
4659"RTN","C0XUTIL",54,0)
4660 S C0XVOC("foaf")="http://xmlns.com/foaf/0.1/"
4661"RTN","C0XUTIL",55,0)
4662 S C0XVOC("skos")="http://www.w3.org/2004/02/skos/core#"
4663"RTN","C0XUTIL",56,0)
4664 S C0XVOC("gpl")="http://georgetriples.org/"
4665"RTN","C0XUTIL",57,0)
4666 S C0XVOC("cg")="http://datasets.caregraf.org/"
4667"RTN","C0XUTIL",58,0)
4668 S C0XVOC("mv")="http://metavista.name/foundation#"
4669"RTN","C0XUTIL",59,0)
4670 S C0XVOC("rdfs")="http://www.w3.org/2000/01/rdf-schema#"
4671"RTN","C0XUTIL",60,0)
4672 S C0XVOC("vistaSmart")="https://smart2.vistaewd.net/vista/smart/records/"
4673"RTN","C0XUTIL",61,0)
4674 S C0XVOC("vmu")="http://vista.org/mu/"
4675"RTN","C0XUTIL",62,0)
4676 S C0XVOC("vq")="http://vista.org/quality/"
4677"RTN","C0XUTIL",63,0)
4678 S C0XVOC("nodeID")="iDPsDPss"
4679"RTN","C0XUTIL",64,0)
4680 S C0XVOC("fmts")="http://glilly.net/fmts#"
4681"RTN","C0XUTIL",65,0)
4682 S C0XVOC("oro")="http://oro.com/vista/sage" ;change to get URL from system
4683"RTN","C0XUTIL",66,0)
4684 S C0XVOC("sage")="http://oro.com/sage/schema#"
4685"RTN","C0XUTIL",67,0)
4686 S C0XVOC("v")="http://www.w3.org/2006/vcard/ns#"
4687"RTN","C0XUTIL",68,0)
4688 Q
4689"RTN","C0XUTIL",69,0)
4690 ;
4691"RTN","C0XUTIL",70,0)
4692EXT(C0XIN) ; EXTRINSIC WHICH EXPANDS NAMESPACES
4693"RTN","C0XUTIL",71,0)
4694 ; SO skos:xxx would return http://www.w3.org/2004/02/skos/core#xxx
4695"RTN","C0XUTIL",72,0)
4696 N C0XPRE
4697"RTN","C0XUTIL",73,0)
4698 S C0XPRE=C0XIN
4699"RTN","C0XUTIL",74,0)
4700 I '$D(C0XVOC) D VOCINIT ; INITIALIZE NAME SPACE TABLE
4701"RTN","C0XUTIL",75,0)
4702 I C0XPRE[":" D ; expand using vocabulary
4703"RTN","C0XUTIL",76,0)
4704 . N ZB,ZA
4705"RTN","C0XUTIL",77,0)
4706 . S ZB=$P(C0XPRE,":",1)
4707"RTN","C0XUTIL",78,0)
4708 . S ZA=$P(C0XPRE,":",2)
4709"RTN","C0XUTIL",79,0)
4710 . I $G(C0XVOC(ZB))'="" D ;
4711"RTN","C0XUTIL",80,0)
4712 . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
4713"RTN","C0XUTIL",81,0)
4714 Q C0XPRE
4715"RTN","C0XUTIL",82,0)
4716 ;
4717"SEC","^DIC",172.101,172.101,0,"AUDIT")
4718@
4719"SEC","^DIC",172.101,172.101,0,"DD")
4720@
4721"SEC","^DIC",172.101,172.101,0,"DEL")
4722@
4723"SEC","^DIC",172.101,172.101,0,"LAYGO")
4724@
4725"SEC","^DIC",172.101,172.101,0,"RD")
4726@
4727"SEC","^DIC",172.101,172.101,0,"WR")
4728@
4729"SEC","^DIC",172.201,172.201,0,"AUDIT")
4730@
4731"SEC","^DIC",172.201,172.201,0,"DD")
4732@
4733"SEC","^DIC",172.201,172.201,0,"DEL")
4734@
4735"SEC","^DIC",172.201,172.201,0,"LAYGO")
4736@
4737"SEC","^DIC",172.201,172.201,0,"RD")
4738@
4739"SEC","^DIC",172.201,172.201,0,"WR")
4740@
4741"VER")
47428.0^22.0
4743"^DD",172.101,172.101,0)
4744FIELD^^.05^6
4745"^DD",172.101,172.101,0,"DDA")
4746N
4747"^DD",172.101,172.101,0,"DT")
47483111013
4749"^DD",172.101,172.101,0,"ID",.02)
4750S %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
4751"^DD",172.101,172.101,0,"ID",.03)
4752S %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
4753"^DD",172.101,172.101,0,"ID",.04)
4754S %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
4755"^DD",172.101,172.101,0,"ID",.05)
4756S %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
4757"^DD",172.101,172.101,0,"IX","B",172.101,.01)
4758
4759"^DD",172.101,172.101,0,"NM","C0X TRIPLE")
4760
4761"^DD",172.101,172.101,.01,0)
4762NODEID^RF^^0;1^K:$L(X)>30!($L(X)<3)!'(X'?1P.E) X
4763"^DD",172.101,172.101,.01,.1)
4764TRIPLE NODE ID
4765"^DD",172.101,172.101,.01,1,0)
4766^.1
4767"^DD",172.101,172.101,.01,1,1,0)
4768172.101^B
4769"^DD",172.101,172.101,.01,1,1,1)
4770S ^C0X(101,"B",$E(X,1,30),DA)=""
4771"^DD",172.101,172.101,.01,1,1,2)
4772K ^C0X(101,"B",$E(X,1,30),DA)
4773"^DD",172.101,172.101,.01,3)
4774Answer must be 3-30 characters in length
4775"^DD",172.101,172.101,.01,"DT")
47763111013
4777"^DD",172.101,172.101,.02,0)
4778GRAPH^P172.201O^C0X(201,^0;2^Q
4779"^DD",172.101,172.101,.02,.1)
4780TRIPLE GRAPH
4781"^DD",172.101,172.101,.02,2)
4782S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4783"^DD",172.101,172.101,.02,2.1)
4784S Y=$$NSP^C0XUTIL(Y)
4785"^DD",172.101,172.101,.02,3)
4786Answer must be 3-240 characters in length
4787"^DD",172.101,172.101,.02,"DT")
47883111207
4789"^DD",172.101,172.101,.03,0)
4790SUBJECT^P172.201O^C0X(201,^0;3^Q
4791"^DD",172.101,172.101,.03,.1)
4792TRIPLE SUBJECT
4793"^DD",172.101,172.101,.03,2)
4794S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4795"^DD",172.101,172.101,.03,2.1)
4796S Y=$$NSP^C0XUTIL(Y)
4797"^DD",172.101,172.101,.03,"DT")
47983111207
4799"^DD",172.101,172.101,.04,0)
4800PREDICATE^P172.201O^C0X(201,^0;4^Q
4801"^DD",172.101,172.101,.04,.1)
4802TRIPLE PREDICATE
4803"^DD",172.101,172.101,.04,2)
4804S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4805"^DD",172.101,172.101,.04,2.1)
4806S Y=$$NSP^C0XUTIL(Y)
4807"^DD",172.101,172.101,.04,"DT")
48083111207
4809"^DD",172.101,172.101,.05,0)
4810OBJECT^P172.201O^C0X(201,^0;5^Q
4811"^DD",172.101,172.101,.05,.1)
4812TRIPLE OBJECT
4813"^DD",172.101,172.101,.05,2)
4814S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4815"^DD",172.101,172.101,.05,2.1)
4816S Y=$$NSP^C0XUTIL(Y)
4817"^DD",172.101,172.101,.05,"DT")
48183111207
4819"^DD",172.101,172.101,1,0)
4820EVENTS^172.1011V^^1;0
4821"^DD",172.101,172.1011,0)
4822EVENTS SUB-FIELD^^.01^1
4823"^DD",172.101,172.1011,0,"DT")
48243110510
4825"^DD",172.101,172.1011,0,"IX","B",172.1011,.01)
4826
4827"^DD",172.101,172.1011,0,"NM","EVENTS")
4828
4829"^DD",172.101,172.1011,0,"UP")
4830172.101
4831"^DD",172.101,172.1011,.01,0)
4832EVENTS^V^^0;1^
4833"^DD",172.101,172.1011,.01,.1)
4834PATIENT CLINICAL EVENTS
4835"^DD",172.101,172.1011,.01,1,0)
4836^.1
4837"^DD",172.101,172.1011,.01,1,1,0)
4838172.1011^B
4839"^DD",172.101,172.1011,.01,1,1,1)
4840S ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)=""
4841"^DD",172.101,172.1011,.01,1,1,2)
4842K ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)
4843"^DD",172.101,172.1011,.01,1,1,3)
4844Required for Variable Pointer
4845"^DD",172.101,172.1011,.01,"DT")
48463110510
4847"^DD",172.101,172.1011,.01,"V",0)
4848^.12P^^3
4849"^DD",172.101,172.1011,.01,"V",1,0)
485055^MEDICATIONS^1^M^n^y
4851"^DD",172.101,172.1011,.01,"V",1,1)
4852
4853"^DD",172.101,172.1011,.01,"V",1,2)
4854
4855"^DD",172.101,172.1011,.01,"V",2,0)
48569000011^PATIENT PROBLEM^2^P^n^y
4857"^DD",172.101,172.1011,.01,"V",2,1)
4858
4859"^DD",172.101,172.1011,.01,"V",2,2)
4860
4861"^DD",172.101,172.1011,.01,"V",3,0)
486269^PATIENT LAB ORDER^3^L^n^y
4863"^DD",172.201,172.201,0)
4864FIELD^^1^2
4865"^DD",172.201,172.201,0,"DDA")
4866N
4867"^DD",172.201,172.201,0,"DT")
48683111013
4869"^DD",172.201,172.201,0,"NM","C0X STRING")
4870
4871"^DD",172.201,172.201,0,"PT",172.101,.02)
4872
4873"^DD",172.201,172.201,0,"PT",172.101,.03)
4874
4875"^DD",172.201,172.201,0,"PT",172.101,.04)
4876
4877"^DD",172.201,172.201,0,"PT",172.101,.05)
4878
4879"^DD",172.201,172.201,.01,0)
4880STRING^RF^^0;1^K:$L(X)>240!($L(X)<1)!'(X=X) X
4881"^DD",172.201,172.201,.01,.1)
4882TRIPLE STRING
4883"^DD",172.201,172.201,.01,1,0)
4884^.1^^0
4885"^DD",172.201,172.201,.01,3)
4886Answer must be 1-240 characters in length
4887"^DD",172.201,172.201,.01,"DT")
48883111028
4889"^DD",172.201,172.201,1,0)
4890TEXT^172.2011^^1;0
4891"^DD",172.201,172.2011,0)
4892TEXT SUB-FIELD^^.01^1
4893"^DD",172.201,172.2011,0,"DT")
48943111013
4895"^DD",172.201,172.2011,0,"NM","TEXT")
4896
4897"^DD",172.201,172.2011,0,"UP")
4898172.201
4899"^DD",172.201,172.2011,.01,0)
4900TEXT^Wx^^0;1
4901"^DD",172.201,172.2011,.01,.1)
4902LONGER TEXT
4903"^DD",172.201,172.2011,.01,"DT")
49043111013
4905"^DIC",172.101,172.101,0)
4906C0X TRIPLE^172.101
4907"^DIC",172.101,172.101,0,"GL")
4908^C0X(101,
4909"^DIC",172.101,"B","C0X TRIPLE",172.101)
4910
4911"^DIC",172.201,172.201,0)
4912C0X STRING^172.201
4913"^DIC",172.201,172.201,0,"GL")
4914^C0X(201,
4915"^DIC",172.201,"B","C0X STRING",172.201)
4916
4917**END**
4918**END**
Note: See TracBrowser for help on using the repository browser.