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(); }