示例#1
0
        protected void printStringFrom(ISparqlPrinter context)
        {
            IEnumerable <INode> froms = getFrom();

            if (froms.Count() == 0)
            {
                froms = context.Dataset.DefaultGraphs;
            }
            foreach (IResource from in froms)
            {
                context.println();
                context.printKeyword("FROM");
                context.printURIResource(from);
            }
            froms = getFromNamed();
            if (froms.Count() == 0)
            {
                froms = context.Dataset.DefaultGraphs;
            }
            foreach (IResource fromNamed in froms)
            {
                context.println();
                context.printKeyword("FROM NAMED");
                context.printURIResource(fromNamed);
            }
        }
示例#2
0
 override public void printSPINRDF(ISparqlPrinter p)
 {
     p.printKeyword("DELETE");
     p.print(" ");
     p.printKeyword("DATA");
     printTemplates(p, SP.PropertyData, null, true, null);
 }
示例#3
0
        protected void printGraphIRIs(ISparqlPrinter p, String keyword)
        {
            List <String> graphIRIs = new List <String>();

            {
                IEnumerator <Triple> it = listProperties(SP.PropertyGraphIRI).GetEnumerator();
                while (it.MoveNext())
                {
                    Triple s = it.Current;
                    if (s.Object is IUriNode)
                    {
                        graphIRIs.Add(((IUriNode)s.Object).Uri.ToString());
                    }
                }
                graphIRIs.Sort();
            }
            foreach (String graphIRI in graphIRIs)
            {
                p.print(" ");
                if (keyword != null)
                {
                    p.printKeyword(keyword);
                    p.print(" ");
                }
                p.printURIResource(Resource.Get(RDFUtil.CreateUriNode(UriFactory.Create(graphIRI)), getModel()));
            }
        }
示例#4
0
 override public void Print(ISparqlPrinter p)
 {
     p.printKeyword("GRAPH");
     p.print(" ");
     printVarOrResource(p, getNameNode());
     printNestedElementList(p);
 }
示例#5
0
 override public void printSPINRDF(ISparqlPrinter p)
 {
     p.printKeyword("CLEAR");
     p.print(" ");
     printSilent(p);
     printGraphDefaultNamedOrAll(p);
 }
示例#6
0
        override public void Print(ISparqlPrinter context)
        {
            context.printKeyword("BIND");
            context.print(" (");
            IResource expression = getExpression();

            if (expression != null)
            {
                printNestedExpressionString(context, expression);
            }
            else
            {
                context.print("<Exception: Missing expression>");
            }
            context.print(" ");
            context.printKeyword("AS");
            context.print(" ");
            IVariable variable = getVariable();

            if (variable != null)
            {
                context.print(variable.ToString());
            }
            else
            {
                context.print("<Exception: Missing variable>");
            }
            context.print(")");
        }
示例#7
0
        public override void printSPINRDF(ISparqlPrinter p)
        {
            printComment(p);
            printPrefixes(p);

            IResource iri = getResource(SP.PropertyGraphIRI);

            IResource with = getResource(SP.PropertyWith);

            if (with != null)
            {
                p.printIndentation(p.getIndentation());
                p.printKeyword("WITH");
                p.print(" ");
                p.printURIResource(with);
                p.println();
            }

            // TODO add a INSERT/CONSTRUCT pattern before the delete is effective
            if (printTemplates(p, SP.PropertyDeletePattern, "DELETE", hasProperty(SP.PropertyDeletePattern), iri))
            {
                p.print("\n");
            }
            if (printTemplates(p, SP.PropertyInsertPattern, "INSERT", hasProperty(SP.PropertyInsertPattern), iri))
            {
                p.print("\n");
            }

            IEnumerable <INode> usings = getUsing();

            if (usings.Count() == 0)
            {
                usings = p.Dataset.DefaultGraphs;
            }
            foreach (IResource _using in usings)
            {
                p.printKeyword("USING");
                p.print(" ");
                p.printURIResource(_using);
                p.println();
            }

            usings = getUsingNamed();
            if (usings.Count() == 0)
            {
                usings = p.Dataset.ActiveGraphs;
            }
            foreach (IResource usingNamed in usings)
            {
                p.printKeyword("USING");
                p.print(" ");
                p.printKeyword("NAMED");
                p.print(" ");
                p.printURIResource(usingNamed);
                p.println();
            }
            p.CurrentSparqlContext = SparqlContext.QueryContext;
            printWhere(p);
        }
示例#8
0
 protected void printSilent(ISparqlPrinter p)
 {
     if (isSilent())
     {
         p.printKeyword("SILENT");
         p.print(" ");
     }
 }
示例#9
0
 override public void Print(ISparqlPrinter p)
 {
     print(getSubject(), p);
     p.print(" ");
     print(getPredicate(), p, true);
     p.print(" ");
     print(getObject(), p);
 }
示例#10
0
 override public void printSPINRDF(ISparqlPrinter p)
 {
     p.printKeyword("CREATE");
     p.print(" ");
     printSilent(p);
     p.printKeyword("GRAPH");
     p.print(" ");
     p.printURIResource(getResource(SP.PropertyGraphIRI));
 }
示例#11
0
        override public void Print(ISparqlPrinter p)
        {
            IVariable asVar = getAs();

            if (asVar != null)
            {
                p.print("(");
            }

            INode  aggType = this.getObject(RDF.PropertyType);
            String aggName = Aggregations.getName(aggType);

            p.printKeyword(aggName);
            p.print("(");

            if (isDistinct())
            {
                p.print("DISTINCT ");
            }

            Triple exprS = this.getProperty(SP.PropertyExpression);

            if (exprS != null && !(exprS.Object is ILiteralNode))
            {
                IResource r    = Resource.Get(exprS.Object, getModel());
                IResource expr = SPINFactory.asExpression(r);
                if (expr is IPrintable)
                {
                    ((IPrintable)expr).Print(p);
                }
                else
                {
                    p.printURIResource(r);
                }
            }
            else
            {
                p.print("*");
            }
            String separator = getString(SP.PropertySeparator);

            if (separator != null)
            {
                p.print("; ");
                p.printKeyword("SEPARATOR");
                p.print("=''"); //"='" + DatasetUtil.escapeString(separator) + "'");
            }
            if (asVar != null)
            {
                p.print(") ");
                p.printKeyword("AS");
                p.print(" ");
                p.print(asVar.ToString());
            }
            p.print(")");
        }
示例#12
0
        protected void printSolutionModifiers(ISparqlPrinter context)
        {
            List <IResource> orderBy = getList(SP.PropertyOrderBy);

            if (orderBy.Count > 0)
            {
                context.println();
                context.printIndentation(context.getIndentation());
                context.printKeyword("ORDER BY");
                foreach (IResource node in orderBy)
                {
                    if (!node.isLiteral())
                    {
                        if (node.hasProperty(RDF.PropertyType, SP.ClassAsc))
                        {
                            context.print(" ");
                            context.printKeyword("ASC");
                            context.print(" ");
                            IResource expression = node.getResource(SP.PropertyExpression);
                            printOrderByExpression(context, expression);
                        }
                        else if (node.hasProperty(RDF.PropertyType, SP.ClassDesc))
                        {
                            context.print(" ");
                            context.printKeyword("DESC");
                            context.print(" ");
                            IResource expression = node.getResource(SP.PropertyExpression);
                            printOrderByExpression(context, expression);
                        }
                        else
                        {
                            context.print(" ");
                            printOrderByExpression(context, node);
                        }
                    }
                }
            }
            long?limit = getLimit();

            if (limit != null)
            {
                context.println();
                context.printIndentation(context.getIndentation());
                context.printKeyword("LIMIT");
                context.print(" " + limit);
            }
            long?offset = getOffset();

            if (offset != null)
            {
                context.println();
                context.printIndentation(context.getIndentation());
                context.print("OFFSET");
                context.print(" " + offset);
            }
        }
示例#13
0
 override public void printSPINRDF(ISparqlPrinter p)
 {
     printComment(p);
     printPrefixes(p);
     p.printIndentation(p.getIndentation());
     p.printKeyword("DELETE");
     p.print(" ");
     p.printKeyword("WHERE");
     printNestedElementList(p, SP.PropertyWhere);
 }
示例#14
0
 private void printRDFList(ISparqlPrinter p, List <IResource> members)
 {
     p.print("(");
     foreach (IResource node in members)
     {
         p.print(" ");
         TupleImpl.print(getModel(), node, p);
     }
     p.print(" )");
 }
示例#15
0
 public override void printSPINRDF(ISparqlPrinter p)
 {
     printComment(p);
     printPrefixes(p);
     p.printIndentation(p.getIndentation());
     p.printKeyword("DELETE");
     printGraphIRIs(p, "FROM");
     printTemplates(p, SP.PropertyDeletePattern, null, true, null);
     printWhere(p);
 }
示例#16
0
        protected void printValues(ISparqlPrinter p)
        {
            IValues values = getValues();

            if (values != null)
            {
                p.println();
                values.Print(p);
            }
        }
示例#17
0
 override public void printSPINRDF(ISparqlPrinter p)
 {
     printComment(p);
     printPrefixes(p);
     p.printIndentation(p.getIndentation());
     p.printKeyword("INSERT");
     printGraphIRIs(p, "INTO");
     printTemplates(p, SP.PropertyInsertPattern, null, true, null);
     printWhere(p);
 }
示例#18
0
        // Special treatment of nested rdf:Lists
        private int printTriplePattern(List <IElement> elements, int i, ISparqlPrinter p)
        {
            ITriplePattern main = (ITriplePattern)elements[i];

            // Print subject
            List <IResource> leftList = new List <IResource>();

            i = addListMembers(elements, i, leftList);
            if (leftList.Count == 0)
            {
                TupleImpl.print(getModel(), main.getSubject(), p);
            }
            else
            {
                printRDFList(p, leftList);
                main = (ITriplePattern)elements[i];
            }
            p.print(" ");

            // Print predicate
            if (RDFUtil.sameTerm(RDF.PropertyType, main.getPredicate()))
            {
                p.print("a");
            }
            else
            {
                TupleImpl.print(getModel(), main.getPredicate(), p);
            }
            p.print(" ");

            // Print object
            if (nextIsMatchingVarPattern(main, elements, i))
            {
                List <IResource> rightList = new List <IResource>();
                i = addListMembers(elements, i + 1, rightList);
                if (rightList.Count == 0)
                {
                    TupleImpl.print(getModel(), main.getObject(), p);
                    if (leftList.Count != 0)
                    {
                        i--;
                    }
                }
                else
                {
                    printRDFList(p, rightList);
                    i--;
                }
            }
            else
            {
                TupleImpl.print(getModel(), main.getObject(), p);
            }
            return(i);
        }
示例#19
0
        private void printProjectExpression(ISparqlPrinter p, IVariable var)
        {
            p.print("((");
            IResource  expr       = var.getResource(SP.PropertyExpression);
            IPrintable expression = (IPrintable)SPINFactory.asExpression(expr);

            expression.Print(p);
            p.print(") ");
            p.printKeyword("AS");
            p.print(" ");
            p.print(var.ToString());
            p.print(")");
        }
示例#20
0
        override public void Print(ISparqlPrinter p)
        {
            String text = getString(SP.PropertyText);

            if (text != null)
            {
                p.print(text);
            }
            else
            {
                printSPINRDF(p);
            }
        }
        private void printFunctionQName(ISparqlPrinter p, IResource function)
        {
            String symbol = getSymbol(function);

            if (symbol != null)
            {
                p.print(symbol);
            }
            else
            {
                //TODO ??????????
                p.printURIResource(function);
            }
        }
示例#22
0
        override public void Print(ISparqlPrinter p)
        {
            String name = getName();

            if (name.StartsWith("?"))
            {
                p.print("_:");
                p.print(name.Substring(1));
            }
            else
            {
                p.printVariable(name);
            }
        }
示例#23
0
        override public void Print(ISparqlPrinter context)
        {
            context.printKeyword("FILTER");
            context.print(" ");
            IResource expression = getExpression();

            if (expression == null)
            {
                context.print("<Exception: Missing expression>");
            }
            else
            {
                printNestedExpressionString(context, expression, true);
            }
        }
示例#24
0
        protected void printComment(ISparqlPrinter context)
        {
            String str = getComment();

            if (str != null)
            {
                String[] rows = str.Split('\n');
                for (int i = 0; i < rows.Length; i++)
                {
                    context.print("# ");
                    context.print(rows[i]);
                    context.println();
                }
            }
        }
示例#25
0
        private void printPath(IResource path, ISparqlPrinter p)
        {
            ISparqlPath arqPath = createPath(path);

            if (p.getUsePrefixes())
            {
                //TODO INamespaceMapper prefixMapping = path.getModel().getPrefixMapping();
                String str = arqPath.ToString(); //PathWriter.asString(arqPath, null/*TODO new Prologue(prefixMapping)*/);
                p.print(str);
            }
            else
            {
                String str = arqPath.ToString();//PathWriter.asString(arqPath);
                p.print(str);
            }
        }
示例#26
0
 override public void printSPINRDF(ISparqlPrinter context)
 {
     printComment(context);
     printPrefixes(context);
     context.printIndentation(context.getIndentation());
     context.printKeyword("ASK");
     printStringFrom(context);
     context.print(" ");
     if (context.getIndentation() > 0)
     {
         // Avoid unnecessary whitespace after ASK -> put on extra row
         context.println();
     }
     printWhere(context);
     printValues(context);
 }
示例#27
0
        protected void printNestedElementList(ISparqlPrinter p, INode predicate)
        {
            p.print(" {");
            p.println();
            IResource elementsRaw = getObject(predicate);

            if (elementsRaw != null)
            {
                IElementList elements = (IElementList)elementsRaw.As(typeof(ElementListImpl));
                p.setIndentation(p.getIndentation() + 1);
                elements.Print(p);
                p.setIndentation(p.getIndentation() - 1);
            }
            p.printIndentation(p.getIndentation());
            p.print("}");
        }
示例#28
0
        private void printHaving(ISparqlPrinter p)
        {
            List <IResource> havings = getList(SP.PropertyHaving);

            if (havings.Count > 0)
            {
                IEnumerator <IResource> it = havings.GetEnumerator();
                p.println();
                p.printIndentation(p.getIndentation());
                p.printKeyword("HAVING");
                while (it.MoveNext())
                {
                    p.print(" ");
                    printNestedExpressionString(p, it.Current);
                }
            }
        }
        void printFunction(ISparqlPrinter p, IResource function, List <IResource> args)
        {
            printFunctionQName(p, function);
            p.print("(");
            IEnumerator <IResource> it = args.GetEnumerator();

            while (it.MoveNext())
            {
                IResource param = it.Current;
                printNestedExpressionString(p, param);
                if (it.MoveNext())
                {
                    p.print(", ");
                }
            }
            p.print(")");
        }
示例#30
0
        private void printGroupBy(ISparqlPrinter p)
        {
            List <IResource> groupBy = getList(SP.PropertyGroupBy);

            if (groupBy.Count > 0)
            {
                IEnumerator <IResource> it = groupBy.GetEnumerator();
                p.println();
                p.printIndentation(p.getIndentation());
                p.printKeyword("GROUP BY");
                while (it.MoveNext())
                {
                    p.print(" ");
                    IResource node = it.Current;
                    printNestedExpressionString(p, node);
                }
            }
        }