Index: fmts/trunk/p/C0XF2N.m
===================================================================
--- fmts/trunk/p/C0XF2N.m	(revision 1353)
+++ fmts/trunk/p/C0XF2N.m	(revision 1354)
@@ -41,4 +41,5 @@
  S @ZFARY@("BLKLOAD")=1 ; this file supports block load
  S @ZFARY@("FMTSSTYLE")="F2N" ; fileman style
+ S @ZFARY@("REPLYFMT")="JSON"
  D USEFARY(ZFARY)
  Q
Index: fmts/trunk/p/C0XGET1.m
===================================================================
--- fmts/trunk/p/C0XGET1.m	(revision 1353)
+++ fmts/trunk/p/C0XGET1.m	(revision 1354)
@@ -114,6 +114,5 @@
  W !,"s:",zsub," p:",zpred," o:",zobj
  d trip(.tmprtn,zsub,zpred,zobj,zgraph,fary)
- n zzz,zrsub,zrpred,zrobj,zgraph,zcnt
- s zcnt=1
+ n zzz,zrsub,zrpred,zrobj,zgraph,zcnt,zrary
  s zzz=""
  f  s zzz=$o(tmprtn(zzz)) q:zzz=""  d  ;
@@ -122,6 +121,32 @@
  . s zrobj=$$GET1^DIQ(C0XTFN,zzz_",",.05,"E")
  . s zrgraph=$$GET1^DIQ(C0XTFN,zzz_",",.02,"E")
- . s triplertn(zcnt)=zrsub_"^"_zrpred_"^"_zrobj ; _"^"_zrgraph
- . s zcnt=zcnt+1
+ . s zrary(zrsub,zrpred_"^"_zrobj)=""
+ ;b
+ ;
+ i REPLYFMT="JSON" d jsonout(.triplertn,.zrary) q  ; what follows is 'else'
+ ;
+ ; if no reply format is found we just output an array of triples
+ ;
+ s zrsub=""
+ s zcnt=1
+ f  s zrsub=$o(zrary(zrsub)) q:zrsub=""  d  ; organized by subject
+ . s zzz=""
+ . f  s zzz=$o(zrary(zrsub,zzz)) q:zzz=""  d  ; pred and obj
+ . . s triplertn(zcnt)=zrsub_"^"_zzz
+ . . s zcnt=zcnt+1
+ q
+ ;
+jsonout(jout,zary) ; 
+ d REPLYSTART^FMQLJSON("jout")
+ d LISTSTART^FMQLJSON("jout","results")
+ n zi s zi=""
+ f  s zi=$o(zary(zi)) q:zi=""  d  ; for each subject
+ . n zii s zii=""
+ . D DICTSTART^FMQLJSON("jout",zi)
+ . f  s zii=$o(zary(zi,zii)) q:zii=""  d  ; for each pred^obj pair
+ . . d DASSERT^FMQLJSON("jout",$p(zii,"^",1),$p(zii,"^",2))
+ . D DICTEND^FMQLJSON("jout")
+ d LISTEND^FMQLJSON("jout")
+ d REPLYEND^FMQLJSON("jout")
  q
  ;
