PrintRDFPatternMember() static private method

Gives a formatted string representation of the given pattern member
static private PrintRDFPatternMember ( RDFPatternMember patternMember ) : String
patternMember RDFPatternMember
return String
示例#1
0
        /// <summary>
        /// Gives the string representation of the filter
        /// </summary>
        public override String ToString()
        {
            String leftValue  = RDFQueryUtilities.PrintRDFPatternMember(this.LeftMember);
            String rightValue = RDFQueryUtilities.PrintRDFPatternMember(this.RightMember);

            if (this.ComparisonFlavor == RDFQueryEnums.RDFComparisonFlavors.LessThan)
            {
                return("FILTER ( " + leftValue + " < " + rightValue + " )");
            }
            if (this.ComparisonFlavor == RDFQueryEnums.RDFComparisonFlavors.LessOrEqualThan)
            {
                return("FILTER ( " + leftValue + " <= " + rightValue + " )");
            }
            if (this.ComparisonFlavor == RDFQueryEnums.RDFComparisonFlavors.EqualTo)
            {
                return("FILTER ( " + leftValue + " = " + rightValue + " )");
            }
            if (this.ComparisonFlavor == RDFQueryEnums.RDFComparisonFlavors.NotEqualTo)
            {
                return("FILTER ( " + leftValue + " != " + rightValue + " )");
            }
            if (this.ComparisonFlavor == RDFQueryEnums.RDFComparisonFlavors.GreaterOrEqualThan)
            {
                return("FILTER ( " + leftValue + " >= " + rightValue + " )");
            }
            return("FILTER ( " + leftValue + " > " + rightValue + " )");
        }
示例#2
0
        /// <summary>
        /// Gives the string representation of the filter
        /// </summary>
        public override String ToString()
        {
            String leftValue  = RDFQueryUtilities.PrintRDFPatternMember(this.LeftMember);
            String rightValue = RDFQueryUtilities.PrintRDFPatternMember(this.RightMember);

            switch (this.ComparisonFlavor)
            {
            case RDFQueryEnums.RDFComparisonFlavors.LessThan:
                return("FILTER ( " + leftValue + " < " + rightValue + " )");

            case RDFQueryEnums.RDFComparisonFlavors.LessOrEqualThan:
                return("FILTER ( " + leftValue + " <= " + rightValue + " )");

            case RDFQueryEnums.RDFComparisonFlavors.EqualTo:
                return("FILTER ( " + leftValue + " = " + rightValue + " )");

            case RDFQueryEnums.RDFComparisonFlavors.NotEqualTo:
                return("FILTER ( " + leftValue + " != " + rightValue + " )");

            case RDFQueryEnums.RDFComparisonFlavors.GreaterOrEqualThan:
                return("FILTER ( " + leftValue + " >= " + rightValue + " )");

            case RDFQueryEnums.RDFComparisonFlavors.GreaterThan:
                return("FILTER ( " + leftValue + " > " + rightValue + " )");

            default:
                throw new RDFQueryException("Cannot get string representation of unknown '" + this.ComparisonFlavor + "' RDFComparisonFilter.");
            }
        }
示例#3
0
 internal String ToString(List <RDFNamespace> prefixes)
 {
     return(RDFQueryUtilities.PrintRDFPatternMember(this.Start, prefixes) +
            " " +
            this.GetStepString(prefixes) +
            " " +
            RDFQueryUtilities.PrintRDFPatternMember(this.End, prefixes));
 }
示例#4
0
文件: RDFPattern.cs 项目: Mozes96/IBH
        /// <summary>
        /// Gives the string representation of the pattern
        /// </summary>
        public override String ToString()
        {
            String subj = RDFQueryUtilities.PrintRDFPatternMember(this.Subject);
            String pred = RDFQueryUtilities.PrintRDFPatternMember(this.Predicate);
            String obj  = RDFQueryUtilities.PrintRDFPatternMember(this.Object);

            //CSPO pattern
            if (this.Context != null)
            {
                String ctx = RDFQueryUtilities.PrintRDFPatternMember(this.Context);
                if (this.IsOptional)
                {
                    return("OPTIONAL { GRAPH " + ctx + " { " + subj + " " + pred + " " + obj + " } }");
                }
                return("GRAPH " + ctx + " { " + subj + " " + pred + " " + obj + " }");
            }

            //SPO pattern
            if (this.IsOptional)
            {
                return("OPTIONAL { " + subj + " " + pred + " " + obj + " }");
            }
            return(subj + " " + pred + " " + obj);
        }
示例#5
0
        internal String ToString(List <RDFNamespace> prefixes)
        {
            String subj = RDFQueryUtilities.PrintRDFPatternMember(this.Subject, prefixes);
            String pred = RDFQueryUtilities.PrintRDFPatternMember(this.Predicate, prefixes);
            String obj  = RDFQueryUtilities.PrintRDFPatternMember(this.Object, prefixes);

            //CSPO pattern
            if (this.Context != null)
            {
                String ctx = RDFQueryUtilities.PrintRDFPatternMember(this.Context, prefixes);
                if (this.IsOptional)
                {
                    return("OPTIONAL { GRAPH " + ctx + " { " + subj + " " + pred + " " + obj + " } }");
                }
                return("GRAPH " + ctx + " { " + subj + " " + pred + " " + obj + " }");
            }

            //SPO pattern
            if (this.IsOptional)
            {
                return("OPTIONAL { " + subj + " " + pred + " " + obj + " }");
            }
            return(subj + " " + pred + " " + obj);
        }
示例#6
0
 internal override String ToString(List <RDFNamespace> prefixes)
 {
     return("FILTER ( DATATYPE(" + this.Variable + ") = " + RDFQueryUtilities.PrintRDFPatternMember(RDFQueryUtilities.ParseRDFPatternMember(RDFModelUtilities.GetDatatypeFromEnum(this.Datatype)), prefixes) + " )");
 }
示例#7
0
 internal override String ToString(List <RDFNamespace> prefixes)
 {
     return("FILTER ( SAMETERM(" + this.Variable + ", " + RDFQueryUtilities.PrintRDFPatternMember(this.RDFTerm, prefixes) + ") )");
 }
示例#8
0
        /// <summary>
        /// Gives the string representation of the DESCRIBE query
        /// </summary>
        public override String ToString()
        {
            StringBuilder query = new StringBuilder();

            if (this.DescribeTerms.Any() || this.PatternGroups.Any())
            {
                // Describe
                query.Append("DESCRIBE");

                // TERMS
                if (!this.IsStar)
                {
                    this.DescribeTerms.ForEach(t => query.Append(" " + RDFQueryUtilities.PrintRDFPatternMember(t)));
                }
                else
                {
                    query.Append(" *");
                }

                // PATTERN GROUPS
                if (!this.IsEmpty)
                {
                    query.Append("\nWHERE{\n");
                    Boolean printingUnion = false;
                    this.PatternGroups.ForEach(pg => {
                        //Current pattern group is set as UNION with the next one
                        if (pg.JoinAsUnion)
                        {
                            //Current pattern group IS NOT the last of the query (so UNION keyword must be appended at last)
                            if (!pg.Equals(this.PatternGroups.Last()))
                            {
                                //Begin a new Union block
                                if (!printingUnion)
                                {
                                    printingUnion = true;
                                    query.Append("\n  {");
                                }
                                query.Append(pg.ToString(2) + "    UNION");
                            }

                            //Current pattern group IS the last of the query (so UNION keyword must not be appended at last)
                            else
                            {
                                //End the Union block
                                if (printingUnion)
                                {
                                    printingUnion = false;
                                    query.Append(pg.ToString(2));
                                    query.Append("  }\n");
                                }
                                else
                                {
                                    query.Append(pg.ToString());
                                }
                            }
                        }

                        //Current pattern group is set as INTERSECT with the next one
                        else
                        {
                            //End the Union block
                            if (printingUnion)
                            {
                                printingUnion = false;
                                query.Append(pg.ToString(2));
                                query.Append("  }\n");
                            }
                            else
                            {
                                query.Append(pg.ToString());
                            }
                        }
                    });
                    query.Append("\n}");
                }

                // MODIFIERS
                // LIMIT/OFFSET
                if (this.Modifiers.Any(mod => mod is RDFLimitModifier || mod is RDFOffsetModifier))
                {
                    this.Modifiers.FindAll(mod => mod is RDFLimitModifier).ForEach(lim => query.Append("\n" + lim));
                    this.Modifiers.FindAll(mod => mod is RDFOffsetModifier).ForEach(off => query.Append("\n" + off));
                }
            }

            return(query.ToString());
        }
示例#9
0
        /// <summary>
        /// Gets the string representation of the path
        /// </summary>
        internal String GetStepString(List <RDFNamespace> prefixes)
        {
            var result = new StringBuilder();

            #region Single Property
            if (this.Steps.Count == 1)
            {
                //InversePath (will swap start/end)
                if (this.Steps[0].IsInverseStep)
                {
                    result.Append("^");
                }

                var propPath = this.Steps[0].StepProperty;
                result.Append(RDFQueryUtilities.PrintRDFPatternMember(propPath, prefixes));
            }
            #endregion

            #region Multiple Properties
            else
            {
                //Initialize printing
                Boolean openedParenthesis = false;

                //Iterate properties
                for (int i = 0; i < this.Steps.Count; i++)
                {
                    //Alternative: generate union pattern
                    if (this.Steps[i].StepFlavor == RDFQueryEnums.RDFPropertyPathStepFlavors.Alternative)
                    {
                        if (!openedParenthesis)
                        {
                            openedParenthesis = true;
                            result.Append("(");
                        }

                        //InversePath (will swap start/end)
                        if (this.Steps[i].IsInverseStep)
                        {
                            result.Append("^");
                        }

                        var propPath = this.Steps[i].StepProperty;
                        if (i < this.Steps.Count - 1)
                        {
                            result.Append(RDFQueryUtilities.PrintRDFPatternMember(propPath, prefixes));
                            result.Append((Char)this.Steps[i].StepFlavor);
                        }
                        else
                        {
                            result.Append(RDFQueryUtilities.PrintRDFPatternMember(propPath, prefixes));
                            result.Append(")");
                        }
                    }

                    //Sequence: generate pattern
                    else
                    {
                        if (openedParenthesis)
                        {
                            result.Remove(result.Length - 1, 1);
                            openedParenthesis = false;
                            result.Append(")/");
                        }

                        //InversePath (will swap start/end)
                        if (this.Steps[i].IsInverseStep)
                        {
                            result.Append("^");
                        }

                        var propPath = this.Steps[i].StepProperty;
                        if (i < this.Steps.Count - 1)
                        {
                            result.Append(RDFQueryUtilities.PrintRDFPatternMember(propPath, prefixes));
                            result.Append((Char)this.Steps[i].StepFlavor);
                        }
                        else
                        {
                            result.Append(RDFQueryUtilities.PrintRDFPatternMember(propPath, prefixes));
                        }
                    }
                }
            }
            #endregion

            return(result.ToString());
        }
示例#10
0
 /// <summary>
 /// Gives the string representation of the filter
 /// </summary>
 public override String ToString()
 {
     return("FILTER ( SAMETERM(" + this.Variable + ", " + RDFQueryUtilities.PrintRDFPatternMember(this.RDFTerm) + ") )");
 }
示例#11
0
        /// <summary>
        /// Prints the string representation of a SPARQL DESCRIBE query
        /// </summary>
        internal static String PrintDescribeQuery(RDFDescribeQuery describeQuery)
        {
            StringBuilder sb = new StringBuilder();

            if (describeQuery != null)
            {
                #region PREFIXES
                if (describeQuery.Prefixes.Any())
                {
                    describeQuery.Prefixes.ForEach(pf =>
                    {
                        sb.Append("PREFIX " + pf.NamespacePrefix + ": <" + pf.NamespaceUri + ">\n");
                    });
                    sb.Append("\n");
                }
                #endregion

                #region HEADER

                #region BEGINDESCRIBE
                sb.Append("DESCRIBE");
                #endregion

                #region TERMS
                if (describeQuery.DescribeTerms.Any())
                {
                    describeQuery.DescribeTerms.ForEach(dt =>
                    {
                        sb.Append(" " + RDFQueryUtilities.PrintRDFPatternMember(dt, describeQuery.Prefixes));
                    });
                }
                else
                {
                    sb.Append(" *");
                }
                sb.Append("\n");
                #endregion

                #endregion

                #region BODY
                sb.Append("WHERE\n");
                sb.Append("{\n");

                #region MEMBERS
                Boolean printingUnion = false;
                List <RDFQueryMember> evaluableQueryMembers = describeQuery.GetEvaluableQueryMembers().ToList();
                RDFQueryMember        lastQueryMbr          = evaluableQueryMembers.LastOrDefault();
                foreach (var queryMember in evaluableQueryMembers)
                {
                    #region PATTERNGROUPS
                    if (queryMember is RDFPatternGroup)
                    {
                        //Current pattern group is set as UNION with the next one
                        if (((RDFPatternGroup)queryMember).JoinAsUnion)
                        {
                            //Current pattern group IS NOT the last of the query
                            //(so UNION keyword must be appended at last)
                            if (!queryMember.Equals(lastQueryMbr))
                            {
                                //Begin a new Union block
                                if (!printingUnion)
                                {
                                    printingUnion = true;
                                    sb.Append("  {\n");
                                }
                                sb.Append(((RDFPatternGroup)queryMember).ToString(2, describeQuery.Prefixes) + "    UNION\n");
                            }

                            //Current pattern group IS the last of the query
                            //(so UNION keyword must not be appended at last)
                            else
                            {
                                //End the Union block
                                if (printingUnion)
                                {
                                    printingUnion = false;
                                    sb.Append(((RDFPatternGroup)queryMember).ToString(2, describeQuery.Prefixes));
                                    sb.Append("  }");
                                    sb.Append("\n");
                                }
                                else
                                {
                                    sb.Append(((RDFPatternGroup)queryMember).ToString(0, describeQuery.Prefixes));
                                }
                            }
                        }

                        //Current pattern group is set as INTERSECT with the next one
                        else
                        {
                            //End the Union block
                            if (printingUnion)
                            {
                                printingUnion = false;
                                sb.Append(((RDFPatternGroup)queryMember).ToString(2, describeQuery.Prefixes));
                                sb.Append("  }");
                                sb.Append("\n");
                            }
                            else
                            {
                                sb.Append(((RDFPatternGroup)queryMember).ToString(0, describeQuery.Prefixes));
                            }
                        }
                    }
                    #endregion

                    #region SUBQUERY
                    else if (queryMember is RDFQuery)
                    {
                        //Merge main query prefixes
                        describeQuery.Prefixes.ForEach(pf1 => {
                            if (!((RDFSelectQuery)queryMember).Prefixes.Any(pf2 => pf2.Equals(pf1)))
                            {
                                ((RDFSelectQuery)queryMember).AddPrefix(pf1);
                            }
                        });
                        //End the Union block
                        if (printingUnion)
                        {
                            printingUnion = false;
                            sb.Append(((RDFSelectQuery)queryMember).ToString());
                            sb.Append("  }");
                            sb.AppendLine();
                        }
                        else
                        {
                            sb.Append(((RDFSelectQuery)queryMember).ToString());
                        }
                    }
                    #endregion
                }
                #endregion

                sb.Append("}\n");
                #endregion

                #region FOOTER

                #region MODIFIERS
                List <RDFModifier> modifiers = describeQuery.GetModifiers().ToList();

                // LIMIT/OFFSET
                if (modifiers.Any(mod => mod is RDFLimitModifier || mod is RDFOffsetModifier))
                {
                    modifiers.Where(mod => mod is RDFLimitModifier)
                    .ToList()
                    .ForEach(lim => { sb.Append("\n"); sb.Append(lim); });
                    modifiers.Where(mod => mod is RDFOffsetModifier)
                    .ToList()
                    .ForEach(off => { sb.Append("\n"); sb.Append(off); });
                }
                #endregion

                #endregion
            }
            return(sb.ToString());
        }