Class Service

All Implemented Interfaces:
Serializable, Cloneable, GraphPatternGroupable, QueryModelNode, TupleExpr, VariableScopeChange

public class Service extends UnaryTupleOperator
The SERVICE keyword as defined in SERVICE definition. The service expression is evaluated at the specified service URI. If the service reference is a variable, a value for this variable must be available at evaluation time (e.g. from earlier computations).
See Also:
  • Field Details

    • serviceRef

      private Var serviceRef
    • serviceExpressionString

      private String serviceExpressionString
    • serviceVars

      private final Set<String> serviceVars
    • prefixDeclarations

      private Map<String,String> prefixDeclarations
    • baseURI

      private String baseURI
    • preparedSelectQueryString

      private String preparedSelectQueryString
    • preparedAskQueryString

      private String preparedAskQueryString
    • silent

      private final boolean silent
    • subselectPattern

      private static final Pattern subselectPattern
  • Constructor Details

  • Method Details

    • getServiceRef

      public Var getServiceRef()
    • getServiceExpr

      public TupleExpr getServiceExpr()
    • setServiceRef

      public void setServiceRef(Var serviceRef)
    • isSilent

      public boolean isSilent()
      Returns:
      Returns the silent.
    • getPrefixDeclarations

      public Map<String,String> getPrefixDeclarations()
      Returns:
      Returns the prefixDeclarations.
    • setPrefixDeclarations

      public void setPrefixDeclarations(Map<String,String> prefixDeclarations)
      Parameters:
      prefixDeclarations - The prefixDeclarations to set.
    • setExpressionString

      public void setExpressionString(String serviceExpressionString)
      The SERVICE expression, either complete or just the expression e.g. "SERVICE { ... }" becomes " ... "
      Parameters:
      serviceExpressionString - the inner expression as SPARQL String representation
    • getServiceExpressionString

      public String getServiceExpressionString()
      Returns:
      Returns the serviceExpressionString.
    • getAskQueryString

      public String getAskQueryString()
      Returns an ASK query string using no projection vars.
      Returns:
      an ASK query string
    • getSelectQueryString

      public String getSelectQueryString(Set<String> projectionVars)
      Returns a SELECT query string using the provided projection vars. The variables are inserted into the preparedSelectQueryString in the SELECT clause.
      Parameters:
      projectionVars -
      Returns:
      SELECT query string, utilizing the given projection variables
    • getServiceVars

      public Set<String> getServiceVars()
      Returns:
      Returns the serviceVars.
    • visit

      public <X extends Exception> void visit(QueryModelVisitor<X> visitor) throws X
      Description copied from interface: QueryModelNode
      Visits this node. The node reports itself to the visitor with the proper runtime type.
      Throws:
      X
    • visitChildren

      public <X extends Exception> void visitChildren(QueryModelVisitor<X> visitor) throws X
      Description copied from class: AbstractQueryModelNode
      Dummy implementation of QueryModelNode.visitChildren(org.eclipse.rdf4j.query.algebra.QueryModelVisitor<X>) that does nothing. Subclasses should override this method when they have child nodes.
      Specified by:
      visitChildren in interface QueryModelNode
      Overrides:
      visitChildren in class UnaryTupleOperator
      Throws:
      X
    • replaceChildNode

      public void replaceChildNode(QueryModelNode current, QueryModelNode replacement)
      Description copied from class: AbstractQueryModelNode
      Default implementation of QueryModelNode.replaceChildNode(QueryModelNode, QueryModelNode) that throws an IllegalArgumentException indicating that current is not a child node of this node.
      Specified by:
      replaceChildNode in interface QueryModelNode
      Overrides:
      replaceChildNode in class UnaryTupleOperator
      Parameters:
      current - The current child node.
      replacement - The new child node.
    • equals

      public boolean equals(Object other)
      Description copied from interface: QueryModelNode
      Returns true if this query model node and its children are recursively equal to o and its children.
      Specified by:
      equals in interface QueryModelNode
      Overrides:
      equals in class UnaryTupleOperator
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class UnaryTupleOperator
    • clone

      public Service clone()
      Description copied from interface: QueryModelNode
      Returns a (deep) clone of this query model node. This method recursively clones the entire node tree, starting from this nodes.
      Specified by:
      clone in interface QueryModelNode
      Specified by:
      clone in interface TupleExpr
      Overrides:
      clone in class UnaryTupleOperator
      Returns:
      A deep clone of this query model node.
    • computeServiceVars

      private Set<String> computeServiceVars(TupleExpr serviceExpression)
      Compute the variable names occurring in the service expression using tree traversal, since these are necessary for building the SPARQL query.
      Returns:
      the set of variable names in the given service expression
    • initPreparedQueryString

      private void initPreparedQueryString()
    • computePrefixString

      private String computePrefixString(Map<String,String> prefixDeclarations)
      Compute the prefix string only once to avoid computation overhead during evaluation.
      Parameters:
      prefixDeclarations -
      Returns:
      a Prefix String or an empty string if there are no prefixes
    • parseServiceExpression

      private String parseServiceExpression(String serviceExpression)
      Parses a service expression to just have the inner expression, e.g. from something like "SERVICE <url> { ... }" becomes " ... ", also applies String.trim() to remove leading/tailing space
      Parameters:
      serviceExpression -
      Returns:
      the inner expression of the given service expression
    • setBaseURI

      public void setBaseURI(String baseURI)
      Parameters:
      baseURI - The baseURI to set.
    • getBaseURI

      public String getBaseURI()
      Returns:
      Returns the baseURI.