It's an old standard but VRML is a nice, simple way to hierarchically define a scene with instancing, transforms, etc.
OpenSCAD is similar (and almost certainly better) but I know lots of packages can read VRML files already, and will probably "respect" its instancing concepts, which is handy for (say) generating a scene procedurally, and then importing it into Blender, while preserving the hierarchy.
X3D is supposedly the newer format to replace VRML.
Some neat OpenSCAD tips and tricks: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Tips_and_Tricks