/// <summary> /// Gets the String representation of the Graph Pattern /// </summary> /// <returns></returns> public override string ToString() { StringBuilder output = new StringBuilder(); String indent = String.Empty; if (_isUnion) { indent = new String(' ', 2); for (int i = 0; i < _graphPatterns.Count; i++) { GraphPattern gp = _graphPatterns[i]; if (i > 0) { output.Append(indent); } String temp = gp.ToString(); if (!temp.Contains('\n')) { if (gp.HasModifier) { temp = "{ " + temp + " }"; } output.Append(temp + " "); } else { if (gp.HasModifier) { temp = "{\n" + temp + "\n}"; } output.AppendLineIndented(temp, 2); } if (i < _graphPatterns.Count - 1) { output.AppendLine(); output.Append(indent); output.AppendLine("UNION"); } } return(output.ToString()); } if (_isGraph || _isService) { if (_isGraph) { output.Append("GRAPH "); } else { output.Append("SERVICE "); if (_isSilent) { output.Append("SILENT "); } } switch (_graphSpecifier.TokenType) { case Token.QNAME: output.Append(_graphSpecifier.Value); break; case Token.URI: output.Append('<'); output.Append(_graphSpecifier.Value); output.Append('>'); break; case Token.VARIABLE: default: output.Append(_graphSpecifier.Value); break; } output.Append(" "); } else if (_isOptional) { if (_isExists) { output.Append("EXISTS "); } else if (_isNotExists) { output.Append("NOT EXISTS "); } else { output.Append("OPTIONAL "); } } else if (_isMinus) { output.Append("MINUS "); } output.Append("{ "); bool linebreaks = ((_triplePatterns.Count + _graphPatterns.Count + _unplacedAssignments.Count) > 1) || _isFiltered; if (linebreaks) { output.AppendLine(); indent = new String(' ', 2); } // Triple Patterns foreach (ITriplePattern tp in _triplePatterns) { String temp = tp.ToString(); output.Append(indent); if (temp.Contains('\n')) { String[] lines = temp.Split('\n'); for (int i = 0; i < lines.Length; i++) { if (i > 0) { output.Append(indent); } if (i > 0 && i < lines.Length - 1) { output.Append(' '); } output.Append(lines[i]); if (i < lines.Length - 1) { output.AppendLine(); } } if (tp.PatternType != TriplePatternType.SubQuery) { output.Append(" . "); } if (linebreaks) { output.AppendLine(); } } else { output.Append(temp + " . "); if (linebreaks) { output.AppendLine(); } } } // Unplaced Assignments foreach (IAssignmentPattern ap in _unplacedAssignments) { output.Append(ap.ToString()); if (linebreaks) { output.AppendLine(); } } // Inline Data if (HasInlineData) { output.Append(indent); String temp = _data.ToString(); if (!temp.Contains('\n')) { output.Append(temp + " "); } else { String[] lines = temp.Split('\n'); for (int i = 0; i < lines.Length; i++) { if (i > 0) { output.Append(indent); } output.Append(lines[i]); if (i < lines.Length - 1) { output.AppendLine(); } } } if (linebreaks) { output.AppendLine(); } } // Graph Patterns foreach (GraphPattern gp in _graphPatterns) { output.Append(indent); String temp = gp.ToString(); if (!temp.Contains('\n')) { output.Append(temp + " "); } else { String[] lines = temp.Split('\n'); for (int i = 0; i < lines.Length; i++) { if (i > 0) { output.Append(indent); } output.Append(lines[i]); if (i < lines.Length - 1) { output.AppendLine(); } } } if (linebreaks) { output.AppendLine(); } } // Filters if (_filter != null) { output.Append(indent); output.Append(_filter.ToString()); if (linebreaks) { output.AppendLine(); } } foreach (ISparqlFilter filter in _unplacedFilters) { output.Append(indent); output.Append(filter.ToString()); if (linebreaks) { output.AppendLine(); } } output.Append("}"); return(output.ToString()); }