Class ShaclSailBaseConfiguration

    • Field Detail

      • logger

        private static final org.slf4j.Logger logger
      • sparqlValidation

        final boolean sparqlValidation
      • parallelValidation

        private boolean parallelValidation
      • logValidationPlans

        private boolean logValidationPlans
      • logValidationViolations

        private boolean logValidationViolations
      • validationEnabled

        private boolean validationEnabled
      • cacheSelectNodes

        private boolean cacheSelectNodes
      • rdfsSubClassReasoning

        private boolean rdfsSubClassReasoning
      • serializableValidation

        private boolean serializableValidation
      • performanceLogging

        private boolean performanceLogging
      • eclipseRdf4jShaclExtensions

        private boolean eclipseRdf4jShaclExtensions
      • dashDataShapes

        private boolean dashDataShapes
      • validationResultsLimitTotal

        private long validationResultsLimitTotal
      • validationResultsLimitPerConstraint

        private long validationResultsLimitPerConstraint
      • transactionalValidationLimit

        private long transactionalValidationLimit
      • logValidationExecution

        private boolean logValidationExecution
      • shapesGraphs

        private java.util.Set<IRI> shapesGraphs
    • Constructor Detail

      • ShaclSailBaseConfiguration

        public ShaclSailBaseConfiguration​(NotifyingSail baseSail)
      • ShaclSailBaseConfiguration

        public ShaclSailBaseConfiguration()
    • Method Detail

      • isGlobalLogValidationExecution

        public boolean isGlobalLogValidationExecution()
        Check if logging of every execution steps is enabled.
        Returns:
        true if enabled, false otherwise.
        See Also:
        setGlobalLogValidationExecution(boolean)
      • setGlobalLogValidationExecution

        public void setGlobalLogValidationExecution​(boolean loggingEnabled)
        Log (INFO) every execution step of the SHACL validation. This is fairly costly and should not be used in production. Recommended to disable parallel validation with setParallelValidation(false)
        Parameters:
        loggingEnabled -
      • setLogValidationViolations

        public void setLogValidationViolations​(boolean logValidationViolations)
        Log (INFO) a list of violations and the triples that caused the violations (BETA). Recommended to disable parallel validation with setParallelValidation(false)
        Parameters:
        logValidationViolations -
      • isParallelValidation

        public boolean isParallelValidation()
        Check if SHACL validation is run in parellel.
        Returns:
        true if enabled, false otherwise.
      • setParallelValidation

        public void setParallelValidation​(boolean parallelValidation)
        EXPERIMENTAL! Run SHACL validation in parallel. Default: false

        May cause deadlock, especially when using NativeStore.

        Parameters:
        parallelValidation - default true
      • isCacheSelectNodes

        public boolean isCacheSelectNodes()
        Check if selected nodes caches is enabled.
        Returns:
        true if enabled, false otherwise.
        See Also:
        setCacheSelectNodes(boolean)
      • setCacheSelectNodes

        public void setCacheSelectNodes​(boolean cacheSelectNodes)
        The ShaclSail retries a lot of its relevant data through running SPARQL Select queries against the underlying sail and against the changes in the transaction. This is usually good for performance, but while validating large amounts of data disabling this cache will use less memory. Default: true
        Parameters:
        cacheSelectNodes - default true
      • isRdfsSubClassReasoning

        public boolean isRdfsSubClassReasoning()
      • setRdfsSubClassReasoning

        public void setRdfsSubClassReasoning​(boolean rdfsSubClassReasoning)
      • disableValidation

        public void disableValidation()
        Disable the SHACL validation on commit()
      • enableValidation

        public void enableValidation()
        Enabled the SHACL validation on commit()
      • isValidationEnabled

        public boolean isValidationEnabled()
        Check if SHACL validation on commit() is enabled.
        Returns:
        true if validation is enabled, false otherwise.
      • isLogValidationPlans

        public boolean isLogValidationPlans()
        Check if logging of validation plans is enabled.
        Returns:
        true if validation plan logging is enabled, false otherwise.
      • setLogValidationPlans

        public void setLogValidationPlans​(boolean logValidationPlans)
        Log (INFO) the executed validation plans as GraphViz DOT Recommended to disable parallel validation with setParallelValidation(false)
        Parameters:
        logValidationPlans -
      • isPerformanceLogging

        public boolean isPerformanceLogging()
      • setPerformanceLogging

        public void setPerformanceLogging​(boolean performanceLogging)
        Log (INFO) the execution time per shape. Recommended to disable the following:
        • setParallelValidation(false)
        • setCacheSelectNodes(false)
        Parameters:
        performanceLogging - default false
      • isSerializableValidation

        public boolean isSerializableValidation()
        On transactions using SNAPSHOT isolation the ShaclSail can run the validation serializably. This stops the sail from becoming inconsistent due to race conditions between two transactions. Serializable validation limits TPS (transactions per second), it is however considerably faster than actually using SERIALIZABLE isolation.
        Returns:
        true if serializable validation is enabled, false otherwise.
      • setSerializableValidation

        public void setSerializableValidation​(boolean serializableValidation)
        Enable or disable serializable validation.On transactions using SNAPSHOT isolation the ShaclSail can run the validation serializably. This stops the sail from becoming inconsistent due to race conditions between two transactions. Serializable validation limits TPS (transactions per second), it is however considerably faster than actually using SERIALIZABLE isolation.

        To increase TPS, serializable validation can be disabled. Validation will then be limited to the semantics of the SNAPSHOT isolation level (or whichever is specified). If you use any other isolation level than SNAPSHOT, disabling serializable validation will make no difference on performance.

        Parameters:
        serializableValidation - default true
      • isEclipseRdf4jShaclExtensions

        @Experimental
        public boolean isEclipseRdf4jShaclExtensions()
        Support for Eclipse RDF4J SHACL Extensions (http://rdf4j.org/shacl-extensions#). Enabling this currently enables support for rsx:targetShape.

        EXPERIMENTAL!

        Returns:
        true if enabled
      • setEclipseRdf4jShaclExtensions

        @Experimental
        public void setEclipseRdf4jShaclExtensions​(boolean eclipseRdf4jShaclExtensions)
        Support for Eclipse RDF4J SHACL Extensions (http://rdf4j.org/shacl-extensions#). Enabling this currently enables support for rsx:targetShape.

        EXPERIMENTAL!

        Parameters:
        eclipseRdf4jShaclExtensions - true to enable (default: false)
      • isDashDataShapes

        @Experimental
        public boolean isDashDataShapes()
        Support for DASH Data Shapes Vocabulary Unofficial Draft (http://datashapes.org/dash). Currently this enables support for dash:hasValueIn, dash:AllObjectsTarget and dash:AllSubjectsTarget.

        EXPERIMENTAL!

        Returns:
        true if enabled
      • setDashDataShapes

        @Experimental
        public void setDashDataShapes​(boolean dashDataShapes)
        Support for DASH Data Shapes Vocabulary Unofficial Draft (http://datashapes.org/dash). Currently this enables support for dash:hasValueIn, dash:AllObjectsTarget and and dash:AllSubjectsTarget.

        EXPERIMENTAL!

        Parameters:
        dashDataShapes - true to enable (default: false)
      • getValidationResultsLimitPerConstraint

        public long getValidationResultsLimitPerConstraint()
        ValidationReports contain validation results. The number of validation results can be limited by the user. This can be useful to reduce the size of reports when there are a lot of failures, which increases validation speed and reduces memory usage.
        Returns:
        the limit for validation results per validation report per constraint, -1 for no limit
      • setValidationResultsLimitPerConstraint

        public void setValidationResultsLimitPerConstraint​(long validationResultsLimitPerConstraint)
        ValidationReports contain validation results. The number of validation results can be limited by the user. This can be useful to reduce the size of reports when there are a lot of failures, which increases validation speed and reduces memory usage.
        Parameters:
        validationResultsLimitPerConstraint - the limit for the number of validation results per report per constraint, -1 for no limit
      • getEffectiveValidationResultsLimitPerConstraint

        public long getEffectiveValidationResultsLimitPerConstraint()
        Returns:
        the effective limit per constraint with an upper bound of the total limit
      • getValidationResultsLimitTotal

        public long getValidationResultsLimitTotal()
        ValidationReports contain validation results. The number of validation results can be limited by the user. This can be useful to reduce the size of reports when there are a lot of failures, which increases validation speed and reduces memory usage.
        Returns:
        the limit for validation results per validation report in total, -1 for no limit
      • setValidationResultsLimitTotal

        public void setValidationResultsLimitTotal​(long validationResultsLimitTotal)
        ValidationReports contain validation results. The number of validation results can be limited by the user. This can be useful to reduce the size of reports when there are a lot of failures, which increases validation speed and reduces memory usage.
        Parameters:
        validationResultsLimitTotal - the limit for the number of validation results per report in total, -1 for no limit
      • getTransactionalValidationLimit

        public long getTransactionalValidationLimit()
      • setTransactionalValidationLimit

        public void setTransactionalValidationLimit​(long transactionalValidationLimit)
      • getShapesGraphs

        public java.util.Set<IRI> getShapesGraphs()
      • setShapesGraphs

        public void setShapesGraphs​(java.util.Set<IRI> shapesGraphs)