Пример #1
0
        public virtual void PrintEnhancedSPARQL(TripleImpl pattern)
        {
            if (CurrentSparqlContext != SparqlContext.QueryContext)
            {
                pattern.Print(this);
                return;
            }
            IResource graphContext = null;

            if (_currentGraphContext.Count > 0)
            {
                graphContext = _currentGraphContext.Peek();
            }
            else
            {
                graphContext = SPINFactory.createVariable(Dataset.spinProcessor, GetAnonVariable());
            }
            String surrogate = null;

            if (CurrentSparqlContext == SparqlContext.QueryContext)
            {
                surrogate = CreateGraphMapping(graphContext);
                if (!String.IsNullOrEmpty(surrogate))
                {
                    print("{ ");
                }
            }

            print(" GRAPH ");
            if (graphContext.isUri())
            {
                printURIResource(graphContext);
            }
            else
            {
                printVariable(graphContext.getString(SP.PropertyVarName));
            }
            print(" {");
            println(1);
            pattern.Print(this);
            if (!String.IsNullOrEmpty(surrogate))
            {
                print(". FILTER (NOT EXISTS{ GRAPH ?" + surrogate + " { ");
                pattern.print(pattern.getSubject(), this);
                print(" dnr:resets ");
                pattern.print(pattern.getPredicate(), this, false);
                print("} })");
            }
            println(-1);
            print("} ");
            if (!String.IsNullOrEmpty(surrogate))
            {
                print("} UNION { GRAPH ");
                printVariable(surrogate);
                print(" {");
                println(1);
                pattern.Print(this);
                println(-1);
                print("} }");
            }
            print(" .");
            println();
        }