added a triples rpc
This commit is contained in:
parent
952d09df85
commit
603b541d5c
37
p/C0XGET1.m
37
p/C0XGET1.m
|
@ -68,6 +68,37 @@ SING(ZRTN,ZG) ; SUBJECTS IN GRAPH
|
||||||
. S ZRTN($$NXT(.ZRTN),"S")=$$STR(ZI)
|
. S ZRTN($$NXT(.ZRTN),"S")=$$STR(ZI)
|
||||||
Q
|
Q
|
||||||
;
|
;
|
||||||
|
qparse(qrtn,zquery) ; parses the query
|
||||||
|
; want this to be able to handle the WHERE clause of SPARQL eventually
|
||||||
|
;
|
||||||
|
n q1,q2,q3,qq
|
||||||
|
;s qq=$tr(zquery," ","^")
|
||||||
|
s qq=query ; really want to remove whitespace here
|
||||||
|
s q1=$p(qq," ",1)
|
||||||
|
i q1["?" s q1=""
|
||||||
|
s q2=$p(qq," ",2)
|
||||||
|
i q2["?" s q2=""
|
||||||
|
s q3=$p(qq," ",3)
|
||||||
|
i q3["?" s q3=""
|
||||||
|
s qrtn(1)=q1_"^"_q2_"^"_q3 ; more lines to come later
|
||||||
|
q
|
||||||
|
;
|
||||||
|
rpctrip(rtn,query,limit,offset) ; rpc to access triples with a query
|
||||||
|
;
|
||||||
|
n zoff,zlim,zcount,zq
|
||||||
|
i '$d(limit) s limit=250
|
||||||
|
i '$d(offset) s offset=0
|
||||||
|
d qparse(.zq,query) ; parse the query
|
||||||
|
n qsub,qpred,qobj,qtmp
|
||||||
|
W !,zq(1)
|
||||||
|
s qsub=$p(zq(1),"^",1)
|
||||||
|
s qpred=$p(zq(1),"^",2)
|
||||||
|
s qobj=$p(zq(1),"^",3)
|
||||||
|
d triples(.qtmp,qsub,qpred,qobj)
|
||||||
|
f zcount=offset+1:1:offset+limit q:'$d(qtmp(zcount)) d ;
|
||||||
|
. s rtn(zcount)=qtmp(zcount)
|
||||||
|
q
|
||||||
|
;
|
||||||
triples(triplertn,sub,pred,obj,graph,fary) ; returns triples
|
triples(triplertn,sub,pred,obj,graph,fary) ; returns triples
|
||||||
I '$D(fary) D ;
|
I '$D(fary) D ;
|
||||||
. D INITFARY^C0XF2N("C0XFARY")
|
. D INITFARY^C0XF2N("C0XFARY")
|
||||||
|
@ -81,14 +112,16 @@ triples(triplertn,sub,pred,obj,graph,fary) ; returns triples
|
||||||
s zgraph=$$IENOF^C0XF2N($g(graph),fary) ; ien of graph
|
s zgraph=$$IENOF^C0XF2N($g(graph),fary) ; ien of graph
|
||||||
W !,"s:",zsub," p:",zpred," o:",zobj
|
W !,"s:",zsub," p:",zpred," o:",zobj
|
||||||
d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary)
|
d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary)
|
||||||
n zzz,zrsub,zrpred,zrobj,zgraph
|
n zzz,zrsub,zrpred,zrobj,zgraph,zcnt
|
||||||
|
s zcnt=1
|
||||||
s zzz=""
|
s zzz=""
|
||||||
f s zzz=$o(tmprtn(zzz)) q:zzz="" d ;
|
f s zzz=$o(tmprtn(zzz)) q:zzz="" d ;
|
||||||
. s zrsub=$$GET1^DIQ(C0XTFN,zzz_",",.03,"E")
|
. s zrsub=$$GET1^DIQ(C0XTFN,zzz_",",.03,"E")
|
||||||
. s zrpred=$$GET1^DIQ(C0XTFN,zzz_",",.04,"E")
|
. s zrpred=$$GET1^DIQ(C0XTFN,zzz_",",.04,"E")
|
||||||
. s zrobj=$$GET1^DIQ(C0XTFN,zzz_",",.05,"E")
|
. s zrobj=$$GET1^DIQ(C0XTFN,zzz_",",.05,"E")
|
||||||
. s zrgraph=$$GET1^DIQ(C0XTFN,zzz_",",.02,"E")
|
. s zrgraph=$$GET1^DIQ(C0XTFN,zzz_",",.02,"E")
|
||||||
. s triplertn(zzz)=zrsub_"^"_zrpred_"^"_zrobj ; _"^"_zrgraph
|
. s triplertn(zcnt)=zrsub_"^"_zrpred_"^"_zrobj ; _"^"_zrgraph
|
||||||
|
. s zcnt=zcnt+1
|
||||||
q
|
q
|
||||||
;
|
;
|
||||||
trip(triprtn,nsub,npred,nobj,ngraph,fary) ; returns triples iens
|
trip(triprtn,nsub,npred,nobj,ngraph,fary) ; returns triples iens
|
||||||
|
|
Loading…
Reference in New Issue