public int[] getStats(boolean recursive){
		int[] stats=new int[6];
		HashSet<String> blankNodes=new HashSet<String>();
		HashSet<String> USUs=new HashSet<String>();
		//Triples
		if (!triples.isEmpty()){
			int[] r=getStatsTripleList(triples,blankNodes,USUs);
			for (int i=0; i<stats.length; i++){
				stats[i]+=r[i];
			}
		//MSGs
		}else if(msgs!=null){
			for (MSG msg:msgs){
				int[] r=getStatsTripleList(msg.getTriples(),blankNodes,USUs);
				for (int i=0; i<stats.length; i++){
					stats[i]+=r[i];
				}
			}
		}
		//Sub Graphs
		if (recursive){
			for (NamedGraph subG:children){
				int[] r=subG.getStats(recursive);
				for (int i=0; i<stats.length; i++){
					stats[i]+=r[i];
				}
			}
		}
		
		return stats;
	}