# "databases[0]" can be used to specify the first entry in the databases array
semspect.rdf.databases[0].database: default-db

################################
# optional generation parameters
################################

# parsingStrategy
#
# options:
# - ONE_PASS (default):
#   - generate base structures (triples, dictionary) in a single pass
#     over the provided RDF datasets
#   - consumes more main memory because uncompressed dictionary and triples
#     are loaded simultaneously into memory
# - TWO_PASS:
#   - generate base structures (triples, dictionary) in two iterations
#     over the provided RDF datasets
#   - dictionary is generated in first pass, triples in second
#   - consumes less main memory since dictionary is compressed during
#     generation on demand
semspect.rdf.databases[0].indexing.parsingStrategy: ONE_PASS

# consoleLogMode
#
# options:
# - VERBOSE (default): detailed console output during indexing
# - PROGRESS_BAR_ONLY: outputs only the progress bar
# - DISABLED: neither progress bar nor other log messages during indexing
semspect.rdf.databases[0].indexing.consoleLogMode: VERBOSE

# numberOfThreads
#
# default: available processors of machine
semspect.rdf.databases[0].indexing.numberOfThreads: 4

# terminateAfterIndexing
#
# default: false
semspect.rdf.databases[0].indexing.terminateAfterIndexing: false

# validateParsedResources
#
# default: false
semspect.rdf.databases[0].indexing.validateParsedResources: false

# iriDictionarySectionType
#
# Which type of dictionary section should be used for all IRIs.
# An uncompressed type requires more space but might lead to a higher
# performance when applying string filters.
#
# options:
# - PLAIN_FRONT_CODING (default)
# - UNCOMPRESSED_STRINGS
semspect.rdf.databases[0].indexing.iriDictionarySectionType: PLAIN_FRONT_CODING

# stringLiteralDictionarySectionType
#
# Which type of dictionary section should be used for all string literals.
# An uncompressed type requires more space but might lead to a higher
# performance when applying string filters.
#
# options:
# PLAIN_FRONT_CODING (default)
# UNCOMPRESSED_STRINGS
semspect.rdf.databases[0].indexing.stringLiteralDictionarySectionType: PLAIN_FRONT_CODING

# disableDomainRangeEntailment
#
# When set to true all entailments implied by rdfs:domain as well as rdfs:range
# are ignored.
#
# default: false
semspect.rdf.databases[0].indexing.disableDomainRangeEntailment: false

# disableSubClassOfEntailment
#
# When set to true, subclass relationships defined using rdfs:subClassOf
# are not used to infer additional class memberships.
#
# default: false
semspect.rdf.databases[0].indexing.disableSubClassOfEntailment: false

# disableSubPropertyOfEntailment
#
# When set to true, subproperty relationships defined using rdfs:subPropertyOf
# are ignored during entailment to prevent inheritance of property semantics.
#
# default: false
semspect.rdf.databases[0].indexing.disableSubPropertyOfEntailment: false

# disableSymmetricPropertyAndInverseOfEntailment
#
# When set to true, entailments based on owl:SymmetricProperty and owl:inverseOf
# are disabled, meaning bidirectional and inverse relationships are not inferred.
#
# default: false
semspect.rdf.databases[0].indexing.disableSymmetricPropertyAndInverseOfEntailment: false

##################################
# additional exploration settings
##################################

# explorationMenuWithoutCount
#
# If enabled, the exploration menu does not show the distinct number of connected
# resources. It only shows whether at least one resource of a particular class is
# connected to the given group (increases performance).
#
# default: false
semspect.rdf.databases[0].exploration.explorationMenuWithoutCount: false

# numberOfThreads
#
# default: number of processors of machine
semspect.rdf.databases[0].exploration.numberOfThreads: 4

# cacheGroups
#
# default: true
semspect.rdf.databases[0].exploration.cacheGroups: true

# showClassesAndPropertiesAsResources
#
# If set to true, rdf:Property and rdfs:Class are shown in the class tree.
#
# default: false
semspect.rdf.databases[0].exploration.showClassesAndPropertiesAsResources: false

# showTopClassInTree
#
# If set to true, the top class rdfs:Resource is displayed in the class tree and expansion menu.
#
# default: false
semspect.rdf.databases[0].exploration.showTopClassInTree: false

# enableTopClassInExploration
#
# If set to true, the top class (rdfs:Resource) is included in backend queries, which
# enables API operations that rely on it, even when the top class is hidden in the UI.
# Useful for resource-centric explorations where a universal superclass is required.
#
# default: false
semspect.rdf.databases[0].exploration.enableTopClassInExploration: false

#
# If set to true, the classes rdf:Statement and owl:Axiom are shown in the class tree.
#
# default: false
semspect.rdf.databases[0].exploration.showStatementClassInTree: false

# enableSubClassOfSPARQLRewriting
#
# When set to true, SPARQL queries copied from the exploration are rewritten to
# ensure class hierarchy entailment based on rdfs:subClassOf and owl:equivalentClass.
# Use when the target store does not perform subclass or equivalence entailment natively.
#
# default: false
semspect.rdf.databases[0].exploration.enableSubClassOfSPARQLRewriting: false

# logMemoryUsage
#
# Logs the used main memory to the file
# INDICES_DIRECTORY/exploration/log/memoryConsumption.csv
#
# default: false
semspect.rdf.databases[0].exploration.logMemoryUsage: false

# explorationMenuComputationMethod
#
# options:
# - ROARING_BITMAPS_PER_CLASS
# - SORTED_ITERATION_PER_CLASS
# - INDIVIDUAL_QUERIES_PER_CLASS
# - INDIVIDUAL_QUERIES
# - ROARING_BITMAPS
# - DYNAMICALLY_DETERMINED_PER_CLASS
# - DYNAMICALLY_DETERMINED (default)
semspect.rdf.databases[0].exploration.explorationMenuComputationMethod: DYNAMICALLY_DETERMINED

# explorationMenuWithoutCountComputationMethod
#
# options:
# - PER_CLASS
# - GLOBAL
# - DYNAMICALLY_DETERMINED (default)
semspect.rdf.databases[0].exploration.explorationMenuWithoutCountComputationMethod: DYNAMICALLY_DETERMINED

# predecessorCountComputationMethod
#
# options:
# - SORTED_ITERATION
# - HASH_SET
# - DYNAMICALLY_DETERMINED (default)
semspect.rdf.databases[0].exploration.predecessorCountComputationMethod: DYNAMICALLY_DETERMINED

# filterComputationMethod
#
# options:
# - QUERY_PER_INDIVIDUAL
# - INDEX_ITERATION
# - DYNAMICALLY_DETERMINED (default)
semspect.rdf.databases[0].exploration.filterComputationMethod: DYNAMICALLY_DETERMINED

# sortingMethod
#
# options:
# - INDEX_ITERATION
# - SORTING_ON_THE_FLY
# - DYNAMICALLY_DETERMINED (default)
semspect.rdf.databases[0].exploration.sortingMethod: DYNAMICALLY_DETERMINED

#########################
# experimental features
#########################

# translateSKOSToRDFS
#
# This option introduces a class hierarchy to reflect the SKOS concept
# taxonomy. A concept class is generated for each SKOS concept that has a narrower concept. 
# and each skos:broader, skos:narrower, and skos:exactMatch relation is translated to the
# corresponding rdfs:subClassOf axioms.
# Moreover, all root and leaf concepts of the derived hierarchy are assigned new classes
# "Root Concept" and "Leaf Concept" respectively.
# Example:
#   For ":super-c skos:narrower :sub-c", we derive ":sub-c rdfs:subClassOf :super-c".
#   For ":sub-c skos:broader :super-c", we derive ":sub-c a :super-c".
#
# default: false
semspect.rdf.databases[0].indexing.translateSKOSToRDFS: false

# indexReificationTriples
#
# If this parameter is set, reification triples such as ":some-statement rdf:subject :some-subject" will be indexed and
# can also be explored in SemSpect. Since rdf:Statement and owl:Axiom are however disabled by default, it might be reasonable to
# additionally set the parameter "[...].exploration.showStatementClassInTree" (as specified in load configuration).
#
# default: false
semspect.rdf.databases[0].indexing.indexReificationTriples: false

##################################
# additional server settings
##################################

# port
#
# default: 8080
server.port: 8080

# x-frame support
# The x-frame functionality is a way of combining and organizing web-based
# documents together on a single webpage through the use of frames (HTML
# elements that allow you to display content from another source, such as
# another webpage or a video). By default, the x-frame functionality is
# disabled by Spring Boot, however, by using the following parameter, it is
# possible to define frame-ancestors to include SemSpect in other HTML pages
# (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) .
#
# default: disabled
server.frame-ancestors: [ ]

# context path
#
# Determines at which context path the content will be served by the server.
# For instance, if it is set to "/dataset-x", SemSpect gets hosted on "localhost:8080/dataset-x".
# This option might be helpful to distinguish different running instances of
# SemSpect not merely by their port.
#
# default: /
server.servlet.context-path: /

# basic auth
#
# Enables Basic HTTP Authentication for a single user.
#
# Generate the password_hash via spring-boot cli's encodepassword command.
# Installation and usage see: https://docs.spring.io/spring-boot/cli
# E.g: ./spring encodepassword my_password
#
# default: disabled
#spring.security:
#  user:
#    name: 'username'
#    password: 'password_hash'

###############################################
# additional backend-independent core settings
###############################################

# enableCaptionPropertySelection
#
# Enables per-category UI override of which property to use for captions.
#
# default: true
semspect.core.enableCaptionPropertySelection: true

# enableDescriptionPropertySelection
#
# Enables per-category UI override of which property to use for descriptions.
#
# default: true
semspect.core.enableDescriptionPropertySelection: true

############################
# presentation config
############################

# locales
#
# List of BCP-47 language tags in descending order of priority.
# Locales are applied in sequence. If no literal exists for all provided languages,
# untagged literals are considered next.
#
# default: ["en"]
# presentation.locales: ["en"]


# captionProperties
#
# List of IRIs (highest to lowest priority) used to select caption values.
# Must be a non-empty list. If no literal exists for any of these properties,
# the resource IRI is used as the caption.
#
# The order in which captions across different languages are displayed
# is determined by evaluating (property, locale) priority pairs.
# Pairs are sorted high to low first by property priority, then by locale priority.
#
# default:
#   - "http://www.w3.org/2004/02/skos/core#prefLabel"
#   - "http://www.w3.org/2000/01/rdf-schema#label"
#   - "http://www.w3.org/2004/02/skos/core#altLabel"
# presentation.captionProperties: []

# descriptionProperties
#
# List of IRIs (highest to lowest priority) used to select description values.
# Must be a non-empty list.
#
# The order in which descriptions across different languages are displayed
# is determined by evaluating (property, locale) priority pairs.
# Pairs are sorted high to low first by property priority, then by locale priority.
#
# default:
#   - "http://www.w3.org/2004/02/skos/core#definition"
#   - "http://www.w3.org/2000/01/rdf-schema#comment"
#   - "http://www.w3.org/2004/02/skos/core#note"
#   - "http://www.w3.org/2004/02/skos/core#example"
# presentation.descriptionProperties: []
