public String getRuleAsString() {
		char LITERAL_SEPARATOR = DomConst.Literal.LITERAL_SEPARATOR;

		int c = 0;
		StringBuilder sb = new StringBuilder();
		if (ruleType == RuleType.FACT) {
			// do nothing for the body part
		} else {
			if (body.size() > 0) {
				c = 0;
				for (Literal literal : body) {
					if (c > 0) sb.append(LITERAL_SEPARATOR);
					sb.append(literal.toString());
					c++;
				}
				sb.append(" ");
			}
		}
		sb.append(ruleType.getSymbol());
		if (head.size() > 0) {
			sb.append(" ");
			c = 0;
			for (Literal literal : head) {
				if (c > 0) sb.append(LITERAL_SEPARATOR);
				sb.append(literal.toString());
				c++;
			}
		}
		return sb.toString();
	}