RepositoryImpl Configurer

The Purpose

Each project inside Semantic Turkey is associated with a local RDF4J RepositoryManager that is in charge of managing the lifecycle of the RDF repositories backing the project. Indeed, a project has always a core repository containing the data being edited, and optionally a support repository containing history/validation metadata. Additional repositories can be created for different purposes, such as creating a snapshot of a specific version of the core repository. A RepositoryImplConfigurer is able to configure a specific type of repository.

The Model

In RDF4J the configuration of a repository ( RepositoryConfig) contains a reference to a RepositoryImplConfig, which tells the nature of the repository (e.g. a sail-based one, or a remote repository) together with specific configuration properties. Semantic Turkey neatly distinguishes remote repositories from local ones, since the former are managed natively by Semantic Turkey, while in the latter case a RepositoryImplConfigurer is used to instantiate the repository configuration. Assuming that the configured repository is sail-based, an optional function is passed to the configurer, which is in charge to decorate the backend sail with further sails, such as the one implementing history/validation.

Extension Point Details

The tables below summarizes the details of the RepositoryImplConfigurer extension point.

Name RepositoryImpl Configurer
Description A RepositoryImplConfigurer creates a RepositoryImplConfig for a specific triple store technology
Identifier it.uniroma2.art.semanticturkey.extension.extpts.repositoryimplconfigurer.RepositoryImplConfigurer
Configuration n/a
Settings n/a

Interfaces

The following interface defines the contract for the RepositoryImplConfigurer extension point.


/**
* A component providing the configuration for a {@link RepositoryImplConfig}.
*/
public interface RepositoryImplConfigurer extends Extension {
	/**
	* Builds a {@link RepositoryImplConfig}, considering the provided <code>backend decorator</code> (if not
	* <code>null</code>). A <code>backend decorator</code> wraps the backed sail with any stackable sail
	* (useful to add history/validation).
	* 
	* @param backendDecorator
	* @return
	*/
	RepositoryImplConfig buildRepositoryImplConfig(
			@Nullable Function<SailImplConfig, SailImplConfig> backendDecorator);
}

Choosing and Configuring a RepositoryImpl Configurer

RepositoryImplConfigurer can be created on demand by the system as it is needed to create a local repository or to create a repository on a remote server. Nonetheless, they are usually configurable components, the configurations of which can be stored according to the standard configuration/settings mechanism.

RepositoryImplConfigurer Implementations

Predefined RepositoryImpl Configurer

Name Predefined RepositoryImpl Configurer
Description A RepositoryImplConfigurer that supports various configurations backed by Eclipse RDF4J or Ontotext GraphDB
Identifier it.uniroma2.art.semanticturkey.extension.impl.repositoryimplconfigurer.predefined.PredefinedRepositoryImplConfigurer
Configuration

Scopes: PROJECT, USER,

GraphDB Free (remote only) (it.uniroma2.art.semanticturkey.extension.impl.repositoryimplconfigurer.predefined.GraphDBFreeConfigurerConfiguration)
baseURL (baseURL)
BASE URL (owlim:base-URL)
java.lang.String (default: "")
Optional
defaultNS (defaultNS)
Default namespaces for imports(';' delimited) (owlim:defaultNS)
java.lang.String (default: "")
Optional
entityIndexSize (entityIndexSize)
Entity index size (owlim:entity-index-size)
int (default: 10000000)
Optional
entityIdSize (entityIdSize)
Entity ID bit-size (owlim:entity-id-size)
int (either 32 [default] or 40)
Optional
imports (imports)
Imported RDF files(';' delimited) (owlim:imports)
java.lang.String (default: "")
Optional
repositoryType (repositoryType)
Repository type (owlim:repository-type)
java.lang.String (either file-repository [default] or weighted-file-repository)
Optional
ruleset (ruleset)
Rule-set (owlim:ruleset)
java.lang.String (either "empty" [default], "rdfs", "rdfsplus", "owl-horst", "owl-max", "owl2-rl", "rdfs-optimized", "rdfsplus-optimized", "owl-horst-optimized", "owl-max-optimized", "owl2-rl-optimized")
Optional
storageFolder (storageFolder)
Storage folder (owlim:storage-folder)
java.lang.String (default "storage")
Optional
enableContextIndex (enableContextIndex)
Use context index (owlim:enable-context-index)
boolean (default false)
Optional
enablePredicateList (enablePredicateList)
Use predicate indices (owlim:enablePredicateList)
boolean (default true)
Optional
inMemoryLiteralProperties (inMemoryLiteralProperties)
Cache literal language tags (owlim:in-memory-literal-properties)
boolean (default true)
Optional
enableLiteralIndex (enableLiteralIndex)
Enable literal index (owlim:enable-literal-index)
boolean (default true)
Optional
checkForInconsistencies (checkForInconsistencies)
Check for inconsistencies (owlim:check-for-inconsistencies)
boolean (default false)
Optional
disableSameAs (disableSameAs)
OWL sameAs (owlim:disable-sameAs)
boolean (default true)
Optional
queryTimeout (queryTimeout)
Query time-out (seconds) (owlim:query-timeout)
int (default 0)
Optional
queryLimitResults (queryLimitResults)
Limit query results (seconds) (owlim:query-limit-results)
int (default 0)
Optional
throwQueryEvaluationExceptionOnTimeout (throwQueryEvaluationExceptionOnTimeout)
Throw exception on query time-out (owlim:throw-QueryEvaluationException-on-timeout)
boolean (default false)
Optional
readOnly (readOnly)
Read-only (owlim:read-only)
boolean (default false)
Optional

GraphDB SE (remote only) (it.uniroma2.art.semanticturkey.extension.impl.repositoryimplconfigurer.predefined.GraphDBSEConfigurerConfiguration)
baseURL (baseURL)
BASE URL (owlim:base-URL)
java.lang.String (default: "")
Optional
defaultNS (defaultNS)
Default namespaces for imports(';' delimited) (owlim:defaultNS)
java.lang.String (default: "")
Optional
entityIndexSize (entityIndexSize)
Entity index size (owlim:entity-index-size)
int (default: 10000000)
Optional
entityIdSize (entityIdSize)
Entity ID bit-size (owlim:entity-id-size)
int (either 32 [default] or 40)
Optional
imports (imports)
Imported RDF files(';' delimited) (owlim:imports)
java.lang.String (default: "")
Optional
repositoryType (repositoryType)
Repository type (owlim:repository-type)
java.lang.String (either file-repository [default] or weighted-file-repository)
Optional
ruleset (ruleset)
Rule-set (owlim:ruleset)
java.lang.String (either "empty" [default], "rdfs", "rdfsplus", "owl-horst", "owl-max", "owl2-rl", "rdfs-optimized", "rdfsplus-optimized", "owl-horst-optimized", "owl-max-optimized", "owl2-rl-optimized")
Optional
storageFolder (storageFolder)
Storage folder (owlim:storage-folder)
java.lang.String (default "storage")
Optional
enableContextIndex (enableContextIndex)
Use context index (owlim:enable-context-index)
boolean (default false)
Optional
enablePredicateList (enablePredicateList)
Use predicate indices (owlim:enablePredicateList)
boolean (default true)
Optional
inMemoryLiteralProperties (inMemoryLiteralProperties)
Cache literal language tags (owlim:in-memory-literal-properties)
boolean (default true)
Optional
enableLiteralIndex (enableLiteralIndex)
Enable literal index (owlim:enable-literal-index)
boolean (default true)
Optional
checkForInconsistencies (checkForInconsistencies)
Check for inconsistencies (owlim:check-for-inconsistencies)
boolean (default false)
Optional
disableSameAs (disableSameAs)
OWL sameAs (owlim:disable-sameAs)
boolean (default true)
Optional
queryTimeout (queryTimeout)
Query time-out (seconds) (owlim:query-timeout)
int (default 0)
Optional
queryLimitResults (queryLimitResults)
Limit query results (seconds) (owlim:query-limit-results)
int (default 0)
Optional
throwQueryEvaluationExceptionOnTimeout (throwQueryEvaluationExceptionOnTimeout)
Throw exception on query time-out (owlim:throw-QueryEvaluationException-on-timeout)
boolean (default false)
Optional
readOnly (readOnly)
Read-only (owlim:read-only)
boolean (default false)
Optional

in memory / persistent (it.uniroma2.art.semanticturkey.extension.impl.repositoryimplconfigurer.predefined.RDF4JPersistentInMemorySailConfigurerConfiguration)
syncDelay (syncDelay)
time in milliseconds before model is persisted; default is 1000 ms
long (default: 1000)
Optional
directTypeInference (directTypeInference)
true if the RDF4J repository has to support directType inference; defaults to true
boolean (default: false)
Optional
rdfsInference (rdfsInference)
true if the RDF4J repository has to support RDFS inferencing; defaults to true
boolean (default: false)
Optional

native store / persistent (it.uniroma2.art.semanticturkey.extension.impl.repositoryimplconfigurer.predefined.RDF4JNativeSailConfigurerConfiguration)
forceSync (forceSync)
Specifies whether updates should be synced to disk forcefully; defaults to false
boolean (default: false)
Optional
tripleIndexes (tripleIndexes)
specifies the triple indexes to be created for optimizing query resolution; defaults to spoc, posc
java.lang.String (default: "spoc, posc")
Optional
directTypeInference (directTypeInference)
true if the RDF4J repository has to support directType inference; defaults to true
boolean (default: false)
Optional
rdfsInference (rdfsInference)
true if the RDF4J repository has to support RDFS inferencing; defaults to true
boolean (default: false)
Optional
Settings n/a