public Relationship parseRelation(Id leftId, Id rightId, String relationExpr) {
        Relationship relationship = new Relationship(leftId, rightId);

        Map<String,String> styles = new HashMap<String, String>();
        Matcher matcher = META.matcher(relationExpr);
        if(matcher.find()) {
            parseStyles(styles, matcher.group(2));
            relationExpr = matcher.replaceFirst("");
        }
        relationship.usingStyles(styles);

        String[] leftAndRight;
        if(relationExpr.contains("-.-")) {
            relationship.usingLineStyle(Styles.LineStyle.Dashed);
            leftAndRight = relationExpr.split("[\\-]+(\\.[\\-]+)+");
        }
        else if(relationExpr.contains("...")) {
            relationship.usingLineStyle(Styles.LineStyle.Dotted);
            leftAndRight = relationExpr.split("[\\.]{3,}");
        }
        else if(relationExpr.contains("===")) {
            relationship.usingLineStyle(Styles.LineStyle.Bold);
            leftAndRight = relationExpr.split("[=]{3,}");
        }
        else {
            relationship.usingLineStyle(Styles.LineStyle.Solid);
            leftAndRight = relationExpr.split("[\\-]+");
        }

        if(leftAndRight.length>1) {
            parseRelationEndPoint(relationship.leftEndPoint(), leftAndRight[0]);
            parseRelationEndPoint(relationship.rightEndPoint(), leftAndRight[1]);
        }
        else if(leftAndRight.length>0) {
            parseRelationEndPoint(relationship.leftEndPoint(), leftAndRight[0]);
        }

        return relationship;
    }