source: smart/trunk/kids/C0X_1_0_0_T10.KID@ 1527

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

compatible with smart container

File size: 130.7 KB
Line 
1KIDS Distribution saved on Sep 07, 2012@20:20:44
2compatible with smart container
3**KIDS**:C0X*1.0*0^
4
5**INSTALL NAME**
6C0X*1.0*0
7"BLD",7921,0)
8C0X*1.0*0^^0^3120907^n
9"BLD",7921,4,0)
10^9.64PA^172.201^2
11"BLD",7921,4,172.101,0)
12172.101
13"BLD",7921,4,172.101,222)
14y^y^f^^^^n
15"BLD",7921,4,172.201,0)
16172.201
17"BLD",7921,4,172.201,222)
18y^y^f^^^^n
19"BLD",7921,4,"B",172.101,172.101)
20
21"BLD",7921,4,"B",172.201,172.201)
22
23"BLD",7921,6.3)
249
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^B11155926
65"BLD",7921,"KRN",9.8,"NM",6,0)
66C0XTKSB^^0^B17580555
67"BLD",7921,"KRN",9.8,"NM",7,0)
68C0XRDF^^0^B4392
69"BLD",7921,"KRN",9.8,"NM",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 9
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 9
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 Q ZIEN
2713"RTN","C0XGET1",413,0)
2714 ;
2715"RTN","C0XGET1",414,0)
2716IENOFA(ZOUTARY,INARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
2717"RTN","C0XGET1",415,0)
2718 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
2719"RTN","C0XGET1",416,0)
2720 I '$D(FARY) D ;
2721"RTN","C0XGET1",417,0)
2722 . D INITFARY^C0XF2N("C0XFARY")
2723"RTN","C0XGET1",418,0)
2724 . S FARY="C0XFARY"
2725"RTN","C0XGET1",419,0)
2726 K ZOUTARY ; START WITH CLEAN RESULTS
2727"RTN","C0XGET1",420,0)
2728 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
2729"RTN","C0XGET1",421,0)
2730 I '$D(C0XVOC) D VOCINIT^C0XUTIL
2731"RTN","C0XGET1",422,0)
2732 N ZINARY
2733"RTN","C0XGET1",423,0)
2734 N ZI S ZI=""
2735"RTN","C0XGET1",424,0)
2736 F S ZI=$O(INARY(ZI)) Q:ZI="" D ;
2737"RTN","C0XGET1",425,0)
2738 . N ZK
2739"RTN","C0XGET1",426,0)
2740 . S ZK=$O(INARY(ZI,""))
2741"RTN","C0XGET1",427,0)
2742 . S ZINARY($$EXT^C0XUTIL(ZI),$$EXT^C0XUTIL(ZK))=""
2743"RTN","C0XGET1",428,0)
2744 N ZV,ZIEN
2745"RTN","C0XGET1",429,0)
2746 N ZCNT S ZCNT=0
2747"RTN","C0XGET1",430,0)
2748 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; LOOK FOR MISSING STRINGS
2749"RTN","C0XGET1",431,0)
2750 . S ZV=$O(ZINARY(ZI,""))
2751"RTN","C0XGET1",432,0)
2752 . I ZV["^" S ZV=$TR(ZV,"^","|")
2753"RTN","C0XGET1",433,0)
2754 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOW GET ALL IENS
2755"RTN","C0XGET1",434,0)
2756 . S ZV=$O(ZINARY(ZI,""))
2757"RTN","C0XGET1",435,0)
2758 . I ZV["^" S ZV=$TR(ZV,"^","|")
2759"RTN","C0XGET1",436,0)
2760 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
2761"RTN","C0XGET1",437,0)
2762 . I ZIEN="" S ZOUTARY("IEN",ZI)=""
2763"RTN","C0XGET1",438,0)
2764 . E S ZOUTARY("IEN",ZI,ZIEN)=""
2765"RTN","C0XGET1",439,0)
2766 Q
2767"RTN","C0XGET1",440,0)
2768 ;
2769"RTN","C0XGET1",441,0)
2770output(zwhat,zfname,zdir) ; function to write an array to a host file
2771"RTN","C0XGET1",442,0)
2772 ; if zdir is ommitted, will output to the CCR directory
2773"RTN","C0XGET1",443,0)
2774 ; ^TMP("C0CCCR","ODIR")
2775"RTN","C0XGET1",444,0)
2776 ; if fname is ommitted, will output yyyy-mm-dd-hh-mm-ss-C0XOUT.out
2777"RTN","C0XGET1",445,0)
2778 ; zwhat is passed by name
2779"RTN","C0XGET1",446,0)
2780 ;
2781"RTN","C0XGET1",447,0)
2782 i '$d(zdir) s zdir=$G(^TMP("C0CCCR","ODIR"))
2783"RTN","C0XGET1",448,0)
2784 i '$d(zfname) d ;
2785"RTN","C0XGET1",449,0)
2786 . s zfname=$$FMTE^XLFDT($$NOW^XLFDT,7)
2787"RTN","C0XGET1",450,0)
2788 . s zfname=$tr(zfname,"/","-")
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=zfname_".out"
2795"RTN","C0XGET1",454,0)
2796 i $e(zwhat,1,1)'="^" d ; not a global
2797"RTN","C0XGET1",455,0)
2798 . k ^TMP("C0XOUT",$J)
2799"RTN","C0XGET1",456,0)
2800 . m ^TMP("C0XOUT",$J)=@zwhat
2801"RTN","C0XGET1",457,0)
2802 . s zwhat=$na(^TMP("C0XOUT",$J,1))
2803"RTN","C0XGET1",458,0)
2804 n zout s zout=""
2805"RTN","C0XGET1",459,0)
2806 s zout=$$OUTPUT^C0CXPATH(zwhat,zfname,zdir)
2807"RTN","C0XGET1",460,0)
2808 K ^TMP("C0XOUT",$J)
2809"RTN","C0XGET1",461,0)
2810 Q zout
2811"RTN","C0XGET1",462,0)
2812 ;
2813"RTN","C0XGET1",463,0)
2814tagText(ztag) ; extrinsic which returns the location of the text
2815"RTN","C0XGET1",464,0)
2816 ; associated with ztag
2817"RTN","C0XGET1",465,0)
2818 n zs,zo
2819"RTN","C0XGET1",466,0)
2820 s zs=$$subject("fmts:fileTag",ztag)
2821"RTN","C0XGET1",467,0)
2822 i zs="" d q "" ;
2823"RTN","C0XGET1",468,0)
2824 . w !,"error, tag is either missing or there are more than one ",ztag
2825"RTN","C0XGET1",469,0)
2826 s zo=$$object(zs,"fmts:fileSource")
2827"RTN","C0XGET1",470,0)
2828 i zo="" d q "" ;
2829"RTN","C0XGET1",471,0)
2830 . w !,"error, tag source not found ",zs
2831"RTN","C0XGET1",472,0)
2832 w !,zo
2833"RTN","C0XGET1",473,0)
2834 q $$WHERETXT^C0XF2N(zo)
2835"RTN","C0XGET1",474,0)
2836 ;
2837"RTN","C0XGET1",475,0)
2838tagRoot(ztag) ; extrinsic which returns the root for graphs and subjects
2839"RTN","C0XGET1",476,0)
2840 ; associated with ztag
2841"RTN","C0XGET1",477,0)
2842 n zs,zo
2843"RTN","C0XGET1",478,0)
2844 s zs=$$subject("fmts:fileTag",ztag)
2845"RTN","C0XGET1",479,0)
2846 i zs="" d q "" ;
2847"RTN","C0XGET1",480,0)
2848 . w !,"error, tag is either missing or there are more than one ",ztag
2849"RTN","C0XGET1",481,0)
2850 s zo=$$object(zs,"fmts:root")
2851"RTN","C0XGET1",482,0)
2852 i zo="" d q "" ;
2853"RTN","C0XGET1",483,0)
2854 . w !,"error, root not found ",zs
2855"RTN","C0XGET1",484,0)
2856 ;w !,zo
2857"RTN","C0XGET1",485,0)
2858 q zo
2859"RTN","C0XGET1",486,0)
2860 ;
2861"RTN","C0XINIT")
28620^4^B21176787
2863"RTN","C0XINIT",1,0)
2864C0XINIT ; GPL - Fileman Triples initialization routine ;10/13/11 17:05
2865"RTN","C0XINIT",2,0)
2866 ;;0.1;C0X;nopatch;noreleasedate;Build 9
2867"RTN","C0XINIT",3,0)
2868 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
2869"RTN","C0XINIT",4,0)
2870 ;General Public License See attached copy of the License.
2871"RTN","C0XINIT",5,0)
2872 ;
2873"RTN","C0XINIT",6,0)
2874 ;This program is free software; you can redistribute it and/or modify
2875"RTN","C0XINIT",7,0)
2876 ;it under the terms of the GNU General Public License as published by
2877"RTN","C0XINIT",8,0)
2878 ;the Free Software Foundation; either version 2 of the License, or
2879"RTN","C0XINIT",9,0)
2880 ;(at your option) any later version.
2881"RTN","C0XINIT",10,0)
2882 ;
2883"RTN","C0XINIT",11,0)
2884 ;This program is distributed in the hope that it will be useful,
2885"RTN","C0XINIT",12,0)
2886 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
2887"RTN","C0XINIT",13,0)
2888 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2889"RTN","C0XINIT",14,0)
2890 ;GNU General Public License for more details.
2891"RTN","C0XINIT",15,0)
2892 ;
2893"RTN","C0XINIT",16,0)
2894 ;You should have received a copy of the GNU General Public License along
2895"RTN","C0XINIT",17,0)
2896 ;with this program; if not, write to the Free Software Foundation, Inc.,
2897"RTN","C0XINIT",18,0)
2898 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2899"RTN","C0XINIT",19,0)
2900 ;
2901"RTN","C0XINIT",20,0)
2902 Q
2903"RTN","C0XINIT",21,0)
2904 ;
2905"RTN","C0XINIT",22,0)
2906CLEAR ; DELETE THE FILESTORE
2907"RTN","C0XINIT",23,0)
2908 K ^C0X(101)
2909"RTN","C0XINIT",24,0)
2910 K ^C0X(201)
2911"RTN","C0XINIT",25,0)
2912 S ^C0X(101,0)="C0X TRIPLE^172.101I^^"
2913"RTN","C0XINIT",26,0)
2914 S ^C0X(201,0)="C0X STRING^172.201I^^"
2915"RTN","C0XINIT",27,0)
2916 Q
2917"RTN","C0XINIT",28,0)
2918 ;
2919"RTN","C0XINIT",29,0)
2920INIT ; INITIALIZE THE TRIPLE STORE - THIS DELETES THE GLOBALS AND
2921"RTN","C0XINIT",30,0)
2922 ; START ALL OVER... USE WITH CAUTION
2923"RTN","C0XINIT",31,0)
2924 ;
2925"RTN","C0XINIT",32,0)
2926 ; -- we should be more sophisticated here.. at least warn the user
2927"RTN","C0XINIT",33,0)
2928 ; -- and give them a chance to cancel
2929"RTN","C0XINIT",34,0)
2930 ;
2931"RTN","C0XINIT",35,0)
2932 D CLEAR ; DELETE THE TRIPLESTORE
2933"RTN","C0XINIT",36,0)
2934 ;
2935"RTN","C0XINIT",37,0)
2936 ; -- we are assuming that FARY is set up properly in C0XF2N
2937"RTN","C0XINIT",38,0)
2938 ; -- with repect to the default directory and the defaut fileman files
2939"RTN","C0XINIT",39,0)
2940 ; -- here's what it is now: "/home/vista/gpl/fmts/trunk/samples/"
2941"RTN","C0XINIT",40,0)
2942 ; -- that means that all the sample files will look like:
2943"RTN","C0XINIT",41,0)
2944 ; --- qds/QDS_0001.rdf
2945"RTN","C0XINIT",42,0)
2946 ; --- smart-rdf-in/small.rdf
2947"RTN","C0XINIT",43,0)
2948 ;
2949"RTN","C0XINIT",44,0)
2950 S FARY="C0XFARY"
2951"RTN","C0XINIT",45,0)
2952 D INITFARY^C0XF2N(FARY)
2953"RTN","C0XINIT",46,0)
2954 D USEFARY^C0XF2N(FARY)
2955"RTN","C0XINIT",47,0)
2956 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/smart-rdf-in/" ;
2957"RTN","C0XINIT",48,0)
2958 D USEFARY^C0XF2N(FARY)
2959"RTN","C0XINIT",49,0)
2960 S SMART(1)="cole-susan.rdf"
2961"RTN","C0XINIT",50,0)
2962 S SMART(2)="jones-cynthia.rdf"
2963"RTN","C0XINIT",51,0)
2964 S SMART(3)="small.rdf"
2965"RTN","C0XINIT",52,0)
2966 S SMART(4)="collins-frank.rdf"
2967"RTN","C0XINIT",53,0)
2968 S SMART(5)="kelly-david.rdf"
2969"RTN","C0XINIT",54,0)
2970 S SMART(6)="smith-maria.rdf"
2971"RTN","C0XINIT",55,0)
2972 S SMART(7)="ford-shirley.rdf"
2973"RTN","C0XINIT",56,0)
2974 S SMART(8)="morgan-jason.rdf"
2975"RTN","C0XINIT",57,0)
2976 S SMART(9)="west-lisa.rdf"
2977"RTN","C0XINIT",58,0)
2978 S SMART(10)="gracia-paul.rdf"
2979"RTN","C0XINIT",59,0)
2980 S SMART(11)="reed-richard.rdf"
2981"RTN","C0XINIT",60,0)
2982 S SMART(12)="west-sandra.rdf"
2983"RTN","C0XINIT",61,0)
2984 S SMART(13)="jackson-jessica.rdf"
2985"RTN","C0XINIT",62,0)
2986 S SMART(14)="small-allergies.rdf"
2987"RTN","C0XINIT",63,0)
2988 S SMART(15)="white-patricia.rdf"
2989"RTN","C0XINIT",64,0)
2990 N ZI S ZI=""
2991"RTN","C0XINIT",65,0)
2992 F S ZI=$O(SMART(ZI)) Q:ZI="" D ; for each smart file
2993"RTN","C0XINIT",66,0)
2994 . D IMPORT^C0XF2N(SMART(ZI),C0XDIR,,FARY) ; import to the triplestore
2995"RTN","C0XINIT",67,0)
2996 S FARY="C0XFARY"
2997"RTN","C0XINIT",68,0)
2998 S C0XFARY("C0XDIR")="/home/vista/gpl/fmts/trunk/samples/qds/"
2999"RTN","C0XINIT",69,0)
3000 D USEFARY^C0XF2N(FARY)
3001"RTN","C0XINIT",70,0)
3002 D IMPORT^C0XF2N("QDS_0001.rdf",C0XDIR,,FARY)
3003"RTN","C0XINIT",71,0)
3004 D IMPORT^C0XF2N("QDS_0028b.rdf",C0XDIR,,FARY)
3005"RTN","C0XINIT",72,0)
3006 D IMPORT^C0XF2N("QDS_0052.rdf",C0XDIR,,FARY)
3007"RTN","C0XINIT",73,0)
3008 D IMPORT^C0XF2N("QDS_0073.rdf",C0XDIR,,FARY)
3009"RTN","C0XINIT",74,0)
3010 D IMPORT^C0XF2N("QDS_0385.rdf",C0XDIR,,FARY)
3011"RTN","C0XINIT",75,0)
3012 D IMPORT^C0XF2N("QDS_0002.rdf",C0XDIR,,FARY)
3013"RTN","C0XINIT",76,0)
3014 D IMPORT^C0XF2N("QDS_0031.rdf",C0XDIR,,FARY)
3015"RTN","C0XINIT",77,0)
3016 D IMPORT^C0XF2N("QDS_0055.rdf",C0XDIR,,FARY)
3017"RTN","C0XINIT",78,0)
3018 D IMPORT^C0XF2N("QDS_0074.rdf",C0XDIR,,FARY)
3019"RTN","C0XINIT",79,0)
3020 D IMPORT^C0XF2N("QDS_0387.rdf",C0XDIR,,FARY)
3021"RTN","C0XINIT",80,0)
3022 D IMPORT^C0XF2N("QDS_0004.rdf",C0XDIR,,FARY)
3023"RTN","C0XINIT",81,0)
3024 D IMPORT^C0XF2N("QDS_0032.rdf",C0XDIR,,FARY)
3025"RTN","C0XINIT",82,0)
3026 D IMPORT^C0XF2N("QDS_0056.rdf",C0XDIR,,FARY)
3027"RTN","C0XINIT",83,0)
3028 D IMPORT^C0XF2N("QDS_0075.rdf",C0XDIR,,FARY)
3029"RTN","C0XINIT",84,0)
3030 D IMPORT^C0XF2N("QDS_0389.rdf",C0XDIR,,FARY)
3031"RTN","C0XINIT",85,0)
3032 D IMPORT^C0XF2N("QDS_0012.rdf",C0XDIR,,FARY)
3033"RTN","C0XINIT",86,0)
3034 D IMPORT^C0XF2N("QDS_0033.rdf",C0XDIR,,FARY)
3035"RTN","C0XINIT",87,0)
3036 D IMPORT^C0XF2N("QDS_0059.rdf",C0XDIR,,FARY)
3037"RTN","C0XINIT",88,0)
3038 D IMPORT^C0XF2N("QDS_0081.rdf",C0XDIR,,FARY)
3039"RTN","C0XINIT",89,0)
3040 D IMPORT^C0XF2N("QDS_0421.rdf",C0XDIR,,FARY)
3041"RTN","C0XINIT",90,0)
3042 D IMPORT^C0XF2N("QDS_0013.rdf",C0XDIR,,FARY)
3043"RTN","C0XINIT",91,0)
3044 D IMPORT^C0XF2N("QDS_0034.rdf",C0XDIR,,FARY)
3045"RTN","C0XINIT",92,0)
3046 D IMPORT^C0XF2N("QDS_0061.rdf",C0XDIR,,FARY)
3047"RTN","C0XINIT",93,0)
3048 D IMPORT^C0XF2N("QDS_0083.rdf",C0XDIR,,FARY)
3049"RTN","C0XINIT",94,0)
3050 D IMPORT^C0XF2N("QDS_0575.rdf",C0XDIR,,FARY)
3051"RTN","C0XINIT",95,0)
3052 D IMPORT^C0XF2N("QDS_0014.rdf",C0XDIR,,FARY)
3053"RTN","C0XINIT",96,0)
3054 D IMPORT^C0XF2N("QDS_0036.rdf",C0XDIR,,FARY)
3055"RTN","C0XINIT",97,0)
3056 D IMPORT^C0XF2N("QDS_0062.rdf",C0XDIR,,FARY)
3057"RTN","C0XINIT",98,0)
3058 D IMPORT^C0XF2N("QDS_0084.rdf",C0XDIR,,FARY)
3059"RTN","C0XINIT",99,0)
3060 D IMPORT^C0XF2N("QDS_0018.rdf",C0XDIR,,FARY)
3061"RTN","C0XINIT",100,0)
3062 D IMPORT^C0XF2N("QDS_0038.rdf",C0XDIR,,FARY)
3063"RTN","C0XINIT",101,0)
3064 D IMPORT^C0XF2N("QDS_0064.rdf",C0XDIR,,FARY)
3065"RTN","C0XINIT",102,0)
3066 D IMPORT^C0XF2N("QDS_0086.rdf",C0XDIR,,FARY)
3067"RTN","C0XINIT",103,0)
3068 D IMPORT^C0XF2N("QDS_0024.rdf",C0XDIR,,FARY)
3069"RTN","C0XINIT",104,0)
3070 D IMPORT^C0XF2N("QDS_0041.rdf",C0XDIR,,FARY)
3071"RTN","C0XINIT",105,0)
3072 D IMPORT^C0XF2N("QDS_0067.rdf",C0XDIR,,FARY)
3073"RTN","C0XINIT",106,0)
3074 D IMPORT^C0XF2N("QDS_0088.rdf",C0XDIR,,FARY)
3075"RTN","C0XINIT",107,0)
3076 D IMPORT^C0XF2N("QDS_0027.rdf",C0XDIR,,FARY)
3077"RTN","C0XINIT",108,0)
3078 D IMPORT^C0XF2N("QDS_0043.rdf",C0XDIR,,FARY)
3079"RTN","C0XINIT",109,0)
3080 D IMPORT^C0XF2N("QDS_0068.rdf",C0XDIR,,FARY)
3081"RTN","C0XINIT",110,0)
3082 D IMPORT^C0XF2N("QDS_0089.rdf",C0XDIR,,FARY)
3083"RTN","C0XINIT",111,0)
3084 D IMPORT^C0XF2N("QDS_0028a.rdf",C0XDIR,,FARY)
3085"RTN","C0XINIT",112,0)
3086 D IMPORT^C0XF2N("QDS_0047.rdf",C0XDIR,,FARY)
3087"RTN","C0XINIT",113,0)
3088 D IMPORT^C0XF2N("QDS_0070.rdf",C0XDIR,,FARY)
3089"RTN","C0XINIT",114,0)
3090 D IMPORT^C0XF2N("QDS_0105.rdf",C0XDIR,,FARY)
3091"RTN","C0XINIT",115,0)
3092 ;D IMPORT^C0XF2N("qds.rdf",C0XDIR,,FARY)
3093"RTN","C0XINIT",116,0)
3094 Q
3095"RTN","C0XINIT",117,0)
3096 ;
3097"RTN","C0XMAIN")
30980^1^B115393527
3099"RTN","C0XMAIN",1,0)
3100C0XMAIN ; GPL - Fileman Triples entry point routine ;10/13/11 17:05
3101"RTN","C0XMAIN",2,0)
3102 ;;0.1;C0X;nopatch;noreleasedate;Build 9
3103"RTN","C0XMAIN",3,0)
3104 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
3105"RTN","C0XMAIN",4,0)
3106 ;General Public License See attached copy of the License.
3107"RTN","C0XMAIN",5,0)
3108 ;
3109"RTN","C0XMAIN",6,0)
3110 ;This program is free software; you can redistribute it and/or modify
3111"RTN","C0XMAIN",7,0)
3112 ;it under the terms of the GNU General Public License as published by
3113"RTN","C0XMAIN",8,0)
3114 ;the Free Software Foundation; either version 2 of the License, or
3115"RTN","C0XMAIN",9,0)
3116 ;(at your option) any later version.
3117"RTN","C0XMAIN",10,0)
3118 ;
3119"RTN","C0XMAIN",11,0)
3120 ;This program is distributed in the hope that it will be useful,
3121"RTN","C0XMAIN",12,0)
3122 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3123"RTN","C0XMAIN",13,0)
3124 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3125"RTN","C0XMAIN",14,0)
3126 ;GNU General Public License for more details.
3127"RTN","C0XMAIN",15,0)
3128 ;
3129"RTN","C0XMAIN",16,0)
3130 ;You should have received a copy of the GNU General Public License along
3131"RTN","C0XMAIN",17,0)
3132 ;with this program; if not, write to the Free Software Foundation, Inc.,
3133"RTN","C0XMAIN",18,0)
3134 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3135"RTN","C0XMAIN",19,0)
3136 ;
3137"RTN","C0XMAIN",20,0)
3138 Q
3139"RTN","C0XMAIN",21,0)
3140 ;
3141"RTN","C0XMAIN",22,0)
3142INITFARY(ZFARY) ; INITIALIZE FILE NUMBERS AND OTHER USEFUL THINGS
3143"RTN","C0XMAIN",23,0)
3144 ; FOR THE DEFAULT TRIPLE STORE. USE OTHER VALUES FOR SUPPORTING ADDITIONAL
3145"RTN","C0XMAIN",24,0)
3146 ; TRIPLE STORES
3147"RTN","C0XMAIN",25,0)
3148 S @ZFARY@("C0XTFN")=172.101 ; TRIPLES FILE NUMBER
3149"RTN","C0XMAIN",26,0)
3150 S @ZFARY@("C0XSFN")=172.201 ; TRIPLES STRINGS FILE NUMBER
3151"RTN","C0XMAIN",27,0)
3152 S @ZFARY@("C0XTN")=$NA(^C0X(101)) ; TRIPLES GLOBAL NAME
3153"RTN","C0XMAIN",28,0)
3154 S @ZFARY@("C0XSN")=$NA(^C0X(201)) ; STRING FILE GLOBAL NAME
3155"RTN","C0XMAIN",29,0)
3156 ;S @ZFARY@("C0XDIR")="/home/glilly/all_smart_patient_data/smart-rdf/"
3157"RTN","C0XMAIN",30,0)
3158 S @ZFARY@("C0XDIR")="/home/george/fmts/trunk/samples/"
3159"RTN","C0XMAIN",31,0)
3160 D USEFARY(ZFARY)
3161"RTN","C0XMAIN",32,0)
3162 Q
3163"RTN","C0XMAIN",33,0)
3164 ;
3165"RTN","C0XMAIN",34,0)
3166USEFARY(ZFARY) ; INITIALIZES VARIABLES SAVED IN ARRAY ZFARY
3167"RTN","C0XMAIN",35,0)
3168 N ZI S ZI=""
3169"RTN","C0XMAIN",36,0)
3170 F S ZI=$O(@ZFARY@(ZI)) Q:ZI="" D
3171"RTN","C0XMAIN",37,0)
3172 . ;N ZX
3173"RTN","C0XMAIN",38,0)
3174 . S ZX="S "_ZI_"="""_@ZFARY@(ZI)_""""
3175"RTN","C0XMAIN",39,0)
3176 . ;W !,ZX
3177"RTN","C0XMAIN",40,0)
3178 . X ZX
3179"RTN","C0XMAIN",41,0)
3180 Q
3181"RTN","C0XMAIN",42,0)
3182 ;
3183"RTN","C0XMAIN",43,0)
3184IMPORT(FNAME,FDIR,FURL,FARY) ; EXTRINSIC THAT READS A FILE FROM THE STANDARD
3185"RTN","C0XMAIN",44,0)
3186 ; DIRECTORY, LOADS IT INTO THE TRIPLESTORE AS TEXT, AND RETURNS THE
3187"RTN","C0XMAIN",45,0)
3188 ; NODE NAME OF THE TEXT TRIPLE
3189"RTN","C0XMAIN",46,0)
3190 ; FDIR IS THE OPTIONAL DIRECTORY (DEFAUTS TO STANDARD DIR)
3191"RTN","C0XMAIN",47,0)
3192 ; FURL IS THE OPTIONAL URI FOR ACCESSING THE FILE FROM THE TRIPLE STORE
3193"RTN","C0XMAIN",48,0)
3194 ; FARY IS THE OPTIONAL FILE ARRAY OF THE TRIPLE STORE TO USE
3195"RTN","C0XMAIN",49,0)
3196 I '$D(FARY) D ;
3197"RTN","C0XMAIN",50,0)
3198 . D INITFARY("C0XFARY")
3199"RTN","C0XMAIN",51,0)
3200 . S FARY="C0XFARY"
3201"RTN","C0XMAIN",52,0)
3202 D USEFARY(FARY)
3203"RTN","C0XMAIN",53,0)
3204 N ZD,ZTMP
3205"RTN","C0XMAIN",54,0)
3206 I '$D(FDIR) S FDIR=C0XDIR ; DIRECTORY OF THE RDF FILE
3207"RTN","C0XMAIN",55,0)
3208 I '$D(FURL) D ;
3209"RTN","C0XMAIN",56,0)
3210 . N ZN2 S ZN2=$TR(FNAME,".","_") ; REMOVE THE DOT FROM THE NAME
3211"RTN","C0XMAIN",57,0)
3212 . S FURL=FDIR_ZN2
3213"RTN","C0XMAIN",58,0)
3214 N ZTMP
3215"RTN","C0XMAIN",59,0)
3216 S ZTMP=$NA(^TMP("C0X",$J,"FILEIN",1)) ; WHERE TO PUT THE INCOMING FILE
3217"RTN","C0XMAIN",60,0)
3218 K @ZTMP ; MAKE SURE IT'S CLEAR
3219"RTN","C0XMAIN",61,0)
3220 S C0XSTART=$$NOW^XLFDT
3221"RTN","C0XMAIN",62,0)
3222 W !,"STARTED: ",C0XSTART
3223"RTN","C0XMAIN",63,0)
3224 W !,"READING IN: ",FNAME
3225"RTN","C0XMAIN",64,0)
3226 I '$$FILEIN(ZTMP,FDIR,FNAME,4) D Q ; QUIT IF NO SUCCESS
3227"RTN","C0XMAIN",65,0)
3228 . W !,"ERROR READING FILE: ",FDIR,FNAME
3229"RTN","C0XMAIN",66,0)
3230 S ZRDF=$NA(^TMP("C0X",$J,"FILEIN")) ; WITHOUT THE SUBSCRIPT
3231"RTN","C0XMAIN",67,0)
3232 W !,$O(@ZRDF@(""),-1)," LINES READ"
3233"RTN","C0XMAIN",68,0)
3234 D INSRDF(ZRDF,FURL,FARY) ; IMPORT AND PROCESS THE RDF
3235"RTN","C0XMAIN",69,0)
3236 Q
3237"RTN","C0XMAIN",70,0)
3238 ;
3239"RTN","C0XMAIN",71,0)
3240WGET(ZURL,FARY) ; GET FROM THE INTERNET AN RDF FILE AND INSERT IT
3241"RTN","C0XMAIN",72,0)
3242 ;
3243"RTN","C0XMAIN",73,0)
3244 I '$D(FARY) D ;
3245"RTN","C0XMAIN",74,0)
3246 . D INITFARY("C0XFARY")
3247"RTN","C0XMAIN",75,0)
3248 . S FARY="C0XFARY"
3249"RTN","C0XMAIN",76,0)
3250 D USEFARY(FARY)
3251"RTN","C0XMAIN",77,0)
3252 ;N ZLOC,ZTMP
3253"RTN","C0XMAIN",78,0)
3254 K ZTMP
3255"RTN","C0XMAIN",79,0)
3256 S ZLOC=$NA(^TMP("C0X","WGET",$J))
3257"RTN","C0XMAIN",80,0)
3258 S C0XSTART=$$NOW^XLFDT
3259"RTN","C0XMAIN",81,0)
3260 W !,"STARTED: ",C0XSTART
3261"RTN","C0XMAIN",82,0)
3262 W !,"DOWNLOADING: ",ZURL
3263"RTN","C0XMAIN",83,0)
3264 S OK=$$httpGET^%zewdGTM(ZURL,.ZTMP)
3265"RTN","C0XMAIN",84,0)
3266 M @ZLOC=ZTMP
3267"RTN","C0XMAIN",85,0)
3268 W !,$O(@ZLOC@(""),-1)," LINES READ"
3269"RTN","C0XMAIN",86,0)
3270 D INSRDF(ZLOC,ZURL,FARY)
3271"RTN","C0XMAIN",87,0)
3272 Q
3273"RTN","C0XMAIN",88,0)
3274 ;
3275"RTN","C0XMAIN",89,0)
3276INSRDF(ZRDF,ZNAME,FARY) ; INSERT AN RDF FILE INTO THE STORE AND PROCESS
3277"RTN","C0XMAIN",90,0)
3278 ; ZRDF IS PASSED BY NAME
3279"RTN","C0XMAIN",91,0)
3280 I '$D(FARY) D ;
3281"RTN","C0XMAIN",92,0)
3282 . D INITFARY("C0XFARY")
3283"RTN","C0XMAIN",93,0)
3284 . S FARY="C0XFARY"
3285"RTN","C0XMAIN",94,0)
3286 D USEFARY(FARY)
3287"RTN","C0XMAIN",95,0)
3288 N ZGRAPH,ZSUBJECT
3289"RTN","C0XMAIN",96,0)
3290 S ZGRAPH="_:G"_$$LKY9 ; RANDOM GRAPH NAME
3291"RTN","C0XMAIN",97,0)
3292 S ZSUBJECT=$$ANONS ; RANDOM ANOYMOUS SUBJECT
3293"RTN","C0XMAIN",98,0)
3294 D ADD(ZGRAPH,ZSUBJECT,"fmts:url",ZNAME,FARY)
3295"RTN","C0XMAIN",99,0)
3296 N ZTXTNM
3297"RTN","C0XMAIN",100,0)
3298 S ZTXTNM="_TXT_INCOMING_RDF_FILE_"_ZNAME_"_"_$$LKY9 ; NAME FOR TEXT NODE
3299"RTN","C0XMAIN",101,0)
3300 D ADD(ZGRAPH,ZSUBJECT,"fmts:rdfSource",ZTXTNM,FARY)
3301"RTN","C0XMAIN",102,0)
3302 D UPDIE(.C0XFDA) ; TRY IT OUT
3303"RTN","C0XMAIN",103,0)
3304 K C0XCNT ;RESET FOR NEXT TIME
3305"RTN","C0XMAIN",104,0)
3306 D STORETXT(ZRDF,ZTXTNM,FARY)
3307"RTN","C0XMAIN",105,0)
3308 W !,"ADDED: ",ZGRAPH," ",ZSUBJECT," fmts:rdfSource ",ZTXTNM
3309"RTN","C0XMAIN",106,0)
3310 D PROCESS(.G,ZRDF,ZNAME,ZGRAPH,FARY) ; PARSE AND INSERT THE RDF
3311"RTN","C0XMAIN",107,0)
3312 Q
3313"RTN","C0XMAIN",108,0)
3314 ;
3315"RTN","C0XMAIN",109,0)
3316STORETXT(ZTXT,ZNAME,FARY) ; STORE TEXT IN THE TRIPLESTORE AT ZNAME
3317"RTN","C0XMAIN",110,0)
3318 ;
3319"RTN","C0XMAIN",111,0)
3320 I '$D(FARY) D ;
3321"RTN","C0XMAIN",112,0)
3322 . D INITFARY("C0XFARY")
3323"RTN","C0XMAIN",113,0)
3324 . S FARY="C0XFARY"
3325"RTN","C0XMAIN",114,0)
3326 D USEFARY(FARY)
3327"RTN","C0XMAIN",115,0)
3328 N ZIEN
3329"RTN","C0XMAIN",116,0)
3330 S ZIEN=$$IENOF(ZNAME,FARY) ; GET THE IEN
3331"RTN","C0XMAIN",117,0)
3332 D CLEAN^DILF
3333"RTN","C0XMAIN",118,0)
3334 K ZERR
3335"RTN","C0XMAIN",119,0)
3336 D WP^DIE(C0XSFN,ZIEN_",",1,,ZTXT,"ZERR")
3337"RTN","C0XMAIN",120,0)
3338 I $D(ZERR) D ;
3339"RTN","C0XMAIN",121,0)
3340 . ZWR ZERR
3341"RTN","C0XMAIN",122,0)
3342 Q
3343"RTN","C0XMAIN",123,0)
3344 ;
3345"RTN","C0XMAIN",124,0)
3346GETTXT(ZRTN,ZNAME,FARY) ; RETURNS RDF SOURCE OR OTHER TEXT
3347"RTN","C0XMAIN",125,0)
3348 ; ZRTN IS PASSED BY REFERENCE
3349"RTN","C0XMAIN",126,0)
3350 I '$D(FARY) D ;
3351"RTN","C0XMAIN",127,0)
3352 . D INITFARY("C0XFARY")
3353"RTN","C0XMAIN",128,0)
3354 . S FARY="C0XFARY"
3355"RTN","C0XMAIN",129,0)
3356 D USEFARY(FARY)
3357"RTN","C0XMAIN",130,0)
3358 N ZIEN
3359"RTN","C0XMAIN",131,0)
3360 S ZIEN=$$IENOF(ZNAME)
3361"RTN","C0XMAIN",132,0)
3362 S OK=$$GET1^DIQ(C0XSFN,ZIEN_",",1,,"ZRTN")
3363"RTN","C0XMAIN",133,0)
3364 Q
3365"RTN","C0XMAIN",134,0)
3366 ;
3367"RTN","C0XMAIN",135,0)
3368WHERETXT(ZNAME,FARY) ; EXTRINSIC WHICH RETURNS THE NAME OF THE GLOBAL
3369"RTN","C0XMAIN",136,0)
3370 ; WHERE THE TEXT IS LOCATED. NAME IS THE NAME OF THE STRING
3371"RTN","C0XMAIN",137,0)
3372 I '$D(FARY) D ;
3373"RTN","C0XMAIN",138,0)
3374 . D INITFARY("C0XFARY")
3375"RTN","C0XMAIN",139,0)
3376 . S FARY="C0XFARY"
3377"RTN","C0XMAIN",140,0)
3378 D USEFARY(FARY)
3379"RTN","C0XMAIN",141,0)
3380 N ZIEN
3381"RTN","C0XMAIN",142,0)
3382 S ZIEN=$$IENOF(ZNAME)
3383"RTN","C0XMAIN",143,0)
3384 Q $NA(@C0XSN@(ZIEN,1))
3385"RTN","C0XMAIN",144,0)
3386 ;
3387"RTN","C0XMAIN",145,0)
3388FILEIN(ZINTMP,ZDIR,ZFNAME,ZLVL) ; READS A FILE INTO ZINTMP USING FTG^%ZISH
3389"RTN","C0XMAIN",146,0)
3390 ; ZINTMP IS PASSED BY NAME AND INCLUDES THE NEW SUBSCRIPT
3391"RTN","C0XMAIN",147,0)
3392 ; IE ^TMP("C0X","FILEIN",1)
3393"RTN","C0XMAIN",148,0)
3394 ; ZLVL IN THIS CASE WOULD BE 3 INCREMENTING THE 1
3395"RTN","C0XMAIN",149,0)
3396 ; EXTRINSIC WHICH RETURNS THE RESULT OF FTG^%ZISH
3397"RTN","C0XMAIN",150,0)
3398 S OK=$$FTG^%ZISH(ZDIR,FNAME,ZINTMP,ZLVL)
3399"RTN","C0XMAIN",151,0)
3400 Q OK
3401"RTN","C0XMAIN",152,0)
3402 ;
3403"RTN","C0XMAIN",153,0)
3404TESTPROC ; TEST PROCESS WITH EXISTING SMALL RDF FILE
3405"RTN","C0XMAIN",154,0)
3406 S ZIN=$NA(^TMP("C0X",12226,"FILEIN"))
3407"RTN","C0XMAIN",155,0)
3408 S ZGRAPH="/test/rdfFile"
3409"RTN","C0XMAIN",156,0)
3410 S ZM="/test/rdfFile/meta"
3411"RTN","C0XMAIN",157,0)
3412 D PROCESS(.G,ZIN,ZGRAPH,ZM)
3413"RTN","C0XMAIN",158,0)
3414 Q
3415"RTN","C0XMAIN",159,0)
3416 ;
3417"RTN","C0XMAIN",160,0)
3418PROCESS(ZRTN,ZRDF,ZGRF,ZMETA,FARY) ; PROCESS AN INCOMING RDF FILE
3419"RTN","C0XMAIN",161,0)
3420 ; ZRTN IS PASS BY REFERENCE AND RETURNS MESSAGES ABOUT THE PROCESSING
3421"RTN","C0XMAIN",162,0)
3422 ; ZRDF IS PASSED BY NAME AND IS THE GLOBAL CONTAINING THE RDF FILE
3423"RTN","C0XMAIN",163,0)
3424 ; ZGRF IS THE NAME OF THE GRAPH TO USE IN THE TRIPLE STORE FOR RESULTS
3425"RTN","C0XMAIN",164,0)
3426 ; ZMETA IS OPTIONAL AND IS THE NAME OF THE GRAPH TO STORE METADATA
3427"RTN","C0XMAIN",165,0)
3428 ;
3429"RTN","C0XMAIN",166,0)
3430 I '$D(FARY) D ;
3431"RTN","C0XMAIN",167,0)
3432 . D INITFARY("C0XFARY")
3433"RTN","C0XMAIN",168,0)
3434 . S FARY="C0XFARY"
3435"RTN","C0XMAIN",169,0)
3436 D USEFARY(FARY)
3437"RTN","C0XMAIN",170,0)
3438 ; -- first parse the rdf file with the MXML parser
3439"RTN","C0XMAIN",171,0)
3440 ;S C0XDOCID=$$PARSE^C0CNHIN(ZRDF,"C0XARRAY") ; PARSE WITH MXML
3441"RTN","C0XMAIN",172,0)
3442 S C0XDOCID=$$EN^MXMLDOM(ZRDF,"W")
3443"RTN","C0XMAIN",173,0)
3444 ; -- assign the MXLM dom global name to ZDOM
3445"RTN","C0XMAIN",174,0)
3446 S ZDOM=$NA(^TMP("MXMLDOM",$J,C0XDOCID))
3447"RTN","C0XMAIN",175,0)
3448 W !,$O(@ZDOM@(""),-1)," XML NODES PARSED"
3449"RTN","C0XMAIN",176,0)
3450 ; -- populate the metagraph to point to the graph with status unfinished
3451"RTN","C0XMAIN",177,0)
3452 S METAS=$$ANONS ; GET AN ANONOMOUS RANDOM SUBJECT
3453"RTN","C0XMAIN",178,0)
3454 I '$D(ZMETA) S ZMETA="_:G"_$$LKY9 ; RANDOM GRAPH NAME FOR METAGRAPH
3455"RTN","C0XMAIN",179,0)
3456 D ADD(ZMETA,METAS,"fmts:about",ZGRF,FARY) ; POINT THE META TO THE GRAPH
3457"RTN","C0XMAIN",180,0)
3458 D ADD(ZMETA,METAS,"fmts:status","unfinished",FARY) ; mark as unfinished
3459"RTN","C0XMAIN",181,0)
3460 ;S C0XDATE=$$FMDTOUTC^C0CUTIL($$NOW^XLFDT,"DT")
3461"RTN","C0XMAIN",182,0)
3462 S C0XDATE=$$NOW^XLFDT
3463"RTN","C0XMAIN",183,0)
3464 D ADD(ZMETA,METAS,"fmts:dateTime",C0XDATE,FARY)
3465"RTN","C0XMAIN",184,0)
3466 D UPDIE(.C0XFDA) ; commit the metagraph changes to the triple store
3467"RTN","C0XMAIN",185,0)
3468 ; --
3469"RTN","C0XMAIN",186,0)
3470 ; -- pull out the vocabularies in the RDF statement. marked with xmlns:
3471"RTN","C0XMAIN",187,0)
3472 ; -- put them in a local variable for quick reference
3473"RTN","C0XMAIN",188,0)
3474 ; -- TODO: create a graph for vocabularies and validate incoming against it
3475"RTN","C0XMAIN",189,0)
3476 ;
3477"RTN","C0XMAIN",190,0)
3478 S C0XVOC=""
3479"RTN","C0XMAIN",191,0)
3480 N ZI,ZJ,ZK S ZI=""
3481"RTN","C0XMAIN",192,0)
3482 F S ZI=$O(@ZDOM@(1,"A",ZI)) Q:ZI="" D ; FOR EACH xmlns
3483"RTN","C0XMAIN",193,0)
3484 . S ZVOC=$P(ZI,"xmlns:",2)
3485"RTN","C0XMAIN",194,0)
3486 . I ZVOC'="" S C0XVOC(ZVOC)=$G(@ZDOM@(1,"A",ZI))
3487"RTN","C0XMAIN",195,0)
3488 ;W !,"VOCABS:" ZWR C0XVOC
3489"RTN","C0XMAIN",196,0)
3490 ;
3491"RTN","C0XMAIN",197,0)
3492 ; -- look for children called rdf:Description. quit if none. not an rdf file
3493"RTN","C0XMAIN",198,0)
3494 ;
3495"RTN","C0XMAIN",199,0)
3496 S ZI=$O(@ZDOM@(1,"C",""))
3497"RTN","C0XMAIN",200,0)
3498 I $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ; not an rdf file
3499"RTN","C0XMAIN",201,0)
3500 . W !,"Error. Not an RDF file. Cannot process."
3501"RTN","C0XMAIN",202,0)
3502 ;
3503"RTN","C0XMAIN",203,0)
3504 ; -- now process the rdf description children
3505"RTN","C0XMAIN",204,0)
3506 ;
3507"RTN","C0XMAIN",205,0)
3508 S ZI=""
3509"RTN","C0XMAIN",206,0)
3510 S (C0XSUB,C0XPRE,C0XOBJ)="" ; INITIALIZE subject, object and predicate
3511"RTN","C0XMAIN",207,0)
3512 F S ZI=$O(@ZDOM@(1,"C",ZI)) Q:ZI="" D ;
3513"RTN","C0XMAIN",208,0)
3514 . ; -- we are skipping any child that is not rdf:Description
3515"RTN","C0XMAIN",209,0)
3516 . ; -- TODO: check to see if this is right in general
3517"RTN","C0XMAIN",210,0)
3518 . ;
3519"RTN","C0XMAIN",211,0)
3520 . IF $G(@ZDOM@(1,"C",ZI))'="rdf:Description" D Q ;
3521"RTN","C0XMAIN",212,0)
3522 . . W !,"SKIPPING NODE: ",ZI
3523"RTN","C0XMAIN",213,0)
3524 . ; -- now looking for the subject for the triples
3525"RTN","C0XMAIN",214,0)
3526 . S ZX=$G(@ZDOM@(ZI,"A","rdf:about"))
3527"RTN","C0XMAIN",215,0)
3528 . I ZX'="" D ; we have the subject
3529"RTN","C0XMAIN",216,0)
3530 . . ;W " about: ",ZX
3531"RTN","C0XMAIN",217,0)
3532 . . S C0XSUB=ZX
3533"RTN","C0XMAIN",218,0)
3534 . E D ;
3535"RTN","C0XMAIN",219,0)
3536 . . S ZX=$G(@ZDOM@(ZI,"A","rdf:nodeID")) ; node id is another style of subject
3537"RTN","C0XMAIN",220,0)
3538 . . I ZX'="" D ;
3539"RTN","C0XMAIN",221,0)
3540 . . . S C0XSUB=ZX
3541"RTN","C0XMAIN",222,0)
3542 . I C0XSUB="" S C0XSUB=$$ANONS ; DEFAULT TO BLANK SUBJECT
3543"RTN","C0XMAIN",223,0)
3544 . ;
3545"RTN","C0XMAIN",224,0)
3546 . ; -- we now have the subject. the children of this node have the rest
3547"RTN","C0XMAIN",225,0)
3548 . ;
3549"RTN","C0XMAIN",226,0)
3550 . S ZJ="" ; for the children of the rdf:Description nodes
3551"RTN","C0XMAIN",227,0)
3552 . F S ZJ=$O(@ZDOM@(ZI,"C",ZJ)) Q:ZJ="" D ; for each child
3553"RTN","C0XMAIN",228,0)
3554 . . S C0XPRE=@ZDOM@(ZJ) ; the predicate without a prefix
3555"RTN","C0XMAIN",229,0)
3556 . . S ZX=$G(@ZDOM@(ZJ,"A","xmlns")) ; name space
3557"RTN","C0XMAIN",230,0)
3558 . . I ZX'="" S C0XPRE=ZX_C0XPRE ; add the namespace prefix
3559"RTN","C0XMAIN",231,0)
3560 . . I C0XPRE[":" D ; expand using vocabulary
3561"RTN","C0XMAIN",232,0)
3562 . . . N ZB,ZA
3563"RTN","C0XMAIN",233,0)
3564 . . . S ZB=$P(C0XPRE,":",1)
3565"RTN","C0XMAIN",234,0)
3566 . . . S ZA=$P(C0XPRE,":",2)
3567"RTN","C0XMAIN",235,0)
3568 . . . I $G(C0XVOC(ZB))'="" D ;
3569"RTN","C0XMAIN",236,0)
3570 . . . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
3571"RTN","C0XMAIN",237,0)
3572 . . S ZY=$G(@ZDOM@(ZJ,"A","rdf:resource")) ; potential object
3573"RTN","C0XMAIN",238,0)
3574 . . I ZY'="" D Q ;
3575"RTN","C0XMAIN",239,0)
3576 . . . S C0XOBJ=ZY ; object
3577"RTN","C0XMAIN",240,0)
3578 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; finally. our first real triple
3579"RTN","C0XMAIN",241,0)
3580 . . ; -- this is an else because of the quit above
3581"RTN","C0XMAIN",242,0)
3582 . . S ZX=$G(@ZDOM@(ZJ,"A","rdf:nodeID")) ; fishing for nodeId object
3583"RTN","C0XMAIN",243,0)
3584 . . I ZX'="" D Q ; got one
3585"RTN","C0XMAIN",244,0)
3586 . . . S C0XOBJ=ZX ; we are using the incoming nodeIDs as object/subject
3587"RTN","C0XMAIN",245,0)
3588 . . . ; without change... this could be foolish .. look at it again later
3589"RTN","C0XMAIN",246,0)
3590 . . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
3591"RTN","C0XMAIN",247,0)
3592 . . S C0XOBJ=$G(@ZDOM@(ZJ,"T",1)) ; hopefully an object is here
3593"RTN","C0XMAIN",248,0)
3594 . . I C0XOBJ="" D Q ; not a happy situation
3595"RTN","C0XMAIN",249,0)
3596 . . . W !,"ERROR, NO OBJECT FOUND FOR NODE: ",ZJ
3597"RTN","C0XMAIN",250,0)
3598 . . D ADD(ZGRF,C0XSUB,C0XPRE,C0XOBJ) ; go for it and add a node
3599"RTN","C0XMAIN",251,0)
3600 W !,"INSERTING ",C0XCNT," TRIPLES"
3601"RTN","C0XMAIN",252,0)
3602 D UPDIE(.C0XFDA) ; commit the updates to the file
3603"RTN","C0XMAIN",253,0)
3604 ; next, mark the graph as finished
3605"RTN","C0XMAIN",254,0)
3606 S C0XEND=$$NOW^XLFDT
3607"RTN","C0XMAIN",255,0)
3608 W !," ENDED AT: ",C0XEND
3609"RTN","C0XMAIN",256,0)
3610 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XSTART,2)
3611"RTN","C0XMAIN",257,0)
3612 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
3613"RTN","C0XMAIN",258,0)
3614 W !," APPROXIMATELY ",$P(C0XCNT/C0XDIFF,".")," TRIPLES PER SECOND"
3615"RTN","C0XMAIN",259,0)
3616 Q
3617"RTN","C0XMAIN",260,0)
3618 ;
3619"RTN","C0XMAIN",261,0)
3620SHOW(ZN) ;
3621"RTN","C0XMAIN",262,0)
3622 ZWR ^TMP("MXMLDOM",$J,1,ZN,*)
3623"RTN","C0XMAIN",263,0)
3624 Q
3625"RTN","C0XMAIN",264,0)
3626 ;
3627"RTN","C0XMAIN",265,0)
3628ANONS() ; RETURNS AN ANONOMOUS SUBJECT
3629"RTN","C0XMAIN",266,0)
3630 Q "_S:"_$$LKY9
3631"RTN","C0XMAIN",267,0)
3632 ;
3633"RTN","C0XMAIN",268,0)
3634NEWG(NGRAPH,NMETA) ; CREATES A NEW META GRAPH, MARKS IT AS UNFINISHED
3635"RTN","C0XMAIN",269,0)
3636 ; THEN CREATES A NEW GRAPH AND POINTS THE METAGRAPH TO IT
3637"RTN","C0XMAIN",270,0)
3638 ; NGRAPH AND NMETA ARE PASSED BY REFERENCE AND ARE THE RETURN
3639"RTN","C0XMAIN",271,0)
3640 S NGRAPH="G"_$$LKY9
3641"RTN","C0XMAIN",272,0)
3642 S NMETA=NGRAPH_"A"
3643"RTN","C0XMAIN",273,0)
3644 Q
3645"RTN","C0XMAIN",274,0)
3646 ;
3647"RTN","C0XMAIN",275,0)
3648ADD(ZG,ZS,ZP,ZO,FARY) ; ADD A TRIPLE TO THE TRIPLESTORE. ALL VALUES ARE TEXT
3649"RTN","C0XMAIN",276,0)
3650 ; THE FDA IS SET UP BUT THE FILES ARE NOT UPDATED. CALL UPDIE TO COMPLETE
3651"RTN","C0XMAIN",277,0)
3652 I '$D(FARY) D ;
3653"RTN","C0XMAIN",278,0)
3654 . D INITFARY("C0XFARY")
3655"RTN","C0XMAIN",279,0)
3656 . S FARY="C0XFARY"
3657"RTN","C0XMAIN",280,0)
3658 D USEFARY(FARY)
3659"RTN","C0XMAIN",281,0)
3660 I '$D(C0XCNT) S C0XCNT=0
3661"RTN","C0XMAIN",282,0)
3662 N ZNODE
3663"RTN","C0XMAIN",283,0)
3664 S ZNODE="N"_$$LKY17
3665"RTN","C0XMAIN",284,0)
3666 N ZNARY ; GET READY TO CALL IENOFA
3667"RTN","C0XMAIN",285,0)
3668 S ZNARY("ZG",ZG)=""
3669"RTN","C0XMAIN",286,0)
3670 S ZNARY("ZS",ZS)=""
3671"RTN","C0XMAIN",287,0)
3672 S ZNARY("ZP",ZP)=""
3673"RTN","C0XMAIN",288,0)
3674 S ZNARY("ZO",ZO)=""
3675"RTN","C0XMAIN",289,0)
3676 D IENOFA(.ZIENS,.ZNARY,FARY) ; RESOLVE/ADD STRINGS
3677"RTN","C0XMAIN",290,0)
3678 ;S ZGIEN=$$IENOF(ZG) ; LAYGO TO GET IEN
3679"RTN","C0XMAIN",291,0)
3680 ;S ZSIEN=$$IENOF(ZS)
3681"RTN","C0XMAIN",292,0)
3682 ;S ZPIEN=$$IENOF(ZP)
3683"RTN","C0XMAIN",293,0)
3684 ;S ZOIEN=$$IENOF(ZO)
3685"RTN","C0XMAIN",294,0)
3686 ;I $D(C0XFDA) D UPDIE ; ADD THE STRINGS IF NEEDED
3687"RTN","C0XMAIN",295,0)
3688 S C0XCNT=C0XCNT+1
3689"RTN","C0XMAIN",296,0)
3690 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.01)=ZNODE
3691"RTN","C0XMAIN",297,0)
3692 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.02)=$O(ZIENS("IEN","ZG",""))
3693"RTN","C0XMAIN",298,0)
3694 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.03)=$O(ZIENS("IEN","ZS",""))
3695"RTN","C0XMAIN",299,0)
3696 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.04)=$O(ZIENS("IEN","ZP",""))
3697"RTN","C0XMAIN",300,0)
3698 S C0XFDA(C0XTFN,"?+"_C0XCNT_",",.05)=$O(ZIENS("IEN","ZO",""))
3699"RTN","C0XMAIN",301,0)
3700 ; REMEMBER TO CALL UPDIE WHEN YOU'RE DONE
3701"RTN","C0XMAIN",302,0)
3702 Q
3703"RTN","C0XMAIN",303,0)
3704 ;
3705"RTN","C0XMAIN",304,0)
3706LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3707"RTN","C0XMAIN",305,0)
3708 ; UNIQUE NODE AND GRAPH NAMES
3709"RTN","C0XMAIN",306,0)
3710 N ZN,ZI
3711"RTN","C0XMAIN",307,0)
3712 S ZN=""
3713"RTN","C0XMAIN",308,0)
3714 F ZI=1:1:9 D ;
3715"RTN","C0XMAIN",309,0)
3716 . S ZN=ZN_$R(10)
3717"RTN","C0XMAIN",310,0)
3718 Q ZN
3719"RTN","C0XMAIN",311,0)
3720 ;
3721"RTN","C0XMAIN",312,0)
3722LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
3723"RTN","C0XMAIN",313,0)
3724 ; UNIQUE NODE AND GRAPH NAMES
3725"RTN","C0XMAIN",314,0)
3726 N ZN,ZI
3727"RTN","C0XMAIN",315,0)
3728 S ZN=""
3729"RTN","C0XMAIN",316,0)
3730 F ZI=1:1:17 D ;
3731"RTN","C0XMAIN",317,0)
3732 . S ZN=ZN_$R(10)
3733"RTN","C0XMAIN",318,0)
3734 Q ZN
3735"RTN","C0XMAIN",319,0)
3736 ;
3737"RTN","C0XMAIN",320,0)
3738IENOF(ZSTRING,FARY) ; EXTRINSIC WHICH RETURNS THE IEN OF ZS IN THE STRINGS FILE
3739"RTN","C0XMAIN",321,0)
3740 I '$D(FARY) D ;
3741"RTN","C0XMAIN",322,0)
3742 . D INITFARY("C0XFARY")
3743"RTN","C0XMAIN",323,0)
3744 . S FARY="C0XFARY"
3745"RTN","C0XMAIN",324,0)
3746 N ZIEN
3747"RTN","C0XMAIN",325,0)
3748 S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
3749"RTN","C0XMAIN",326,0)
3750 I ZIEN="" D ;
3751"RTN","C0XMAIN",327,0)
3752 . S C0XFDA2(C0XSFN,"+1,",.01)=ZSTRING
3753"RTN","C0XMAIN",328,0)
3754 . D UPDIE(.C0XFDA2)
3755"RTN","C0XMAIN",329,0)
3756 . S ZIEN=$O(@C0XSN@("B",ZSTRING,""))
3757"RTN","C0XMAIN",330,0)
3758 . K C0XFDA2
3759"RTN","C0XMAIN",331,0)
3760 Q ZIEN
3761"RTN","C0XMAIN",332,0)
3762 ;
3763"RTN","C0XMAIN",333,0)
3764IENOFA(ZOUTARY,ZINARY,FARY) ; RESOLVE STRINGS TO IEN IN STRINGS FILE
3765"RTN","C0XMAIN",334,0)
3766 ; OR ADD THEM IF
3767"RTN","C0XMAIN",335,0)
3768 ; MISSING. ZINARY AND ZOUTARY ARE PASSED BY REFERENCE
3769"RTN","C0XMAIN",336,0)
3770 ; ZINARY LOOKS LIKE ZINARY("VAR","VAL")=""
3771"RTN","C0XMAIN",337,0)
3772 ; RETURNS IN ZOUTARY OF THE FORM ZOUTARY("IEN","VAR",IEN)=""
3773"RTN","C0XMAIN",338,0)
3774 I '$D(FARY) D ;
3775"RTN","C0XMAIN",339,0)
3776 . D INITFARY("C0XFARY")
3777"RTN","C0XMAIN",340,0)
3778 . S FARY="C0XFARY"
3779"RTN","C0XMAIN",341,0)
3780 K ZOUTARY ; START WITH CLEAN RESULTS
3781"RTN","C0XMAIN",342,0)
3782 K C0XFDA2 ; USE A SEPARATE FDA FOR THIS
3783"RTN","C0XMAIN",343,0)
3784 N ZI S ZI=""
3785"RTN","C0XMAIN",344,0)
3786 N ZV,ZIEN
3787"RTN","C0XMAIN",345,0)
3788 N ZCNT S ZCNT=0
3789"RTN","C0XMAIN",346,0)
3790 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; LOOK FOR MISSING STRINGS
3791"RTN","C0XMAIN",347,0)
3792 . S ZV=$O(ZINARY(ZI,""))
3793"RTN","C0XMAIN",348,0)
3794 . I $O(@C0XSN@("B",ZV,""))="" D ;
3795"RTN","C0XMAIN",349,0)
3796 . . S ZCNT=ZCNT+1
3797"RTN","C0XMAIN",350,0)
3798 . . S C0XFDA2(C0XSFN,"+"_ZCNT_",",.01)=ZV
3799"RTN","C0XMAIN",351,0)
3800 I $D(C0XFDA2) D ;
3801"RTN","C0XMAIN",352,0)
3802 . D UPDIE(.C0XFDA2) ; ADD MISSING STRINGS
3803"RTN","C0XMAIN",353,0)
3804 . K C0XFDA2 ; CLEAN UP
3805"RTN","C0XMAIN",354,0)
3806 F S ZI=$O(ZINARY(ZI)) Q:ZI="" D ; NOT GET ALL IENS
3807"RTN","C0XMAIN",355,0)
3808 . S ZV=$O(ZINARY(ZI,""))
3809"RTN","C0XMAIN",356,0)
3810 . S ZIEN=$O(@C0XSN@("B",ZV,"")) ; THEY SHOULD BE THERE NOW
3811"RTN","C0XMAIN",357,0)
3812 . I ZIEN="" D ;
3813"RTN","C0XMAIN",358,0)
3814 . . W !,"ERROR ADDING STRING: ",ZV
3815"RTN","C0XMAIN",359,0)
3816 . . B
3817"RTN","C0XMAIN",360,0)
3818 . S ZOUTARY("IEN",ZI,ZIEN)=""
3819"RTN","C0XMAIN",361,0)
3820 Q
3821"RTN","C0XMAIN",362,0)
3822 ;
3823"RTN","C0XMAIN",363,0)
3824UPDIE(ZFDA) ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
3825"RTN","C0XMAIN",364,0)
3826 ; ZFDA IS PASSED BY REFERENCE
3827"RTN","C0XMAIN",365,0)
3828 ;ZWR ZFDA
3829"RTN","C0XMAIN",366,0)
3830 ;B
3831"RTN","C0XMAIN",367,0)
3832 K ZERR
3833"RTN","C0XMAIN",368,0)
3834 D CLEAN^DILF
3835"RTN","C0XMAIN",369,0)
3836 D UPDATE^DIE("","ZFDA","","ZERR")
3837"RTN","C0XMAIN",370,0)
3838 I $D(ZERR) S ZZERR=ZZERR ; ZZERR DOESN'T EXIST,
3839"RTN","C0XMAIN",371,0)
3840 ; INVOKE THE ERROR TRAP IF TASKED
3841"RTN","C0XMAIN",372,0)
3842 ;. W "ERROR",!
3843"RTN","C0XMAIN",373,0)
3844 ;. ZWR ZERR
3845"RTN","C0XMAIN",374,0)
3846 ;. B
3847"RTN","C0XMAIN",375,0)
3848 K ZFDA
3849"RTN","C0XMAIN",376,0)
3850 Q
3851"RTN","C0XMAIN",377,0)
3852 ;
3853"RTN","C0XRDF")
38540^7^B4392
3855"RTN","C0XRDF",1,0)
3856C0XRDF ; GPL - Fileman Triples RDF out ;11/07/11 17:05
3857"RTN","C0XRDF",2,0)
3858 ;;0.1;C0X;nopatch;noreleasedate;Build 9
3859"RTN","C0XRDF",3,0)
3860 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU
3861"RTN","C0XRDF",4,0)
3862 ;General Public License See attached copy of the License.
3863"RTN","C0XRDF",5,0)
3864 ;
3865"RTN","C0XRDF",6,0)
3866 ;This program is free software; you can redistribute it and/or modify
3867"RTN","C0XRDF",7,0)
3868 ;it under the terms of the GNU General Public License as published by
3869"RTN","C0XRDF",8,0)
3870 ;the Free Software Foundation; either version 2 of the License, or
3871"RTN","C0XRDF",9,0)
3872 ;(at your option) any later version.
3873"RTN","C0XRDF",10,0)
3874 ;
3875"RTN","C0XRDF",11,0)
3876 ;This program is distributed in the hope that it will be useful,
3877"RTN","C0XRDF",12,0)
3878 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
3879"RTN","C0XRDF",13,0)
3880 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3881"RTN","C0XRDF",14,0)
3882 ;GNU General Public License for more details.
3883"RTN","C0XRDF",15,0)
3884 ;
3885"RTN","C0XRDF",16,0)
3886 ;You should have received a copy of the GNU General Public License along
3887"RTN","C0XRDF",17,0)
3888 ;with this program; if not, write to the Free Software Foundation, Inc.,
3889"RTN","C0XRDF",18,0)
3890 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3891"RTN","C0XRDF",19,0)
3892 ;
3893"RTN","C0XRDF",20,0)
3894 Q
3895"RTN","C0XRDF",21,0)
3896 ;
3897"RTN","C0XRDF",22,0)
3898REPLYSTART(ZARY);
3899"RTN","C0XRDF",23,0)
3900 D ADD(ZARY,"<?xml version=""1.0"" encoding=""UTF-8""?>")
3901"RTN","C0XRDF",24,0)
3902 D ADD(ZARY,"<rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"">")
3903"RTN","C0XRDF",25,0)
3904 Q
3905"RTN","C0XRDF",26,0)
3906 ;
3907"RTN","C0XRDF",27,0)
3908LISTSTART(ZARY,ZNAM)
3909"RTN","C0XRDF",28,0)
3910 Q
3911"RTN","C0XRDF",29,0)
3912 ;
3913"RTN","C0XRDF",30,0)
3914DICTSTART(ZARY,ZSUB)
3915"RTN","C0XRDF",31,0)
3916 I ZSUB["http" D Q ;
3917"RTN","C0XRDF",32,0)
3918 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
3919"RTN","C0XRDF",33,0)
3920 I $E(ZSUB,1,1)="/" D Q ;
3921"RTN","C0XRDF",34,0)
3922 . D ADD(ZARY,"<rdf:Description rdf:about="""_ZSUB_""">")
3923"RTN","C0XRDF",35,0)
3924 D ADD(ZARY,"<rdf:Description rdf:nodeID="""_ZSUB_""">")
3925"RTN","C0XRDF",36,0)
3926 Q
3927"RTN","C0XRDF",37,0)
3928 ;
3929"RTN","C0XRDF",38,0)
3930DASSERT(ZARY,ZPRED,ZOBJ)
3931"RTN","C0XRDF",39,0)
3932 I ZPRED[":" D Q ;
3933"RTN","C0XRDF",40,0)
3934 . I ZPRED="rdf:type" D Q ;
3935"RTN","C0XRDF",41,0)
3936 . . D ADD(ZARY,"<rdf:type rdf:resource="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
3937"RTN","C0XRDF",42,0)
3938 . N ZA,ZB,ZC
3939"RTN","C0XRDF",43,0)
3940 . S ZA=$P(ZPRED,":",1)
3941"RTN","C0XRDF",44,0)
3942 . S ZB=$P(ZPRED,":",2)
3943"RTN","C0XRDF",45,0)
3944 . I $E(ZB,1,1)="/" D ;
3945"RTN","C0XRDF",46,0)
3946 . . S ZB=$P(ZB,"/",2) ; handling gpltest:/note situations
3947"RTN","C0XRDF",47,0)
3948 . S ZC=C0XVOC(ZA)
3949"RTN","C0XRDF",48,0)
3950 . I ZOBJ["nodeID:" D Q ;
3951"RTN","C0XRDF",49,0)
3952 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:nodeID="""_$$EXT^C0XUTIL(ZOBJ)_"""/>")
3953"RTN","C0XRDF",50,0)
3954 . S ZOBJ=$$EXT^C0XUTIL(ZOBJ)
3955"RTN","C0XRDF",51,0)
3956 . I ZOBJ["http" D Q ;
3957"RTN","C0XRDF",52,0)
3958 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
3959"RTN","C0XRDF",53,0)
3960 . I $E(ZOBJ,1,1)="/" D Q ;
3961"RTN","C0XRDF",54,0)
3962 . . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""" rdf:resource="""_ZOBJ_"""/>")
3963"RTN","C0XRDF",55,0)
3964 . D ADD(ZARY,"<"_ZB_" xmlns="""_ZC_""">"_$$EXT^C0XUTIL(ZOBJ)_"</"_ZB_">")
3965"RTN","C0XRDF",56,0)
3966 Q
3967"RTN","C0XRDF",57,0)
3968 ;
3969"RTN","C0XRDF",58,0)
3970DICTEND(ZARY)
3971"RTN","C0XRDF",59,0)
3972 D ADD(ZARY,"</rdf:Description>")
3973"RTN","C0XRDF",60,0)
3974 Q
3975"RTN","C0XRDF",61,0)
3976 ;
3977"RTN","C0XRDF",62,0)
3978LISTEND(ZARY)
3979"RTN","C0XRDF",63,0)
3980 Q
3981"RTN","C0XRDF",64,0)
3982 ;
3983"RTN","C0XRDF",65,0)
3984REPLYEND(ZARY)
3985"RTN","C0XRDF",66,0)
3986 D ADD(ZARY,"</rdf:RDF>")
3987"RTN","C0XRDF",67,0)
3988 Q
3989"RTN","C0XRDF",68,0)
3990 ;
3991"RTN","C0XRDF",69,0)
3992ADD(ZARY,ZELE)
3993"RTN","C0XRDF",70,0)
3994 N ZI
3995"RTN","C0XRDF",71,0)
3996 I '$D(ZARY) S @ZARY@(1)=ZELE Q ;
3997"RTN","C0XRDF",72,0)
3998 S ZI=$O(@ZARY@(""),-1)
3999"RTN","C0XRDF",73,0)
4000 S @ZARY@(ZI+1)=ZELE
4001"RTN","C0XRDF",74,0)
4002 Q
4003"RTN","C0XRDF",75,0)
4004 ;
4005"RTN","C0XRDF",76,0)
4006rdfout(rdfout,zary) ;
4007"RTN","C0XRDF",77,0)
4008 d REPLYSTART("rdfout")
4009"RTN","C0XRDF",78,0)
4010 d LISTSTART("rdfout","results")
4011"RTN","C0XRDF",79,0)
4012 n zi s zi=""
4013"RTN","C0XRDF",80,0)
4014 f s zi=$o(zary(zi)) q:zi="" d ; for each subject
4015"RTN","C0XRDF",81,0)
4016 . n zii s zii=""
4017"RTN","C0XRDF",82,0)
4018 . D DICTSTART("rdfout",$$EXT^C0XUTIL(zi))
4019"RTN","C0XRDF",83,0)
4020 . f s zii=$o(zary(zi,zii)) q:zii="" d ; for each pred^obj pair
4021"RTN","C0XRDF",84,0)
4022 . . d DASSERT("rdfout",$p(zii,"^",1),$p(zii,"^",2))
4023"RTN","C0XRDF",85,0)
4024 . D DICTEND("rdfout")
4025"RTN","C0XRDF",86,0)
4026 d LISTEND("rdfout")
4027"RTN","C0XRDF",87,0)
4028 d REPLYEND("rdfout")
4029"RTN","C0XRDF",88,0)
4030 q
4031"RTN","C0XRDF",89,0)
4032 ;
4033"RTN","C0XTEST")
40340^3^B14490662
4035"RTN","C0XTEST",1,0)
4036C0XTEST ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
4037"RTN","C0XTEST",2,0)
4038 ;;0.1;C0X;nopatch;noreleasedate;Build 9
4039"RTN","C0XTEST",3,0)
4040 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4041"RTN","C0XTEST",4,0)
4042 ;General Public License See attached copy of the License.
4043"RTN","C0XTEST",5,0)
4044 ;
4045"RTN","C0XTEST",6,0)
4046 ;This program is free software; you can redistribute it and/or modify
4047"RTN","C0XTEST",7,0)
4048 ;it under the terms of the GNU General Public License as published by
4049"RTN","C0XTEST",8,0)
4050 ;the Free Software Foundation; either version 2 of the License, or
4051"RTN","C0XTEST",9,0)
4052 ;(at your option) any later version.
4053"RTN","C0XTEST",10,0)
4054 ;
4055"RTN","C0XTEST",11,0)
4056 ;This program is distributed in the hope that it will be useful,
4057"RTN","C0XTEST",12,0)
4058 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4059"RTN","C0XTEST",13,0)
4060 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4061"RTN","C0XTEST",14,0)
4062 ;GNU General Public License for more details.
4063"RTN","C0XTEST",15,0)
4064 ;
4065"RTN","C0XTEST",16,0)
4066 ;You should have received a copy of the GNU General Public License along
4067"RTN","C0XTEST",17,0)
4068 ;with this program; if not, write to the Free Software Foundation, Inc.,
4069"RTN","C0XTEST",18,0)
4070 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4071"RTN","C0XTEST",19,0)
4072 ;
4073"RTN","C0XTEST",20,0)
4074 Q
4075"RTN","C0XTEST",21,0)
4076 ;
4077"RTN","C0XTEST",22,0)
4078EN ; run the test
4079"RTN","C0XTEST",23,0)
4080 ;
4081"RTN","C0XTEST",24,0)
4082 k C0XFDA ; clear the node variable
4083"RTN","C0XTEST",25,0)
4084 i '$d(^C0X(101,0)) d ; global doesn't exist
4085"RTN","C0XTEST",26,0)
4086 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
4087"RTN","C0XTEST",27,0)
4088 n zg
4089"RTN","C0XTEST",28,0)
4090 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
4091"RTN","C0XTEST",29,0)
4092 n zi
4093"RTN","C0XTEST",30,0)
4094 f zi=1:1:100000 d ; try a test of 10000 nodes
4095"RTN","C0XTEST",31,0)
4096 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
4097"RTN","C0XTEST",32,0)
4098 . s C0XFDA(172.101,zi,.02)=zg
4099"RTN","C0XTEST",33,0)
4100 . s C0XFDA(172.101,zi,.03)=$R(100000)
4101"RTN","C0XTEST",34,0)
4102 . s C0XFDA(172.101,zi,.04)=$R(100000)
4103"RTN","C0XTEST",35,0)
4104 . s C0XFDA(172.101,zi,.05)=$R(100000)
4105"RTN","C0XTEST",36,0)
4106 S C0XST=$$NOW^XLFDT ; start of the insertion test
4107"RTN","C0XTEST",37,0)
4108 W !,"INSERTION STARTS AT ",C0XST,!
4109"RTN","C0XTEST",38,0)
4110 d BULKLOAD(.C0XFDA)
4111"RTN","C0XTEST",39,0)
4112 s C0XEND=$$NOW^XLFDT ; end of the insertion test
4113"RTN","C0XTEST",40,0)
4114 W !,"INSERTION ENDS AT ",C0XEND
4115"RTN","C0XTEST",41,0)
4116 S C0XDIFF=$$FMDIFF^XLFDT(C0XEND,C0XST,2)
4117"RTN","C0XTEST",42,0)
4118 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
4119"RTN","C0XTEST",43,0)
4120 I C0XDIFF>0 W !," APPROXIMATELY ",$P(100000/C0XDIFF,".")," NODES PER SECOND"
4121"RTN","C0XTEST",44,0)
4122 q
4123"RTN","C0XTEST",45,0)
4124 ;
4125"RTN","C0XTEST",46,0)
4126LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4127"RTN","C0XTEST",47,0)
4128 ; UNIQUE NODE AND GRAPH NAMES
4129"RTN","C0XTEST",48,0)
4130 N ZN,ZI
4131"RTN","C0XTEST",49,0)
4132 S ZN=""
4133"RTN","C0XTEST",50,0)
4134 F ZI=1:1:9 D ;
4135"RTN","C0XTEST",51,0)
4136 . S ZN=ZN_$R(10)
4137"RTN","C0XTEST",52,0)
4138 Q ZN
4139"RTN","C0XTEST",53,0)
4140 ;
4141"RTN","C0XTEST",54,0)
4142LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4143"RTN","C0XTEST",55,0)
4144 ; UNIQUE NODE AND GRAPH NAMES
4145"RTN","C0XTEST",56,0)
4146 N ZN,ZI
4147"RTN","C0XTEST",57,0)
4148 S ZN=""
4149"RTN","C0XTEST",58,0)
4150 F ZI=1:1:17 D ;
4151"RTN","C0XTEST",59,0)
4152 . S ZN=ZN_$R(10)
4153"RTN","C0XTEST",60,0)
4154 Q ZN
4155"RTN","C0XTEST",61,0)
4156 ;
4157"RTN","C0XTEST",62,0)
4158BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
4159"RTN","C0XTEST",63,0)
4160 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
4161"RTN","C0XTEST",64,0)
4162 ; QUITS IF FILE IS NOT 172.101
4163"RTN","C0XTEST",65,0)
4164 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
4165"RTN","C0XTEST",66,0)
4166 ; QUITS IF FIRST ENTRY IS NOT IENS 1
4167"RTN","C0XTEST",67,0)
4168 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
4169"RTN","C0XTEST",68,0)
4170 ; ZBFDA IS PASSED BY REFERENCE
4171"RTN","C0XTEST",69,0)
4172 ;
4173"RTN","C0XTEST",70,0)
4174 ; -- reserves a block of iens from file 172.101 by locking the zero node
4175"RTN","C0XTEST",71,0)
4176 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
4177"RTN","C0XTEST",72,0)
4178 ; -- then unlocking to minimize the duration of the lock
4179"RTN","C0XTEST",73,0)
4180 ;
4181"RTN","C0XTEST",74,0)
4182 W !,"USING BULKLOAD"
4183"RTN","C0XTEST",75,0)
4184 I '$D(ZBFDA) Q ; EMPTY FDA
4185"RTN","C0XTEST",76,0)
4186 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
4187"RTN","C0XTEST",77,0)
4188 N ZCNT,ZP3,ZP4
4189"RTN","C0XTEST",78,0)
4190 ; -- find the number of nodes to insert
4191"RTN","C0XTEST",79,0)
4192 S ZCNT=$O(ZBFDA(172.101,""),-1)
4193"RTN","C0XTEST",80,0)
4194 I ZCNT="" D Q ;
4195"RTN","C0XTEST",81,0)
4196 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
4197"RTN","C0XTEST",82,0)
4198 . B
4199"RTN","C0XTEST",83,0)
4200 ; -- lock the zero node and reserve a block of iens to insert
4201"RTN","C0XTEST",84,0)
4202 W !,"LOCKING ZERO NODE"
4203"RTN","C0XTEST",85,0)
4204 LOCK +^C0X(101,0)
4205"RTN","C0XTEST",86,0)
4206 S ZP3=$P(^C0X(101,0),U,3)
4207"RTN","C0XTEST",87,0)
4208 S ZP4=$P(^C0X(101,0),U,4)
4209"RTN","C0XTEST",88,0)
4210 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
4211"RTN","C0XTEST",89,0)
4212 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
4213"RTN","C0XTEST",90,0)
4214 LOCK -^C0X(101,0)
4215"RTN","C0XTEST",91,0)
4216 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
4217"RTN","C0XTEST",92,0)
4218 S ZBASE=ZP3 ; the last ien in the file
4219"RTN","C0XTEST",93,0)
4220 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
4221"RTN","C0XTEST",94,0)
4222 W !,$$NOW^XLFDT
4223"RTN","C0XTEST",95,0)
4224 S ZI=""
4225"RTN","C0XTEST",96,0)
4226 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
4227"RTN","C0XTEST",97,0)
4228 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
4229"RTN","C0XTEST",98,0)
4230 . I ZN="" D BLKERR Q ;
4231"RTN","C0XTEST",99,0)
4232 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
4233"RTN","C0XTEST",100,0)
4234 . I ZG="" D BLKERR Q ;
4235"RTN","C0XTEST",101,0)
4236 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
4237"RTN","C0XTEST",102,0)
4238 . I ZS="" D BLKERR Q ;
4239"RTN","C0XTEST",103,0)
4240 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
4241"RTN","C0XTEST",104,0)
4242 . I ZP="" D BLKERR Q ;
4243"RTN","C0XTEST",105,0)
4244 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
4245"RTN","C0XTEST",106,0)
4246 . I ZO="" D BLKERR Q ;
4247"RTN","C0XTEST",107,0)
4248 . S ZIEN=ZI+ZBASE ; the new ien
4249"RTN","C0XTEST",108,0)
4250 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
4251"RTN","C0XTEST",109,0)
4252 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
4253"RTN","C0XTEST",110,0)
4254 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
4255"RTN","C0XTEST",111,0)
4256 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
4257"RTN","C0XTEST",112,0)
4258 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
4259"RTN","C0XTEST",113,0)
4260 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
4261"RTN","C0XTEST",114,0)
4262 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
4263"RTN","C0XTEST",115,0)
4264 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
4265"RTN","C0XTEST",116,0)
4266 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
4267"RTN","C0XTEST",117,0)
4268 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
4269"RTN","C0XTEST",118,0)
4270 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
4271"RTN","C0XTEST",119,0)
4272 Q
4273"RTN","C0XTEST",120,0)
4274 ;
4275"RTN","C0XTEST",121,0)
4276BLKERR ;
4277"RTN","C0XTEST",122,0)
4278 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
4279"RTN","C0XTEST",123,0)
4280 B
4281"RTN","C0XTEST",124,0)
4282 Q
4283"RTN","C0XTEST",125,0)
4284 ;
4285"RTN","C0XTKSB")
42860^6^B17580555
4287"RTN","C0XTKSB",1,0)
4288C0XTESTKSB ; GPL - Fileman Triples bulk load tester ;11/6/11 17:05
4289"RTN","C0XTKSB",2,0)
4290 ; KSB - modified to fix a minor bug and to use;;;;;Build 9
4291"RTN","C0XTKSB",3,0)
4292 ; high resolution time if routines available ; 11/19/11 1410 EST
4293"RTN","C0XTKSB",4,0)
4294 ;;0.1;C0X;nopatch;noreleasedate;Build 1
4295"RTN","C0XTKSB",5,0)
4296 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4297"RTN","C0XTKSB",6,0)
4298 ;General Public License See attached copy of the License.
4299"RTN","C0XTKSB",7,0)
4300 ;
4301"RTN","C0XTKSB",8,0)
4302 ;This program is free software; you can redistribute it and/or modify
4303"RTN","C0XTKSB",9,0)
4304 ;it under the terms of the GNU General Public License as published by
4305"RTN","C0XTKSB",10,0)
4306 ;the Free Software Foundation; either version 2 of the License, or
4307"RTN","C0XTKSB",11,0)
4308 ;(at your option) any later version.
4309"RTN","C0XTKSB",12,0)
4310 ;
4311"RTN","C0XTKSB",13,0)
4312 ;This program is distributed in the hope that it will be useful,
4313"RTN","C0XTKSB",14,0)
4314 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4315"RTN","C0XTKSB",15,0)
4316 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4317"RTN","C0XTKSB",16,0)
4318 ;GNU General Public License for more details.
4319"RTN","C0XTKSB",17,0)
4320 ;
4321"RTN","C0XTKSB",18,0)
4322 ;You should have received a copy of the GNU General Public License along
4323"RTN","C0XTKSB",19,0)
4324 ;with this program; if not, write to the Free Software Foundation, Inc.,
4325"RTN","C0XTKSB",20,0)
4326 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4327"RTN","C0XTKSB",21,0)
4328 ;
4329"RTN","C0XTKSB",22,0)
4330 Q
4331"RTN","C0XTKSB",23,0)
4332 ;
4333"RTN","C0XTKSB",24,0)
4334EN ; run the test
4335"RTN","C0XTKSB",25,0)
4336 ;
4337"RTN","C0XTKSB",26,0)
4338 k C0XFDA ; clear the node variable
4339"RTN","C0XTKSB",27,0)
4340 s U="^" ; initialization - Bhaskar 20111119
4341"RTN","C0XTKSB",28,0)
4342 i '$d(^C0X(101,0)) d ; global doesn't exist
4343"RTN","C0XTKSB",29,0)
4344 . s ^C0X(101,0)="C0X TRIPLE^172.101^1^1"
4345"RTN","C0XTKSB",30,0)
4346 n zg
4347"RTN","C0XTKSB",31,0)
4348 S zg="_:G"_$$LKY9 ; all nodes are in the same graph
4349"RTN","C0XTKSB",32,0)
4350 n zi
4351"RTN","C0XTKSB",33,0)
4352 f zi=1:1:10000 d ; try a test of 10000 nodes
4353"RTN","C0XTKSB",34,0)
4354 . s C0XFDA(172.101,zi,.01)="N"_$$LKY17 ; node name
4355"RTN","C0XTKSB",35,0)
4356 . s C0XFDA(172.101,zi,.02)=zg
4357"RTN","C0XTKSB",36,0)
4358 . s C0XFDA(172.101,zi,.03)=$R(100000)
4359"RTN","C0XTKSB",37,0)
4360 . s C0XFDA(172.101,zi,.04)=$R(100000)
4361"RTN","C0XTKSB",38,0)
4362 . s C0XFDA(172.101,zi,.05)=$R(100000)
4363"RTN","C0XTKSB",39,0)
4364 S C0XST=$$H ; start of the insertion test
4365"RTN","C0XTKSB",40,0)
4366 W !,"INSERTION STARTS AT ",$ZDATE(C0XST,"YEAR-MM-DD:24:60:SS"),!
4367"RTN","C0XTKSB",41,0)
4368 d BULKLOAD(.C0XFDA)
4369"RTN","C0XTKSB",42,0)
4370 s C0XEND=$$H ; end of the insertion test
4371"RTN","C0XTKSB",43,0)
4372 W !,"INSERTION ENDS AT ",$ZDATE(C0XEND,"YEAR-MM-DD:24:60:SS")
4373"RTN","C0XTKSB",44,0)
4374 S C0XDIFF=(86400*($P(C0XEND,",",1)-$P(C0XST,",",1)))+$P(C0XEND,",",2)-$P(C0XST,",",2)
4375"RTN","C0XTKSB",45,0)
4376 W !," ELAPSED TIME: ",C0XDIFF," SECONDS"
4377"RTN","C0XTKSB",46,0)
4378 W !
4379"RTN","C0XTKSB",47,0)
4380 W:C0XDIFF>0 " APPROXIMATELY ",$FN(10000/C0XDIFF,",",0)," NODES PER SECOND",!
4381"RTN","C0XTKSB",48,0)
4382 q
4383"RTN","C0XTKSB",49,0)
4384 ;
4385"RTN","C0XTKSB",50,0)
4386LKY9() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4387"RTN","C0XTKSB",51,0)
4388 ; UNIQUE NODE AND GRAPH NAMES
4389"RTN","C0XTKSB",52,0)
4390 N ZN,ZI
4391"RTN","C0XTKSB",53,0)
4392 S ZN=""
4393"RTN","C0XTKSB",54,0)
4394 F ZI=1:1:9 D ;
4395"RTN","C0XTKSB",55,0)
4396 . S ZN=ZN_$R(10)
4397"RTN","C0XTKSB",56,0)
4398 Q ZN
4399"RTN","C0XTKSB",57,0)
4400 ;
4401"RTN","C0XTKSB",58,0)
4402LKY17() ;EXTRINIC THAT RETURNS A RANDOM 9 DIGIT NUMBER. USED FOR GENERATING
4403"RTN","C0XTKSB",59,0)
4404 ; UNIQUE NODE AND GRAPH NAMES
4405"RTN","C0XTKSB",60,0)
4406 N ZN,ZI
4407"RTN","C0XTKSB",61,0)
4408 S ZN=""
4409"RTN","C0XTKSB",62,0)
4410 F ZI=1:1:17 D ;
4411"RTN","C0XTKSB",63,0)
4412 . S ZN=ZN_$R(10)
4413"RTN","C0XTKSB",64,0)
4414 Q ZN
4415"RTN","C0XTKSB",65,0)
4416 ;
4417"RTN","C0XTKSB",66,0)
4418BULKLOAD(ZBFDA) ; BULK LOADER FOR LOADING TRIPLES INTO FILE 172.101
4419"RTN","C0XTKSB",67,0)
4420 ; USING GLOBAL SETS INSTEAD OF UPDATE^DIE
4421"RTN","C0XTKSB",68,0)
4422 ; QUITS IF FILE IS NOT 172.101
4423"RTN","C0XTKSB",69,0)
4424 ; EXPECTS AN FDA WITHOUT STRINGS FOR THE IENS, STARTING AT 1
4425"RTN","C0XTKSB",70,0)
4426 ; QUITS IF FIRST ENTRY IS NOT IENS 1
4427"RTN","C0XTKSB",71,0)
4428 ; ASSUMES THAT THE LAST IENS IS THE COUNT OF ENTRIES
4429"RTN","C0XTKSB",72,0)
4430 ; ZBFDA IS PASSED BY REFERENCE
4431"RTN","C0XTKSB",73,0)
4432 ;
4433"RTN","C0XTKSB",74,0)
4434 ; -- reserves a block of iens from file 172.101 by locking the zero node
4435"RTN","C0XTKSB",75,0)
4436 ; -- ^C0X(101,0) and adding the count of entries to piece 2 and 3
4437"RTN","C0XTKSB",76,0)
4438 ; -- then unlocking to minimize the duration of the lock
4439"RTN","C0XTKSB",77,0)
4440 ;
4441"RTN","C0XTKSB",78,0)
4442 W !,"USING BULKLOAD"
4443"RTN","C0XTKSB",79,0)
4444 I '$D(ZBFDA) Q ; EMPTY FDA
4445"RTN","C0XTKSB",80,0)
4446 I $O(ZBFDA(""))'=172.101 Q ; WRONG FILE
4447"RTN","C0XTKSB",81,0)
4448 N ZCNT,ZP3,ZP4
4449"RTN","C0XTKSB",82,0)
4450 ; -- find the number of nodes to insert
4451"RTN","C0XTKSB",83,0)
4452 S ZCNT=$O(ZBFDA(172.101,""),-1)
4453"RTN","C0XTKSB",84,0)
4454 I ZCNT="" D Q ;
4455"RTN","C0XTKSB",85,0)
4456 . W !,"ERROR IN BULK LOAD - INVALID NODE COUNT"
4457"RTN","C0XTKSB",86,0)
4458 . B
4459"RTN","C0XTKSB",87,0)
4460 ; -- lock the zero node and reserve a block of iens to insert
4461"RTN","C0XTKSB",88,0)
4462 W !,"LOCKING ZERO NODE"
4463"RTN","C0XTKSB",89,0)
4464 LOCK +^C0X(101,0)
4465"RTN","C0XTKSB",90,0)
4466 S ZP3=$P(^C0X(101,0),U,3)
4467"RTN","C0XTKSB",91,0)
4468 S ZP4=$P(^C0X(101,0),U,4)
4469"RTN","C0XTKSB",92,0)
4470 S $P(^C0X(101,0),U,3)=ZP3+ZCNT+1
4471"RTN","C0XTKSB",93,0)
4472 S $P(^C0X(101,0),U,4)=ZP4+ZCNT+1
4473"RTN","C0XTKSB",94,0)
4474 LOCK -^C0X(101,0)
4475"RTN","C0XTKSB",95,0)
4476 N ZI,ZN,ZG,ZS,ZP,ZO,ZIEN,ZBASE
4477"RTN","C0XTKSB",96,0)
4478 S ZBASE=ZP3 ; the last ien in the file
4479"RTN","C0XTKSB",97,0)
4480 W !,"ZERO NODE UNLOCKED, IENS RESERVED=",ZCNT
4481"RTN","C0XTKSB",98,0)
4482 W !,$ZDATE($$H,"YEAR-MM-DD:24:60:SS")
4483"RTN","C0XTKSB",99,0)
4484 S ZI=""
4485"RTN","C0XTKSB",100,0)
4486 F S ZI=$O(ZBFDA(172.101,ZI)) Q:ZI="" D ;
4487"RTN","C0XTKSB",101,0)
4488 . S ZN=$G(ZBFDA(172.101,ZI,.01)) ; node name
4489"RTN","C0XTKSB",102,0)
4490 . I ZN="" D BLKERR Q ;
4491"RTN","C0XTKSB",103,0)
4492 . S ZG=$G(ZBFDA(172.101,ZI,.02)) ; graph pointer
4493"RTN","C0XTKSB",104,0)
4494 . I ZG="" D BLKERR Q ;
4495"RTN","C0XTKSB",105,0)
4496 . S ZS=$G(ZBFDA(172.101,ZI,.03)) ; subject pointer
4497"RTN","C0XTKSB",106,0)
4498 . I ZS="" D BLKERR Q ;
4499"RTN","C0XTKSB",107,0)
4500 . S ZP=$G(ZBFDA(172.101,ZI,.04)) ; predicate pointer
4501"RTN","C0XTKSB",108,0)
4502 . I ZP="" D BLKERR Q ;
4503"RTN","C0XTKSB",109,0)
4504 . S ZO=$G(ZBFDA(172.101,ZI,.05)) ; object pointer
4505"RTN","C0XTKSB",110,0)
4506 . I ZO="" D BLKERR Q ;
4507"RTN","C0XTKSB",111,0)
4508 . S ZIEN=ZI+ZBASE ; the new ien
4509"RTN","C0XTKSB",112,0)
4510 . S ^C0X(101,ZIEN,0)=ZN_U_ZG_U_ZS_U_ZP_U_ZO ; set the zero node
4511"RTN","C0XTKSB",113,0)
4512 . S ^C0X(101,"B",ZN,ZIEN)="" ; the B index
4513"RTN","C0XTKSB",114,0)
4514 . S ^C0X(101,"G",ZG,ZIEN)="" ; the G for Graph index
4515"RTN","C0XTKSB",115,0)
4516 . S ^C0X(101,"SPO",ZS,ZP,ZO)=""
4517"RTN","C0XTKSB",116,0)
4518 . S ^C0X(101,"SOP",ZS,ZO,ZP)=""
4519"RTN","C0XTKSB",117,0)
4520 . S ^C0X(101,"OPS",ZO,ZP,ZS)=""
4521"RTN","C0XTKSB",118,0)
4522 . S ^C0X(101,"OSP",ZO,ZS,ZP)=""
4523"RTN","C0XTKSB",119,0)
4524 . S ^C0X(101,"GOPS",ZG,ZO,ZP,ZS)=""
4525"RTN","C0XTKSB",120,0)
4526 . S ^C0X(101,"GOSP",ZG,ZO,ZS,ZP)=""
4527"RTN","C0XTKSB",121,0)
4528 . S ^C0X(101,"GPSO",ZG,ZP,ZS,ZO)=""
4529"RTN","C0XTKSB",122,0)
4530 . S ^C0X(101,"GSPO",ZG,ZS,ZP,ZO)=""
4531"RTN","C0XTKSB",123,0)
4532 Q
4533"RTN","C0XTKSB",124,0)
4534 ;
4535"RTN","C0XTKSB",125,0)
4536BLKERR ;
4537"RTN","C0XTKSB",126,0)
4538 W !,"ERROR IN BULK LOAD",! ZWR ZBFDA(ZI)
4539"RTN","C0XTKSB",127,0)
4540 B
4541"RTN","C0XTKSB",128,0)
4542 Q
4543"RTN","C0XTKSB",129,0)
4544 ;
4545"RTN","C0XTKSB",130,0)
4546H()
4547"RTN","C0XTKSB",131,0)
4548 quit:$length($ztrnlnm("GTMXC_posix"))&$length($text(zhorolog^%POSIX)) $$zhorolog^%POSIX quit $horolog
4549"RTN","C0XUTIL")
45500^5^B11155926
4551"RTN","C0XUTIL",1,0)
4552C0XUTIL ; GPL - Fileman Triples utilities ;11/07/11 17:05
4553"RTN","C0XUTIL",2,0)
4554 ;;0.1;C0X;nopatch;noreleasedate;Build 9
4555"RTN","C0XUTIL",3,0)
4556 ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
4557"RTN","C0XUTIL",4,0)
4558 ;General Public License See attached copy of the License.
4559"RTN","C0XUTIL",5,0)
4560 ;
4561"RTN","C0XUTIL",6,0)
4562 ;This program is free software; you can redistribute it and/or modify
4563"RTN","C0XUTIL",7,0)
4564 ;it under the terms of the GNU General Public License as published by
4565"RTN","C0XUTIL",8,0)
4566 ;the Free Software Foundation; either version 2 of the License, or
4567"RTN","C0XUTIL",9,0)
4568 ;(at your option) any later version.
4569"RTN","C0XUTIL",10,0)
4570 ;
4571"RTN","C0XUTIL",11,0)
4572 ;This program is distributed in the hope that it will be useful,
4573"RTN","C0XUTIL",12,0)
4574 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
4575"RTN","C0XUTIL",13,0)
4576 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4577"RTN","C0XUTIL",14,0)
4578 ;GNU General Public License for more details.
4579"RTN","C0XUTIL",15,0)
4580 ;
4581"RTN","C0XUTIL",16,0)
4582 ;You should have received a copy of the GNU General Public License along
4583"RTN","C0XUTIL",17,0)
4584 ;with this program; if not, write to the Free Software Foundation, Inc.,
4585"RTN","C0XUTIL",18,0)
4586 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4587"RTN","C0XUTIL",19,0)
4588 ;
4589"RTN","C0XUTIL",20,0)
4590 Q
4591"RTN","C0XUTIL",21,0)
4592 ;
4593"RTN","C0XUTIL",22,0)
4594NSP(ZX) ; OUTPUT TRANSFORM EXTRINSIC
4595"RTN","C0XUTIL",23,0)
4596 ;
4597"RTN","C0XUTIL",24,0)
4598 N ZR
4599"RTN","C0XUTIL",25,0)
4600 ; I WOULD REALLY LIKE TO NOT HAVE THE FILE NUMBER HARD CODED HERE
4601"RTN","C0XUTIL",26,0)
4602 ; ANYONE KNOW HOW I COULD DO THAT? :) GPL
4603"RTN","C0XUTIL",27,0)
4604 S ZR=$$GET1^DIQ(172.201,ZX_",",.01)
4605"RTN","C0XUTIL",28,0)
4606 I '$D(C0XNSP) S C0XNSP=1 ; DEFAULT ON
4607"RTN","C0XUTIL",29,0)
4608 I C0XNSP=0 Q ZR ; SWITCHED OFF
4609"RTN","C0XUTIL",30,0)
4610 I '$D(C0XVOC) D VOCINIT ; INITIALIZE THE VOCABULARIES
4611"RTN","C0XUTIL",31,0)
4612 N ZI,ZJ,ZK S ZI=""
4613"RTN","C0XUTIL",32,0)
4614 N DONE S DONE=0
4615"RTN","C0XUTIL",33,0)
4616 F S ZI=$O(C0XVOC(ZI)) Q:(DONE=1)!(ZI="") D ;
4617"RTN","C0XUTIL",34,0)
4618 . ;W !,ZI
4619"RTN","C0XUTIL",35,0)
4620 . S ZJ=C0XVOC(ZI)
4621"RTN","C0XUTIL",36,0)
4622 . S ZK=$P(ZR,ZJ,2)
4623"RTN","C0XUTIL",37,0)
4624 . ;W !,"ZK=",ZK
4625"RTN","C0XUTIL",38,0)
4626 . I ZK'="" D ; BINGO
4627"RTN","C0XUTIL",39,0)
4628 . . S ZR=ZI_":"_ZK
4629"RTN","C0XUTIL",40,0)
4630 . . S DONE=1
4631"RTN","C0XUTIL",41,0)
4632 Q ZR
4633"RTN","C0XUTIL",42,0)
4634 ;
4635"RTN","C0XUTIL",43,0)
4636VOCINIT ; INITIALIZE VOCABULARIES
4637"RTN","C0XUTIL",44,0)
4638 S C0XVOC("dcterms")="http://purl.org/dc/terms/"
4639"RTN","C0XUTIL",45,0)
4640 S C0XVOC("rdf")="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4641"RTN","C0XUTIL",46,0)
4642 S C0XVOC("sp")="http://smartplatforms.org/terms#"
4643"RTN","C0XUTIL",47,0)
4644 S C0XVOC("qds")="http://cms.gov/pqri/qds/"
4645"RTN","C0XUTIL",48,0)
4646 S C0XVOC("smart")="http://sandbox-api.smartplatforms.org/records/"
4647"RTN","C0XUTIL",49,0)
4648 S C0XVOC("snomed")="http://purl.bioontology.org/ontology/SNOMEDCT/"
4649"RTN","C0XUTIL",50,0)
4650 S C0XVOC("rxnorm")="http://purl.bioontology.org/ontology/RXNORM/"
4651"RTN","C0XUTIL",51,0)
4652 S C0XVOC("loinc")="http://purl.bioontology.org/ontology/LNC/"
4653"RTN","C0XUTIL",52,0)
4654 S C0XVOC("file")="/home/glilly/fmts/trunk/samples/"
4655"RTN","C0XUTIL",53,0)
4656 S C0XVOC("foaf")="http://xmlns.com/foaf/0.1/"
4657"RTN","C0XUTIL",54,0)
4658 S C0XVOC("skos")="http://www.w3.org/2004/02/skos/core#"
4659"RTN","C0XUTIL",55,0)
4660 S C0XVOC("gpl")="http://georgetriples.org/"
4661"RTN","C0XUTIL",56,0)
4662 S C0XVOC("cg")="http://datasets.caregraf.org/"
4663"RTN","C0XUTIL",57,0)
4664 S C0XVOC("mv")="http://metavista.name/foundation#"
4665"RTN","C0XUTIL",58,0)
4666 S C0XVOC("rdfs")="http://www.w3.org/2000/01/rdf-schema#"
4667"RTN","C0XUTIL",59,0)
4668 S C0XVOC("vistaSmart")="https://smart2.vistaewd.net/vista/smart/records/"
4669"RTN","C0XUTIL",60,0)
4670 S C0XVOC("vmu")="http://vista.org/mu/"
4671"RTN","C0XUTIL",61,0)
4672 S C0XVOC("vq")="http://vista.org/quality/"
4673"RTN","C0XUTIL",62,0)
4674 S C0XVOC("nodeID")="iDPsDPss"
4675"RTN","C0XUTIL",63,0)
4676 S C0XVOC("fmts")="http://glilly.net/fmts#"
4677"RTN","C0XUTIL",64,0)
4678 S C0XVOC("oro")="http://oro.com/vista/sage" ;change to get URL from system
4679"RTN","C0XUTIL",65,0)
4680 S C0XVOC("sage")="http://oro.com/sage/schema#"
4681"RTN","C0XUTIL",66,0)
4682 S C0XVOC("v")="http://www.w3.org/2006/vcard/ns#"
4683"RTN","C0XUTIL",67,0)
4684 Q
4685"RTN","C0XUTIL",68,0)
4686 ;
4687"RTN","C0XUTIL",69,0)
4688EXT(C0XIN) ; EXTRINSIC WHICH EXPANDS NAMESPACES
4689"RTN","C0XUTIL",70,0)
4690 ; SO skos:xxx would return http://www.w3.org/2004/02/skos/core#xxx
4691"RTN","C0XUTIL",71,0)
4692 N C0XPRE
4693"RTN","C0XUTIL",72,0)
4694 S C0XPRE=C0XIN
4695"RTN","C0XUTIL",73,0)
4696 I '$D(C0XVOC) D VOCINIT ; INITIALIZE NAME SPACE TABLE
4697"RTN","C0XUTIL",74,0)
4698 I C0XPRE[":" D ; expand using vocabulary
4699"RTN","C0XUTIL",75,0)
4700 . N ZB,ZA
4701"RTN","C0XUTIL",76,0)
4702 . S ZB=$P(C0XPRE,":",1)
4703"RTN","C0XUTIL",77,0)
4704 . S ZA=$P(C0XPRE,":",2)
4705"RTN","C0XUTIL",78,0)
4706 . I $G(C0XVOC(ZB))'="" D ;
4707"RTN","C0XUTIL",79,0)
4708 . . S C0XPRE=C0XVOC(ZB)_ZA ; expanded
4709"RTN","C0XUTIL",80,0)
4710 Q C0XPRE
4711"RTN","C0XUTIL",81,0)
4712 ;
4713"SEC","^DIC",172.101,172.101,0,"AUDIT")
4714@
4715"SEC","^DIC",172.101,172.101,0,"DD")
4716@
4717"SEC","^DIC",172.101,172.101,0,"DEL")
4718@
4719"SEC","^DIC",172.101,172.101,0,"LAYGO")
4720@
4721"SEC","^DIC",172.101,172.101,0,"RD")
4722@
4723"SEC","^DIC",172.101,172.101,0,"WR")
4724@
4725"SEC","^DIC",172.201,172.201,0,"AUDIT")
4726@
4727"SEC","^DIC",172.201,172.201,0,"DD")
4728@
4729"SEC","^DIC",172.201,172.201,0,"DEL")
4730@
4731"SEC","^DIC",172.201,172.201,0,"LAYGO")
4732@
4733"SEC","^DIC",172.201,172.201,0,"RD")
4734@
4735"SEC","^DIC",172.201,172.201,0,"WR")
4736@
4737"VER")
47388.0^22.0
4739"^DD",172.101,172.101,0)
4740FIELD^^.05^6
4741"^DD",172.101,172.101,0,"DDA")
4742N
4743"^DD",172.101,172.101,0,"DT")
47443111013
4745"^DD",172.101,172.101,0,"ID",.02)
4746S %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
4747"^DD",172.101,172.101,0,"ID",.03)
4748S %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
4749"^DD",172.101,172.101,0,"ID",.04)
4750S %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
4751"^DD",172.101,172.101,0,"ID",.05)
4752S %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
4753"^DD",172.101,172.101,0,"IX","B",172.101,.01)
4754
4755"^DD",172.101,172.101,0,"NM","C0X TRIPLE")
4756
4757"^DD",172.101,172.101,.01,0)
4758NODEID^RF^^0;1^K:$L(X)>30!($L(X)<3)!'(X'?1P.E) X
4759"^DD",172.101,172.101,.01,.1)
4760TRIPLE NODE ID
4761"^DD",172.101,172.101,.01,1,0)
4762^.1
4763"^DD",172.101,172.101,.01,1,1,0)
4764172.101^B
4765"^DD",172.101,172.101,.01,1,1,1)
4766S ^C0X(101,"B",$E(X,1,30),DA)=""
4767"^DD",172.101,172.101,.01,1,1,2)
4768K ^C0X(101,"B",$E(X,1,30),DA)
4769"^DD",172.101,172.101,.01,3)
4770Answer must be 3-30 characters in length
4771"^DD",172.101,172.101,.01,"DT")
47723111013
4773"^DD",172.101,172.101,.02,0)
4774GRAPH^P172.201O^C0X(201,^0;2^Q
4775"^DD",172.101,172.101,.02,.1)
4776TRIPLE GRAPH
4777"^DD",172.101,172.101,.02,2)
4778S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4779"^DD",172.101,172.101,.02,2.1)
4780S Y=$$NSP^C0XUTIL(Y)
4781"^DD",172.101,172.101,.02,3)
4782Answer must be 3-240 characters in length
4783"^DD",172.101,172.101,.02,"DT")
47843111207
4785"^DD",172.101,172.101,.03,0)
4786SUBJECT^P172.201O^C0X(201,^0;3^Q
4787"^DD",172.101,172.101,.03,.1)
4788TRIPLE SUBJECT
4789"^DD",172.101,172.101,.03,2)
4790S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4791"^DD",172.101,172.101,.03,2.1)
4792S Y=$$NSP^C0XUTIL(Y)
4793"^DD",172.101,172.101,.03,"DT")
47943111207
4795"^DD",172.101,172.101,.04,0)
4796PREDICATE^P172.201O^C0X(201,^0;4^Q
4797"^DD",172.101,172.101,.04,.1)
4798TRIPLE PREDICATE
4799"^DD",172.101,172.101,.04,2)
4800S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4801"^DD",172.101,172.101,.04,2.1)
4802S Y=$$NSP^C0XUTIL(Y)
4803"^DD",172.101,172.101,.04,"DT")
48043111207
4805"^DD",172.101,172.101,.05,0)
4806OBJECT^P172.201O^C0X(201,^0;5^Q
4807"^DD",172.101,172.101,.05,.1)
4808TRIPLE OBJECT
4809"^DD",172.101,172.101,.05,2)
4810S Y(0)=Y S Y=$$NSP^C0XUTIL(Y)
4811"^DD",172.101,172.101,.05,2.1)
4812S Y=$$NSP^C0XUTIL(Y)
4813"^DD",172.101,172.101,.05,"DT")
48143111207
4815"^DD",172.101,172.101,1,0)
4816EVENTS^172.1011V^^1;0
4817"^DD",172.101,172.1011,0)
4818EVENTS SUB-FIELD^^.01^1
4819"^DD",172.101,172.1011,0,"DT")
48203110510
4821"^DD",172.101,172.1011,0,"IX","B",172.1011,.01)
4822
4823"^DD",172.101,172.1011,0,"NM","EVENTS")
4824
4825"^DD",172.101,172.1011,0,"UP")
4826172.101
4827"^DD",172.101,172.1011,.01,0)
4828EVENTS^V^^0;1^
4829"^DD",172.101,172.1011,.01,.1)
4830PATIENT CLINICAL EVENTS
4831"^DD",172.101,172.1011,.01,1,0)
4832^.1
4833"^DD",172.101,172.1011,.01,1,1,0)
4834172.1011^B
4835"^DD",172.101,172.1011,.01,1,1,1)
4836S ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)=""
4837"^DD",172.101,172.1011,.01,1,1,2)
4838K ^C0CXREF(DA(1),1,"B",$E(X,1,30),DA)
4839"^DD",172.101,172.1011,.01,1,1,3)
4840Required for Variable Pointer
4841"^DD",172.101,172.1011,.01,"DT")
48423110510
4843"^DD",172.101,172.1011,.01,"V",0)
4844^.12P^^3
4845"^DD",172.101,172.1011,.01,"V",1,0)
484655^MEDICATIONS^1^M^n^y
4847"^DD",172.101,172.1011,.01,"V",1,1)
4848
4849"^DD",172.101,172.1011,.01,"V",1,2)
4850
4851"^DD",172.101,172.1011,.01,"V",2,0)
48529000011^PATIENT PROBLEM^2^P^n^y
4853"^DD",172.101,172.1011,.01,"V",2,1)
4854
4855"^DD",172.101,172.1011,.01,"V",2,2)
4856
4857"^DD",172.101,172.1011,.01,"V",3,0)
485869^PATIENT LAB ORDER^3^L^n^y
4859"^DD",172.201,172.201,0)
4860FIELD^^1^2
4861"^DD",172.201,172.201,0,"DDA")
4862N
4863"^DD",172.201,172.201,0,"DT")
48643111013
4865"^DD",172.201,172.201,0,"NM","C0X STRING")
4866
4867"^DD",172.201,172.201,0,"PT",172.101,.02)
4868
4869"^DD",172.201,172.201,0,"PT",172.101,.03)
4870
4871"^DD",172.201,172.201,0,"PT",172.101,.04)
4872
4873"^DD",172.201,172.201,0,"PT",172.101,.05)
4874
4875"^DD",172.201,172.201,.01,0)
4876STRING^RF^^0;1^K:$L(X)>240!($L(X)<1)!'(X=X) X
4877"^DD",172.201,172.201,.01,.1)
4878TRIPLE STRING
4879"^DD",172.201,172.201,.01,1,0)
4880^.1^^0
4881"^DD",172.201,172.201,.01,3)
4882Answer must be 1-240 characters in length
4883"^DD",172.201,172.201,.01,"DT")
48843111028
4885"^DD",172.201,172.201,1,0)
4886TEXT^172.2011^^1;0
4887"^DD",172.201,172.2011,0)
4888TEXT SUB-FIELD^^.01^1
4889"^DD",172.201,172.2011,0,"DT")
48903111013
4891"^DD",172.201,172.2011,0,"NM","TEXT")
4892
4893"^DD",172.201,172.2011,0,"UP")
4894172.201
4895"^DD",172.201,172.2011,.01,0)
4896TEXT^Wx^^0;1
4897"^DD",172.201,172.2011,.01,.1)
4898LONGER TEXT
4899"^DD",172.201,172.2011,.01,"DT")
49003111013
4901"^DIC",172.101,172.101,0)
4902C0X TRIPLE^172.101
4903"^DIC",172.101,172.101,0,"GL")
4904^C0X(101,
4905"^DIC",172.101,"B","C0X TRIPLE",172.101)
4906
4907"^DIC",172.201,172.201,0)
4908C0X STRING^172.201
4909"^DIC",172.201,172.201,0,"GL")
4910^C0X(201,
4911"^DIC",172.201,"B","C0X STRING",172.201)
4912
4913**END**
4914**END**
Note: See TracBrowser for help on using the repository browser.