Class ExprTransformVirtualBnodeUris

java.lang.Object
org.apache.jena.sparql.expr.ExprTransformCopy
org.aksw.jena_sparql_api.algebra.expr.transform.ExprTransformVirtualBnodeUris
All Implemented Interfaces:
org.apache.jena.sparql.expr.ExprTransform

public class ExprTransformVirtualBnodeUris extends org.apache.jena.sparql.expr.ExprTransformCopy
Decode "blanknode URIs" - i.e. URIs that represent blank nodes, such as bnode://{blank-node-label} This means ?x = <bnode://foobar> becomes encode(?x) = decode(<bnode://foobar>) encode(?x) = 'foobar' Issue: How to deal with queries that test for blank nodes? In principle, this rewrite virtually eleminates them, so maybe the most reasonable approach is to simply rewrite isBlank to true. in fact, the standard bnode function would also have to yield bnode uris instead bnodeLabel(?x) := if ?x is a blank node, return its label as an xsd:string, type error otherwise Auxiliary functions (defined in terms of the aforementioned and SPARQL standard functions) typeError() := abs("") encodeBnodeUri(xsd:string ?x) := URI(CONCAT('bnode://', ?x)) create an URI from a blank node label isBnodeUri(uri) := isURI(?x) && STRSTARTS(STR(?x), 'bnode://') true if uri represents a bnode decodeBnodeUri(uri ?x) := IF(isBnodeURI(?x), STRAFTER(STR(?x), 'bnode://'), typeError()), extract the blank node label from a URI forceBnodeUri(?x) -> IF(isBlank(?x), encodeBnodeURI(bnodeLabel(?x)), ?x) Transformations: - Given ?x = const if(isBnodeURI(const)) { emit bnodeLabel(?x) = decodeBnodeURI(uri) }
Author:
raven
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
    static final String
     
    static final String
     
    static final String
     
    protected Map<String,org.apache.jena.sparql.function.user.UserDefinedFunctionDefinition>
     
    static final String
     
    protected Map<String,Boolean>
     

    Fields inherited from class org.apache.jena.sparql.expr.ExprTransformCopy

    COPY_ALWAYS, COPY_ONLY_ON_CHANGE
  • Constructor Summary

    Constructors
    Constructor
    Description
    ExprTransformVirtualBnodeUris(Map<String,org.apache.jena.sparql.function.user.UserDefinedFunctionDefinition> macros, Map<String,Boolean> propertyFunctions)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static org.apache.jena.graph.Node
    bnodeToIri(org.apache.jena.graph.Node node)
     
    static <T extends org.apache.jena.sparql.expr.ExprFunction2>
    T
    copy(T func, org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b, boolean swapped)
     
    createTransformFromUdfModel(org.apache.jena.rdf.model.Model model, Collection<String> activeProfiles)
     
    org.apache.jena.sparql.expr.NodeValue
    decodeBnodeIriFn(org.apache.jena.sparql.expr.NodeValue in)
     
    org.apache.jena.sparql.algebra.Op
    forceBnodeUris(org.apache.jena.sparql.algebra.Op op)
     
    boolean
    isBnodeIri(org.apache.jena.sparql.expr.NodeValue in)
     
    static void
    main(String[] args)
     
    org.apache.jena.query.Query
    rewrite(org.apache.jena.query.Query query)
     
    org.apache.jena.sparql.expr.Expr
    transform(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b)
     
    org.apache.jena.sparql.expr.Expr
    transform(org.apache.jena.sparql.expr.ExprFunctionN func, org.apache.jena.sparql.expr.ExprList args)
     
    org.apache.jena.sparql.expr.ExprFunction2
    trySubst(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.Expr lhs, org.apache.jena.sparql.expr.Expr b, boolean swapped)
     

    Methods inherited from class org.apache.jena.sparql.expr.ExprTransformCopy

    transform, transform, transform, transform, transform, transform, transform, transform

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.jena.sparql.expr.ExprTransform

    transform
  • Field Details

  • Constructor Details

    • ExprTransformVirtualBnodeUris

      public ExprTransformVirtualBnodeUris(Map<String,org.apache.jena.sparql.function.user.UserDefinedFunctionDefinition> macros, Map<String,Boolean> propertyFunctions)
  • Method Details

    • transform

      public org.apache.jena.sparql.expr.Expr transform(org.apache.jena.sparql.expr.ExprFunctionN func, org.apache.jena.sparql.expr.ExprList args)
      Specified by:
      transform in interface org.apache.jena.sparql.expr.ExprTransform
      Overrides:
      transform in class org.apache.jena.sparql.expr.ExprTransformCopy
    • transform

      public org.apache.jena.sparql.expr.Expr transform(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b)
      Specified by:
      transform in interface org.apache.jena.sparql.expr.ExprTransform
      Overrides:
      transform in class org.apache.jena.sparql.expr.ExprTransformCopy
    • copy

      public static <T extends org.apache.jena.sparql.expr.ExprFunction2> T copy(T func, org.apache.jena.sparql.expr.Expr a, org.apache.jena.sparql.expr.Expr b, boolean swapped)
    • bnodeToIri

      public static org.apache.jena.graph.Node bnodeToIri(org.apache.jena.graph.Node node)
    • isBnodeIri

      public boolean isBnodeIri(org.apache.jena.sparql.expr.NodeValue in)
    • decodeBnodeIriFn

      public org.apache.jena.sparql.expr.NodeValue decodeBnodeIriFn(org.apache.jena.sparql.expr.NodeValue in)
    • trySubst

      public org.apache.jena.sparql.expr.ExprFunction2 trySubst(org.apache.jena.sparql.expr.ExprFunction2 func, org.apache.jena.sparql.expr.Expr lhs, org.apache.jena.sparql.expr.Expr b, boolean swapped)
    • rewrite

      public org.apache.jena.query.Query rewrite(org.apache.jena.query.Query query)
    • createTransformFromUdfModel

      public static ExprTransformVirtualBnodeUris createTransformFromUdfModel(org.apache.jena.rdf.model.Model model, Collection<String> activeProfiles)
    • forceBnodeUris

      public org.apache.jena.sparql.algebra.Op forceBnodeUris(org.apache.jena.sparql.algebra.Op op)
    • main

      public static void main(String[] args)