Changeset 1349 for fmts/trunk/p/C0XGET1.m
- Timestamp:
- Jan 27, 2012, 10:51:57 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fmts/trunk/p/C0XGET1.m
r1343 r1349 26 26 Q 27 27 ; 28 LSGRFS(RTN,C0XFARY) ; LIST ALL GRAPHS28 GRAPHS(RTN,C0XFARY) ; LIST ALL GRAPHS 29 29 ; 30 30 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY") … … 57 57 ; 58 58 NXT(ZRTN) ;EXTRINSIC FOR THE NEXT NODE IN ARRAY ZRTN, PASSED BY REF 59 I '$D(ZRTN) S ZRTN="" 59 60 Q $O(ZRTN(""),-1)+1 60 61 ; … … 62 63 ; 63 64 I '$D(C0XFARY) D INITFARY^C0XF2N("C0XFARY") 65 I '$D(ZRTN) S ZRTN="" 64 66 N ZI,ZN S ZI="" 65 F S ZI=$O(@C0XTN@("GS O",ZG,ZI)) Q:ZI="" D ;66 . S ZRTN($$NXT( ZRTN),"S")=$$STR(ZI)67 F S ZI=$O(@C0XTN@("GSPO",ZG,ZI)) Q:ZI="" D ; 68 . S ZRTN($$NXT(.ZRTN),"S")=$$STR(ZI) 67 69 Q 68 70 ; 71 triples(triplertn,sub,pred,obj,graph,fary) ; returns triples 72 I '$D(fary) D ; 73 . D INITFARY^C0XF2N("C0XFARY") 74 . S fary="C0XFARY" 75 D USEFARY^C0XF2N(fary) 76 k triplertn ; start with a clean return 77 n zsub,zpred,zobj,zgraph,tmprtn 78 s zsub=$$IENOF^C0XF2N($$EXT^C0XUTIL($g(sub)),fary) ; ien of subject 79 s zpred=$$IENOF^C0XF2N($$EXT^C0XUTIL($g(pred)),fary) ; ien of predicate 80 s zobj=$$IENOF^C0XF2N($$EXT^C0XUTIL($g(obj)),fary) ; ien of object 81 s zgraph=$$IENOF^C0XF2N($g(graph),fary) ; ien of graph 82 W !,"s:",zsub," p:",zpred," o:",zobj 83 d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary) 84 n zzz,zrsub,zrpred,zrobj,zgraph 85 s zzz="" 86 f s zzz=$o(tmprtn(zzz)) q:zzz="" d ; 87 . s zrsub=$$GET1^DIQ(C0XTFN,zzz_",",.03,"E") 88 . s zrpred=$$GET1^DIQ(C0XTFN,zzz_",",.04,"E") 89 . s zrobj=$$GET1^DIQ(C0XTFN,zzz_",",.05,"E") 90 . s zrgraph=$$GET1^DIQ(C0XTFN,zzz_",",.02,"E") 91 . s triplertn(zzz)=zrsub_"^"_zrpred_"^"_zrobj ; _"^"_zrgraph 92 q 93 ; 94 trip(triprtn,nsub,npred,nobj,ngraph,fary) ; returns triples iens 95 ; nsub,npred,nobj are all optional 96 ; graf is also optional, and will limit the search to a particular ngraph 97 ; fary is which triple store (not implemented yet) 98 n c0xflag,zi,zx,zt 99 s zt=$na(^C0X(101)) ; 100 n zf1,zf2,zf3 101 s zf1=$s($g(nsub)="":0,1:1) 102 s zf2=$s($g(npred)="":0,1:1) 103 s zf3=$s($g(nobj)="":0,1:1) 104 s c0xflag="I"_zf1_zf2_zf3 105 n itbl 106 s itbl("I000","SPO")="d do3(.triprtn,zt,zi)" 107 s itbl("I001","OSP")="d do2(.triprtn,zt,zi,nobj)" 108 s itbl("I010","PSO")="d do2(.triprtn,zt,zi,npred)" 109 s itbl("I011","POS")="d do1(.triprtn,zt,zi,npred,nobj)" 110 s itbl("I100","SPO")="d do2(.triprtn,zt,zi,nsub)" 111 s itbl("I101","SOP")="d do1(.triprtn,zt,zi,nsub,nobj)" 112 s itbl("I110","SPO")="d do1(.triprtn,zt,zi,nsub,npred)" 113 s itbl("I111","SPO")="d do0(.triprtn,zt,zi,nsub,npred,nobj)" 114 s zi=$o(itbl(c0xflag,"")) 115 s zx=itbl(c0xflag,zi) ; executable instruction to run 116 i $g(ngraph)'="" s zi="G"_zi 117 w !,zx 118 x zx 119 q 120 ; 121 do0(dortn,zt,zi,z1,z2,z3) 122 ; looking for only one triple 123 n zz 124 s zz=$o(@zt@(zi,z1,z2,z3,"")) 125 i zz'="" s dortn(zz)="" 126 q 127 ; 128 do1(dortn,zt,zi,z1,z2) ; have 2, looking for one 129 n zr,zx1 130 s zx1="" 131 f s zx1=$o(@zt@(zi,z1,z2,zx1)) q:zx1="" d ; 132 . s zr=$o(@zt@(zi,z1,z2,zx1,"")) 133 . s dortn(zr)="" 134 q 135 ; 136 do2(dortn,zt,zi,z1) ; have one, looking for 2 137 n zr,zx1,zx2 138 s (zx1,zx2)="" 139 f s zx1=$o(@zt@(zi,z1,zx1)) q:zx1="" d ; 140 . f s zx2=$o(@zt@(zi,z1,zx1,zx2)) q:zx2="" d ; 141 . . s zr=$o(@zt@(zi,z1,zx1,zx2,"")) 142 . . s dortn(zr)="" 143 q 144 ; 145 do3(dortn,zt,zi) ; have none, looking for three 146 n zr,zx1,zx2,zx3 147 s (zx1,zx2,zx3)="" 148 f s zx1=$o(@zt@(zi,zx1)) q:zx1="" d ; 149 . f s zx2=$o(@zt@(zi,zx1,zx2)) q:zx2="" d ; 150 . . f s zx3=$o(@zt@(zi,zx1,zx2,zx3)) q:zx3="" d ; 151 . . . s zr=$o(@zt@(zi,zx1,zx2,zx3,"")) 152 . . . s dortn(zr)="" 153 q 154 ;
Note:
See TracChangeset
for help on using the changeset viewer.