Class NormalizeZeroOrOneSubselectTransform

java.lang.Object
org.eclipse.rdf4j.queryrender.sparql.ir.util.transform.BaseTransform
org.eclipse.rdf4j.queryrender.sparql.ir.util.transform.NormalizeZeroOrOneSubselectTransform

public final class NormalizeZeroOrOneSubselectTransform extends BaseTransform
Recognize a parsed subselect encoding of a simple zero-or-one property path between two variables and rewrite it to a compact IrPathTriple with a trailing '?' quantifier. Roughly matches a UNION containing a sameTerm(?s, ?o) branch and one or more single-step patterns connecting ?s and ?o (possibly via GRAPH or already-fused path triples). Produces ?s (step1|step2|...) ? ?o. This normalization simplifies common shapes produced by the parser for "?s (p? ) ?o" and enables subsequent path fusions.
  • Method Details

    • apply

      public static IrBGP apply(IrBGP bgp, TupleExprIRRenderer r)
    • tryRewriteZeroOrOne

      public static IrPathTriple tryRewriteZeroOrOne(IrSubSelect ss, TupleExprIRRenderer r)
    • tryRewriteZeroOrOneNode

      public static IrNode tryRewriteZeroOrOneNode(IrSubSelect ss, TupleExprIRRenderer r)
      Variant of tryRewriteZeroOrOne that returns a generic IrNode. When all step branches are GRAPH-wrapped with the same graph ref, this returns an IrGraph containing the fused IrPathTriple, so that graph context is preserved and downstream coalescing can merge adjacent GRAPH blocks.
    • parseSameTermVars

      public static String[] parseSameTermVars(String text)
    • isSameTermFilterBranch

      public static boolean isSameTermFilterBranch(IrBGP b)
    • varNamed

      public static Var varNamed(String name)