Пример #1
0
        public void GenerateNTriples(StringBuilder output, DataRowAdaptor dataRow, List<string> excludeColumns, bool performEscape)
        {
            // replace normal variables
            var line = _pattern;
            foreach (var columnName in dataRow.ColumnNames)
            {
                var val = dataRow.GetValue(columnName);

                // need to make sure the value contains only valid XML chars
                // replace any non-valid xml characters.
                var xmlValidData = new StringBuilder();
                var chars = val.ToCharArray();
                foreach (var c in chars)
                {
                    xmlValidData.Append(GetValidXmlChar(c));
                }
                val = xmlValidData.ToString();

                var variablePosition = line.IndexOf("[[" + columnName + "]]");

                if (variablePosition >= 0 && string.IsNullOrEmpty(val))
                {
                    // if the variable exists but the value is null then skip
                    return;
                }
                else
                {
                    //replace value
                    if (IsValueLiteral("[[" + columnName + "]]"))
                    {
                        line = line.Replace("[[" + columnName + "]]", EscapeLiteral(val));
                    } else {
                        line = line.Replace("[[" + columnName + "]]", val);
                    }
                }
            }

            // if contains COLNAME repeat for all
            if (line.Contains("[[COLNAME]]") && line.Contains("[[VALUE]]"))
            {
                var gline = line;
                foreach (var columnName in dataRow.ColumnNames)
                {
                    // ignore excluded columns
                    if (excludeColumns!=null && excludeColumns.Contains(columnName)) continue;

                    var colVal = dataRow.GetValue(columnName);
                    if (string.IsNullOrEmpty(colVal))
                    {
                        continue;
                    }

                    var xmlValidData = new StringBuilder();
                    var chars = colVal.ToCharArray();
                    foreach (var c in chars)
                    {
                        xmlValidData.Append(GetValidXmlChar(c));
                    }
                    colVal = xmlValidData.ToString();

                    gline = gline.Replace("[[COLNAME]]", columnName);

                    if (IsValueLiteral("[[VALUE]]")) {
                        gline = gline.Replace("[[VALUE]]", EscapeLiteral(colVal.ToCharArray()));
                    } else {
                        gline = gline.Replace("[[VALUE]]", colVal);
                    }

                    // output
                    output.AppendLine(ApplyFunctions(gline, performEscape));

                    // reset gline
                    gline = line;
                }
            }
            else
            {
                // just add the line
                output.AppendLine(ApplyFunctions(line, performEscape));
            }
        }
Пример #2
0
        public void GenerateNTriples(StringBuilder output, DataRowAdaptor dataRow, List <string> excludeColumns, bool performEscape)
        {
            // replace normal variables
            var line = _pattern;

            foreach (var columnName in dataRow.ColumnNames)
            {
                var val = dataRow.GetValue(columnName);

                // need to make sure the value contains only valid XML chars
                // replace any non-valid xml characters.
                var xmlValidData = new StringBuilder();
                var chars        = val.ToCharArray();
                foreach (var c in chars)
                {
                    xmlValidData.Append(GetValidXmlChar(c));
                }
                val = xmlValidData.ToString();

                var variablePosition = line.IndexOf("[[" + columnName + "]]");

                if (variablePosition >= 0 && string.IsNullOrEmpty(val))
                {
                    // if the variable exists but the value is null then skip
                    return;
                }
                else
                {
                    //replace value
                    if (IsValueLiteral("[[" + columnName + "]]"))
                    {
                        line = line.Replace("[[" + columnName + "]]", EscapeLiteral(val));
                    }
                    else
                    {
                        line = line.Replace("[[" + columnName + "]]", val);
                    }
                }
            }

            // if contains COLNAME repeat for all
            if (line.Contains("[[COLNAME]]") && line.Contains("[[VALUE]]"))
            {
                var gline = line;
                foreach (var columnName in dataRow.ColumnNames)
                {
                    // ignore excluded columns
                    if (excludeColumns != null && excludeColumns.Contains(columnName))
                    {
                        continue;
                    }

                    var colVal = dataRow.GetValue(columnName);
                    if (string.IsNullOrEmpty(colVal))
                    {
                        continue;
                    }

                    var xmlValidData = new StringBuilder();
                    var chars        = colVal.ToCharArray();
                    foreach (var c in chars)
                    {
                        xmlValidData.Append(GetValidXmlChar(c));
                    }
                    colVal = xmlValidData.ToString();

                    gline = gline.Replace("[[COLNAME]]", columnName);

                    if (IsValueLiteral("[[VALUE]]"))
                    {
                        gline = gline.Replace("[[VALUE]]", EscapeLiteral(colVal.ToCharArray()));
                    }
                    else
                    {
                        gline = gline.Replace("[[VALUE]]", colVal);
                    }

                    // output
                    output.AppendLine(ApplyFunctions(gline, performEscape));

                    // reset gline
                    gline = line;
                }
            }
            else
            {
                // just add the line
                output.AppendLine(ApplyFunctions(line, performEscape));
            }
        }