Class ARQ

java.lang.Object
org.apache.jena.query.ARQ

public class ARQ extends Object
ARQ - miscellaneous settings
  • Field Details

    • logExecName

      public static final String logExecName
      Name of the execution logger
      See Also:
    • logInfoName

      public static final String logInfoName
      Name of the information logger (only used by jena-text).
      See Also:
    • logHttpRequestName

      public static final String logHttpRequestName
      Name of the logger for remote HTTP requests
      See Also:
    • symLogExec

      public static final Symbol symLogExec
      Symbol to enable logging of execution. Must also set log4j, or other logging system, The logger is "org.apache.jena.arq.exec"
      log4j2:
       logger.arq-exec.name  = org.apache.jena.arq.exec
       logger.arq-exec.level = INFO
       
      See the ARQ Logging Documentation.
    • arqIRI

      public static final String arqIRI
      IRI for ARQ
      See Also:
    • arqParamNS

      public static final String arqParamNS
      Root of ARQ-defined parameter names
      See Also:
    • arqSymbolPrefix

      public static final String arqSymbolPrefix
      Prefix for ARQ-defined parameter names
      See Also:
    • strictSPARQL

      public static final Symbol strictSPARQL
      Stick exactly to the spec.
    • constantBNodeLabels

      public static final Symbol constantBNodeLabels
      Controls bNode labels as <_:...> or not - that is a pseudo URIs. This does not affect [] or _:a bNodes as variables in queries.
    • enablePropertyFunctions

      public static final Symbol enablePropertyFunctions
      Enable built-in property functions - also called "magic properties". These are properties in triple patterns that need calculation, not matching. See ARQ documentation for more details. rdfs:member and http://jena.apache.org/ARQ/list#member are provided.
    • enableExecutionTimeLogging

      public static final Symbol enableExecutionTimeLogging
      Enable logging of execution timing.
    • outputGraphBNodeLabels

      public static final Symbol outputGraphBNodeLabels
      If true, XML result sets written will contain the graph bNode label See also inputGraphBNodeLabels
    • inputGraphBNodeLabels

      public static final Symbol inputGraphBNodeLabels
      If true, XML result sets will use the bNode label in the result set itself. See also outputGraphBNodeLabels
    • queryTimeout

      public static final Symbol queryTimeout
      Set timeout. The value of this symbol gives the value of the timeout in milliseconds
      • A Number; the long value is used
      • A string, e.g. "1000", parsed as a number
      • A string, as two numbers separated by a comma, e.g. "500,10000" parsed as two numbers
      See Also:
    • stageGenerator

      public static final Symbol stageGenerator
      Context key for StageBuilder used in BGP compilation
    • hideNonDistiguishedVariables

      public static final Symbol hideNonDistiguishedVariables
      Context key to control hiding non-distinguished variables
    • useSAX

      public static final Symbol useSAX
      Use the SAX parser for XML result sets. The default is to use StAX for full streaming of XML results. The SAX parser takes a copy of the result set before giving the ResultSet to the calling application.
    • allowDuplicateSelectColumns

      public static final boolean allowDuplicateSelectColumns
      Indicate whether duplicate select and groupby variables are allowed. If false, duplicates are silently suppressed; it's not an error.
      See Also:
    • regexImpl

      public static final Symbol regexImpl
      Determine which regular expression system to use. The value of this context entry should be a string or symbol of one of the following: javaRegex : use java.util.regex (support features outside the strict SPARQL regex language) xercesRegex : use the internal XPath regex engine (more compliant)
    • javaRegex

      public static final Symbol javaRegex
      Symbol to name java.util.regex regular expression engine
    • xercesRegex

      public static final Symbol xercesRegex
      Symbol to name the Xerces-J regular expression engine
    • serviceParams

      public static final Symbol serviceParams
      Use this Symbol to allow passing additional query parameters to a SERVICE <IRI> call. Parameters need to be grouped by SERVICE <IRI>, a Map<String, Map<String,List<String>>> is assumed. The key of the first map is the SERVICE IRI, the value is a Map which maps the name of a query string parameters to its values.
      See Also:
    • httpServiceSendMode

      public static final Symbol httpServiceSendMode
      Use this symbol to provide a QuerySendMode to use on the HTTP call.
    • httpRegistryRequestModifer

      public static final Symbol httpRegistryRequestModifer
      Use this symbol to provide a RegistryRequestModifier that can modify an HTTP request just before it is sent.
    • httpRequestModifer

      public static final Symbol httpRequestModifer
      Use this symbol to provide a HttpRequestModifier directly. This takes precedence over registry lookup.
    • globalServiceAllowed

      public static boolean globalServiceAllowed
      Global on/off for all SERVICE calls.

      Set false to disable SERVICE calls regardless of any context or default setting.

    • allowServiceDefault

      public static boolean allowServiceDefault
      Default for whether SERVICE is enabled when no context setting httpServiceAllowed is found.
    • httpServiceAllowed

      public static final Symbol httpServiceAllowed
      Control whether SERVICE processing is allowed. If the context of the query execution contains this, and it's set to "false", then SERVICE is not allowed.
    • httpQueryClient

      public static final Symbol httpQueryClient
      HttpClient to use.
    • httpQueryTimeout

      public static final Symbol httpQueryTimeout
      Operation timeout. Connection timeout is controlled via HttpClient.
    • fixupUndefinedPrefixes

      public static final Symbol fixupUndefinedPrefixes
      If set to true, the parsers will convert undefined prefixes to a URI according to the fixup function RiotLib.fixupPrefixes. Normally, unset (which equates to false).
      See Also:
    • spillToDiskThreshold

      public static final Symbol spillToDiskThreshold
      A Long value that specifies the number of bindings (or triples for CONSTRUCT queries) to be stored in memory by sort operations or hash tables before switching to temporary disk files. The value defaults to -1, which will always keep the bindings in memory and never write to temporary files. The amount of memory used will vary based on the size of the bindings. If you are retrieving large literal strings, then you may need to lower the value.

      Note that for a complex query, several sort or hash operations might be running in parallel; each one will be allowed to retain as many bindings in memory as this value specifies before it starts putting data in temporary files. Also, several running sessions could be doing such operations concurrently. Therefore, the total number of bindings held in memory could be many times this value; it is necessary to keep this fact in mind when choosing the value.

      Operations currently affected by this symbol:
      ORDER BY, SPARQL Update, CONSTRUCT (optionally)

      A reasonable value here is 10000.

      See Also:
    • optimization

      public static final Symbol optimization
      Context key controlling whether the main query engine applies the default optimization transformations.
    • optPathFlatten

      public static final Symbol optPathFlatten
      Context key controlling whether the main query engine flattens simple paths (e.g. ?x :p/:q ?z =&gt; ?x :p ?.0 . ?.0 ?q ?z)

      Default is "true"

    • optPathFlattenAlgebra

      public static final Symbol optPathFlattenAlgebra
      Context key controlling whether the main query engine does more extensive property path flattening that involves more in-depth manipulation of the SPARQL algebra. This must be explicitly enabled and is only used if optPathFlatten is also enabled (which it is by default).

      Default is false

    • optFilterPlacement

      public static final Symbol optFilterPlacement
      Context key controlling whether the main query engine moves filters to the "best" place. Default is "true" - filter placement is done.
    • optFilterPlacementBGP

      public static final Symbol optFilterPlacementBGP
      Context key controlling whether to do filter placement within BGP and quad blocks. Modifies the effect of optFilterPlacement. Default is "true" - filter placement is pushed into BGPs.
    • optFilterPlacementConservative

      public static final Symbol optFilterPlacementConservative
      Context key controlling whether the main query engine moves filters to the "best" place using the more limited and conservative strategy which does not place as many filters Must be explicitly set "true" to operate. Filter placement, via optFilterPlacement must also be active (which it is by default).
      See Also:
    • optTopNSorting

      public static final Symbol optTopNSorting
      Context key controlling whether an ORDER BY-LIMIT query is done avoiding total sort using an heap. Default is "true" - total sort if avoided by default when ORDER BY is used with LIMIT.
    • topNSortingThreshold

      public static final Symbol topNSortingThreshold
      Threshold for doing a top N sort for ORDER-LIMIT. The default is a limit of 1000. The context value should be a Number.
    • optDistinctToReduced

      public static final Symbol optDistinctToReduced
      Context key controlling whether a DISTINCT-ORDER BY query is done by replacing the distinct with a reduced. Default is "true" - the reduced operator does not need to keep a data structure with all previously seen bindings.
    • optOrderByDistinctApplication

      public static final Symbol optOrderByDistinctApplication
      Context key controlling whether a DISTINCT-ORDER BY query is done by applying the ORDER BY after the DISTINCT when default SPARQL semantics usually mean ORDER BY applies before DISTINCT. This optimization applies only in a subset of cases unlike the more general optDistinctToReduced optimization.

      See TransformOrderByDistinctApplication for more discussion on exactly when this may apply

    • optFilterEquality

      public static final Symbol optFilterEquality
      Context key controlling whether the standard optimizer applies optimizations to equalities in FILTERs. This optimization is conservative - it does not take place if there is a potential risk of changing query semantics.
    • optFilterInequality

      public static final Symbol optFilterInequality
      Context key controlling whether the standard optimizer applies optimizations to inequalities in FILTERs This optimization is conservative - it does not take place if there is a potential risk of changing query semantics
    • optFilterImplicitJoin

      public static final Symbol optFilterImplicitJoin
      Context key controlling whether the standard optimizer applies optimizations to implicit joins in FILTERs. This optimization is conservative - it does not take place if there is a potential risk of changing query semantics.
    • optImplicitLeftJoin

      public static final Symbol optImplicitLeftJoin
      Context key controlling whether the standard optimizer applies optimizations to implicit left joins. This optimization is conservative - it does not take place if there is a potential risk of changing query semantics.
    • optExprConstantFolding

      public static final Symbol optExprConstantFolding
      Context key controlling whether the standard optimizer applies constant folding to expressions

      By default, this transformation is applied.

    • optFilterConjunction

      public static final Symbol optFilterConjunction
      Context key controlling whether the standard optimizer applies optimizations to conjunctions (&&) in filters.

      By default, this transformation is applied.

    • optFilterExpandOneOf

      public static final Symbol optFilterExpandOneOf
      Context key controlling whether the standard optimizer applies optimizations to IN and NOT IN.

      By default, this transformation is applied.

    • optFilterDisjunction

      public static final Symbol optFilterDisjunction
      Context key controlling whether the standard optimizer applies optimizations to disjunctions (||) in filters.

      By default, this transformation is applied.

    • optPromoteTableEmpty

      public static final Symbol optPromoteTableEmpty
      Context key controlling whether the standard optimizer applies table empty promotion
    • optIndexJoinStrategy

      public static final Symbol optIndexJoinStrategy
      Context key controlling whether the standard optimizer applies optimizations to the evaluation of joins to favour index joins wherever possible
    • optInlineAssignments

      public static final Symbol optInlineAssignments
      Context key controlling whether the standard optimizer applies optimizations where by some assignments may be eliminated/inlined into the operators where their values are used only once

      By default, this transformation is not applied.

    • optInlineAssignmentsAggressive

      public static final Symbol optInlineAssignmentsAggressive
      Context key controlling whether the standard optimizer aggressively inlines assignments whose values are used only once into operators where those expressions may be evaluated multiple times e.g. order

      This is modifier to optInlineAssignments.

    • optMergeBGPs

      public static final Symbol optMergeBGPs
      Context key controlling whether the standard optimizater applies optimizations to joined BGPs to merge them into single BGPs.

      By default, this transformation is applied.

    • optMergeExtends

      public static final Symbol optMergeExtends
      Context key controlling whether the standard optimizer applies the optimization to combine stacks of (extend) into one compound operation. Ditto (assign).

      By default, this transformation is applied.

    • optReorderBGP

      public static final Symbol optReorderBGP
      Context key controlling whether the standard optimizer applies the optimization to reorder basic graph patterns. This is an algebra optimizer step. Because it interacts with filter placement, it is worth doing even though there are later reorderings.
    • propertyFunctions

      public static final Symbol propertyFunctions
      Context key controlling whether the main query engine processes property functions.

      By default, this is applied.

    • extensionValueTypes

      public static final Symbol extensionValueTypes
      Expression evaluation without extension types (e.g. xsd:date, language tags)
    • systemPropertyScripting

      public static final String systemPropertyScripting
      Java system property to enable JavaScript functions
      See Also:
    • symCustomFunctionScriptAllowList

      public static final Symbol symCustomFunctionScriptAllowList
      Context symbol for the script function allow list
    • symJavaScriptFunctions

      public static Symbol symJavaScriptFunctions
      Context symbol for JavaScript functions as a string value which is evaluated. arq:js-functions.
    • symJavaScriptLibFile

      public static Symbol symJavaScriptLibFile
      Context symbol for JavaScript library of functions defined in a file. arq:js-library.
    • generateToList

      public static final Symbol generateToList
      Generate the ToList operation in the algebra (as ARQ is stream based, ToList is a non-op). Default is not to do so. Strict mode will also enable this.
    • NAME

      public static final String NAME
      The product name
      See Also:
    • VERSION

      public static final String VERSION
      The ARQ version
  • Constructor Details

    • ARQ

      public ARQ()
  • Method Details

    • getExecLogger

      public static org.slf4j.Logger getExecLogger()
      The execution logger
    • getInfoLogger

      public static org.slf4j.Logger getInfoLogger()
      The information logger
    • getHttpRequestLogger

      public static org.slf4j.Logger getHttpRequestLogger()
      The HTTP Request logger
    • getExecutionLogging

      public static Explain.InfoLevel getExecutionLogging()
      Get the currently global execution logging setting
    • setExecutionLogging

      public static void setExecutionLogging(Explain.InfoLevel infoLevel)
      Set execution logging - logging is to logger "org.apache.jena.arq.exec" at level INFO. An appropriate logging configuration is also required.
    • enableBlankNodeResultLabels

      public static void enableBlankNodeResultLabels()
      Turn on processing of blank node labels in queries
    • enableBlankNodeResultLabels

      public static void enableBlankNodeResultLabels(boolean val)
      Turn on/off processing of blank node labels in queries
    • enableOptimizer

      public static void enableOptimizer(boolean state)
      Globally switch the default optimizer on and off : Note that storage subsystems may also be applying separately controlled optimizations.
    • enableOptimizer

      public static void enableOptimizer(Context context, boolean state)
      Switch the default optimizer on and off for a specific Context. Note that storage subsystems may also be applying separately controlled optimizations.
    • setStrictMode

      public static void setStrictMode()
      Set strict mode, including expression evaluation
    • setStrictMode

      public static void setStrictMode(Context context)
      Set strict mode for a given Context. Does not influence expression evaluation because NodeValues are controlled globally, not per context.
    • isStrictMode

      public static boolean isStrictMode()
    • setNormalMode

      public static void setNormalMode()
      Set normal mode, including expression evaluation
    • setNormalMode

      public static void setNormalMode(Context context)
      Explicitly set the values for normal operation. Does not influence expression evaluation.
    • init

      public static void init()
      Ensure things have started - applications do not need call this. The method is public so any part of ARQ can call it.
    • getContext

      public static Context getContext()
    • set

      public static void set(Symbol symbol, boolean value)
    • setTrue

      public static void setTrue(Symbol symbol)
    • setFalse

      public static void setFalse(Symbol symbol)
    • unset

      public static void unset(Symbol symbol)
    • isTrue

      public static boolean isTrue(Symbol symbol)
    • isFalse

      public static boolean isFalse(Symbol symbol)
    • isTrueOrUndef

      public static boolean isTrueOrUndef(Symbol symbol)
    • isFalseOrUndef

      public static boolean isFalseOrUndef(Symbol symbol)