summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php
diff options
context:
space:
mode:
authorYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
committerYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
commitfc7369835258467bf97eb64f184b93691f9a9fd5 (patch)
treedaabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php
first commit
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php2352
1 files changed, 2352 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php b/www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php
new file mode 100644
index 00000000..8229b848
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php
@@ -0,0 +1,2352 @@
+<?php
+
+/**
+ * DO NOT EDIT!
+ *
+ * The following default settings are to be used by the extension itself,
+ * please modify settings in the LocalSettings file.
+ *
+ * Most settings should be make between including this file and the call
+ * to enableSemantics(). Exceptions that need to be set before are
+ * documented below.
+ *
+ * @codeCoverageIgnore
+ */
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( "This file is part of the Semantic MediaWiki extension. It is not a valid entry point.\n" );
+}
+
+return [
+
+ ###
+ # This is the path to your installation of Semantic MediaWiki as seen on your
+ # local filesystem. Used against some PHP file path issues.
+ #
+ # @since 1.0
+ ##
+ 'smwgIP' => __DIR__ . '/',
+ #
+ # @since 2.5
+ ##
+ 'smwgExtraneousLanguageFileDir' => __DIR__ . '/i18n/extra',
+ 'smwgServicesFileDir' => __DIR__ . '/src/Services',
+ 'smwgResourceLoaderDefFiles' => [ 'smw' => __DIR__ . '/res/Resources.php' ],
+ 'smwgMaintenanceDir' => __DIR__ . '/maintenance',
+ ##
+
+ ###
+ # Configuration directory
+ # @see #3506
+ #
+ # The maintained directory needs to be writable in order for configuration
+ # information to be stored persistently and be accessible for Semantic
+ # MediaWiki throughout its operation.
+ #
+ # You may assign the same directory as in `wgUploadDirectory` (e.g
+ # $smwgConfigFileDir = $wgUploadDirectory;) or select an entire different
+ # location. The default location is the Semantic MediaWiki extension root.
+ #
+ # @since 3.0
+ ##
+ 'smwgConfigFileDir' => __DIR__,
+ ##
+
+ ###
+ # Upgrade key
+ #
+ # This key verifies that a correct upgrade (update.php/setupStore.php) path
+ # was selected and hereby ensures a consistent DB setup.
+ #
+ # Whenever a DB table change occurs, modify the key value (e.g. `smw:20...`)
+ # to reflect the requirement for the client to follow the processes as
+ # outlined in the installation manual.
+ #
+ # Once the installer is run, the `.smw.json` will be updated and no longer
+ # cause any exception.
+ #
+ # @since 3.0
+ ##
+ 'smwgUpgradeKey' => 'smw:2018-09-01',
+ ##
+
+ ###
+ # Content import
+ #
+ # Controls the content import directory and version that is expected to be
+ # imported during the setup process.
+ #
+ # For all legitimate files in `smwgImportFileDirs`, the import is initiated
+ # if the `smwgImportReqVersion` compares with the declared version in the file.
+ #
+ # In case `smwgImportReqVersion` is maintained with `false` then the import
+ # is going to be disabled.
+ #
+ # @since 2.5
+ ##
+ 'smwgImportFileDirs' => [ 'default' => __DIR__ . '/data/import' ],
+ 'smwgImportReqVersion' => 1,
+ ##
+
+ ###
+ # Semantic MediaWiki's operational state
+ #
+ # It is expected that enableSemantics() is used to enable SMW otherwise it is
+ # disabled by default. disableSemantics() will also set the state to disabled.
+ #
+ # @since 2.4
+ ##
+ 'smwgSemanticsEnabled' => false,
+ ##
+
+ ###
+ # CompatibilityMode is to force SMW to work with other extensions that may impact
+ # performance in an unanticipated way or may contain potential incompatibilities.
+ #
+ # @since 2.4
+ ##
+ 'smwgEnabledCompatibilityMode' => false,
+ ##
+
+ ###
+ # Use another storage backend for Semantic MediaWiki. The default is suitable
+ # for most uses of SMW.
+ #
+ # @since 0.7
+ ##
+ 'smwgDefaultStore' => "SMWSQLStore3",
+ ##
+
+ ##
+ # Debug logger role
+ #
+ # A role (developer, user, production) defines the detail of information
+ # (granularity) that are expected to be logged. Roles include:
+ #
+ # - `developer` outputs any loggable event produced by SMW
+ # - `user` outputs certain events deemed important
+ # - `production` outputs a minimal set of events produced by SMW
+ #
+ # Logging only happens in case `$wgDebugLogFile` or `$wgDebugLogGroups`
+ # are actively maintained.
+ #
+ # @see https://www.mediawiki.org/wiki/Manual:How_to_debug#Logging
+ #
+ # @since 3.0
+ # @default production
+ ##
+ 'smwgDefaultLoggerRole' => 'production',
+ ##
+
+ ###
+ # Local connection configurations
+ #
+ # Allows to modify connection characteristics for providers that are used by
+ # Semantic MediaWiki.
+ #
+ # Changes to these settings should ONLY be made by trained professionals to
+ # avoid unexpected or unanticipated results when using connection handlers.
+ #
+ # Available DB index as provided by MediaWiki:
+ #
+ # - DB_SLAVE or DB_REPLICA (1.28+)
+ # - DB_MASTER
+ #
+ # @since 2.5.3
+ ##
+ 'smwgLocalConnectionConf' => [
+ 'mw.db' => [
+ 'read' => DB_SLAVE,
+ 'write' => DB_MASTER
+ ],
+ 'mw.db.queryengine' => [
+ 'read' => DB_SLAVE,
+ 'write' => DB_MASTER
+ ]
+ ],
+ ##
+
+ ###
+ # Configure SPARQL database connection for Semantic MediaWiki. This is used
+ # when SPARQL-based features are enabled, e.g. when using SMWSparqlStore as
+ # the $smwgDefaultStore.
+ #
+ # The default class SMWSparqlDatabase works with many databases that support
+ # SPARQL and SPARQL Update. Three different endpoints (service URLs) are given
+ # - query (reading queries like SELECT)
+ # - update (SPARQL Update queries), and
+ # - data (SPARQL HTTP Protocol for Graph Management).
+ #
+ # The query endpoint is necessary, but the update and data endpoints can be
+ # omitted if not supported.
+ #
+ # This will lead to reduced functionality (e.g. the SMWSparqlStore will not
+ # work if Update is not available). The data endpoint is always optional, but
+ # in some SPARQL databases this method is more efficient than update.
+ #
+ # @since 1.6
+ ##
+ 'smwgSparqlEndpoint' => [
+ 'query' => 'http://localhost:8080/sparql/',
+ 'update' => 'http://localhost:8080/update/',
+ 'data' => 'http://localhost:8080/data/'
+ ],
+ ##
+
+ ###
+ #
+ # The default graph is similar to a database name in relational databases. It
+ # can be set to any URI (e.g. the main page uri of your wiki with
+ # " #graph" appended). Leaving the default graph URI empty only works if the
+ # store is configure to use some default default graph or if it generally
+ # supports this. Different wikis should normally use different default graphs
+ # unless there is a good reason to share one graph.
+ #
+ # @since 1.7
+ ##
+ 'smwgSparqlDefaultGraph' => '',
+ ##
+
+ ##
+ # Sparql repository connector
+ #
+ # Identifies a pre-deployed repository connector that is ought to be used together
+ # with the SPARQLStore.
+ #
+ # List of standard connectors ($smwgSparqlCustomConnector will have no effect):
+ # - '4store'
+ # - 'blazegraph'
+ # - 'fuseki'
+ # - 'sesame'
+ # - 'virtuoso'
+ #
+ # In case `$smwgSparqlRepositoryConnector` is maintained with 'custom',
+ # the `$smwgSparqlCustomConnector` is expected to contain a custom class
+ # implementing the ncessary interface (see `SMWSparqlDatabase`).
+ #
+ # `$smwgSparqlCustomConnector` is only used for the definition of a custom
+ # connector.
+ #
+ # @since 2.0
+ # @default default, meaning that the default (aka generic) connector is used
+ ##
+ 'smwgSparqlRepositoryConnector' => 'default',
+ ##
+
+ ##
+ # Sparql cutstom connector
+ #
+ # In case `$smwgSparqlRepositoryConnector` is maintained with 'custom',
+ # the `$smwgSparqlCustomConnector` is expected to contain a custom class
+ # implementing the ncessary interface (see `SMWSparqlDatabase`).
+ #
+ # `$smwgSparqlCustomConnector` is only used for the definition of a custom
+ # connector.
+ #
+ # @since 2.0
+ ##
+ 'smwgSparqlCustomConnector' => 'SMWSparqlDatabase',
+ ##
+
+ ##
+ # Sparql query features that are expected to be supported by the repository:
+ #
+ # - SMW_SPARQL_QF_NONE does not support any features (as required by SPARQL 1.1)
+ # - SMW_SPARQL_QF_REDI to support finding redirects using inverse property paths,
+ # can only be used for repositories with full SPARQL 1.1 support (e.g. Fuseki,
+ # Sesame)
+ # - SMW_SPARQL_QF_SUBP to resolve subproperties
+ # - SMW_SPARQL_QF_SUBC to resolve subcategories
+ #
+ # - SMW_SPARQL_QF_COLLATION allows to add support for the sorting collation as
+ # maintained in $smwgEntityCollation. It is not enabled by default as the
+ # `uca-*` collation generates a UTF-8 string that contains unrecognized
+ # UTF codepoints that may not be understood by the back-end hence the
+ # Collator prevents and armors those unrecognized characters by replacing
+ # them with a ? to avoid a cURL communication failure but of course this
+ # means that not all elements of the sort string can be transfered to the
+ # back-end and can therefore cause a sorting distortion for close matches
+ # as in case of for example "Ennis, Ennis Hill, Ennis Jones, Ennis-Hill,
+ # Ennis-London"
+ #
+ # - SMW_SPARQL_QF_NOCASE to support case insensitive pattern matches
+ #
+ # Please check with your repository provider whether SPARQL 1.1 is fully
+ # supported or not, and if not SMW_SPARQL_QF_NONE should be set.
+ #
+ # @since 2.3
+ ##
+ 'smwgSparqlQFeatures' => SMW_SPARQL_QF_REDI | SMW_SPARQL_QF_SUBP | SMW_SPARQL_QF_SUBC,
+ ##
+
+ ##
+ # @see https://github.com/SemanticMediaWiki/SemanticMediaWiki/issues/1306
+ #
+ # Setting to explicitly force a CURLOPT_HTTP_VERSION for the endpoint communication
+ # and should not be changed unless an error as in #1306 was encountered.
+ #
+ # @see http://curl.haxx.se/libcurl/c/CURLOPT_HTTP_VERSION.html reads "... libcurl
+ # to use the specific HTTP versions. This is not sensible to do unless you have
+ # a good reason.""
+ #
+ # @since 2.3
+ # @default false === means to use the default as determined by cURL
+ ##
+ 'smwgSparqlRepositoryConnectorForcedHttpVersion' => false,
+ ##
+
+ ##
+ # Property replication exemption list
+ #
+ # Listed properties will be exempted from the replication process for a
+ # registered SPARQL repository.
+ #
+ # @since 2.5
+ # @default array
+ ##
+ 'smwgSparqlReplicationPropertyExemptionList' => [],
+ ##
+
+ ###
+ # If you already have custom namespaces on your site, insert
+ # 'smwgNamespaceIndex' => ???,
+ # into your LocalSettings.php *before* including this file. The number ??? must
+ # be the smallest even namespace number that is not in use yet. However, it
+ # must not be smaller than 100.
+ #
+ # @since 1.6
+ ##
+ # 'smwgNamespaceIndex' => 100,
+ ##
+
+ ###
+ # Overwriting the following array, you can define for which namespaces
+ # the semantic links and annotations are to be evaluated. On other
+ # pages, annotations can be given but are silently ignored. This is
+ # useful since, e.g., talk pages usually do not have attributes and
+ # the like. In fact, is is not obvious what a meaningful attribute of
+ # a talk page could be. Pages without annotations will also be ignored
+ # during full RDF export, unless they are referred to from another
+ # article.
+ #
+ # @since 0.7
+ ##
+ 'smwgNamespacesWithSemanticLinks' => [
+ NS_MAIN => true,
+ NS_TALK => false,
+ NS_USER => true,
+ NS_USER_TALK => false,
+ NS_PROJECT => true,
+ NS_PROJECT_TALK => false,
+ NS_FILE => true,
+ NS_FILE_TALK => false,
+ NS_MEDIAWIKI => false,
+ NS_MEDIAWIKI_TALK => false,
+ NS_TEMPLATE => false,
+ NS_TEMPLATE_TALK => false,
+ NS_HELP => true,
+ NS_HELP_TALK => false,
+ NS_CATEGORY => true,
+ NS_CATEGORY_TALK => false,
+ ],
+ ##
+
+ ###
+ # Specifies features supported by the in-page factbox
+ #
+ # - SMW_FACTBOX_CACHE to use the main cache to avoid reparsing the content on
+ # each page view (replaced smwgFactboxUseCache)
+ #
+ # - SMW_FACTBOX_PURGE_REFRESH to refresh the faxtbox content on the purge
+ # event (replaced smwgFactboxCacheRefreshOnPurge)
+ #
+ # - SMW_FACTBOX_DISPLAY_SUBOBJECT displays subobject references
+ #
+ # @since 3.0
+ ##
+ 'smwgFactboxFeatures' => SMW_FACTBOX_CACHE | SMW_FACTBOX_PURGE_REFRESH | SMW_FACTBOX_DISPLAY_SUBOBJECT,
+
+ ###
+ # This setting allows you to select in which cases you want to have a factbox
+ # appear below an article and includes the following options:
+ #
+ # - SMW_FACTBOX_NONEMPTY show only those factboxes that have some content
+ # - SMW_FACTBOX_SPECIAL show only if special properties were set
+ # - SMW_FACTBOX_HIDDEN hide always
+ # - SMW_FACTBOX_SHOWN show always
+ #
+ # @note The Magic Words __SHOWFACTBOX__ and __HIDEFACTBOX__ can be used to
+ # control Factbox display for individual pages.
+ #
+ # @since 0.7
+ ##
+ 'smwgShowFactbox' => SMW_FACTBOX_HIDDEN,
+ ##
+
+ ###
+ # Same as $smwgShowFactbox but for the edit mode with same possible values.
+ #
+ # @since 1.0
+ ##
+ 'smwgShowFactboxEdit' => SMW_FACTBOX_NONEMPTY,
+ ##
+
+ ###
+ # Compact infolink support
+ #
+ # Special:Browse, Special:Ask, and Special:SearchByProperty links can contain
+ # arbitrary text elements and therefore become difficult to transfer when its
+ # length exceeds a certain character length.
+ #
+ # The experimental feature of a compact link will be encoded and compressed to
+ # ensure that it can be handled more easily when referring to it as an URL
+ # representation.
+ #
+ # It is not expected to be used as a short-url service, yet in some instances
+ # the generate URL can be comparatively shorter than the plain URL.
+ #
+ # The generated link has no security relevance therefore is is not
+ # cryptographically hashed or secure and should not be seen as such, it is
+ # foremost to "compact" an URL address.
+ #
+ # @since 3.0
+ # @default true
+ ##
+ 'smwgCompactLinkSupport' => false,
+ ##
+
+ ###
+ #
+ # - SMW_CAT_NONE
+ #
+ # - SMW_CAT_REDIRECT: resolves redirects and errors in connection with categories
+ #
+ # - SMW_CAT_INSTANCE: Should category pages that use some [[Category:Foo]]
+ # statement be treated as elements of the category Foo? If disabled, then
+ # it is not possible to make category pages elements of other categories.
+ # See also SMW_CAT_HIERARCHY. (was $smwgCategoriesAsInstances)
+ #
+ # - SMW_CAT_HIERARCHY: Should a subcategory be considered a hierarchy element
+ # in the annotation process? If set to true, subcategories will always be
+ # interpreted as subclasses and automatically annotated with
+ # `Subcategory of`. (was $smwgUseCategoryHierarchy)
+ #
+ # @since 3.0
+ ##
+ 'smwgCategoryFeatures' => SMW_CAT_REDIRECT | SMW_CAT_INSTANCE | SMW_CAT_HIERARCHY,
+ ##
+
+ ###
+ # Settings for recurring events, created with the #set_recurring_event parser
+ # function: the default number of instances defined, if no end date is set,
+ # and the maximum number that can be defined, regardless of end date.
+ #
+ # @since 1.4.3
+ ##
+ 'smwgDefaultNumRecurringEvents' => 100,
+ 'smwgMaxNumRecurringEvents' => 500,
+ ##
+
+ ###
+ # Special:Browse related settings
+ #
+ # - SMW_BROWSE_NONE
+ #
+ # - SMW_BROWSE_TLINK: Should the toolbox of each content page show a link
+ # to browse the properties of that page using Special:Browse? This is a
+ # useful way to access properties and it is somewhat more subtle than
+ # showing a Factbox on every page. (was $smwgToolboxBrowseLink)
+ #
+ # - SMW_BROWSE_SHOW_INVERSE: Should the browse view for incoming links show
+ # the incoming links via its inverses, or shall they be displayed on the
+ # other side? (was $smwgBrowseShowInverse)
+ #
+ # - SMW_BROWSE_SHOW_INCOMING: Should the browse view always show the incoming links
+ # as well, and more of the incoming values? (was $smwgBrowseShowAll)
+ #
+ # - SMW_BROWSE_SHOW_GROUP: Should the browse view create group sections for
+ # properties that belong to the same property group?
+ #
+ # - SMW_BROWSE_SHOW_SORTKEY: Should the sortkey be displayed?
+ #
+ # - SMW_BROWSE_USE_API: Whether the browse display is to be generated using
+ # an API request or not. (was $smwgBrowseByApi)
+ #
+ # @since 3.0
+ ##
+ 'smwgBrowseFeatures' => SMW_BROWSE_TLINK | SMW_BROWSE_SHOW_INCOMING | SMW_BROWSE_SHOW_GROUP | SMW_BROWSE_USE_API,
+ ##
+
+ ###
+ # Should the search by property special page display nearby results when there
+ # are only a few results with the exact value? Switch this off if this page has
+ # performance problems.
+ #
+ # @since 2.1 enabled default types, to disable the functionality either set the
+ # variable to array() or false
+ ##
+ 'smwgSearchByPropertyFuzzy' => [ '_num', '_txt', '_dat', '_mlt_rec' ],
+ ##
+
+ ###
+ # Number of results shown in the listings on pages in the Property and Concept
+ # namespaces as well as other services that require a limit.
+ #
+ # If a value of 0 is given, the respective listings are hidden completely.
+ #
+ # - `type` used for `Special:Types` (was $smwgTypePagingLimit)
+ # - `errorlist` used for `Special:ProcessingErrorList`
+ # - `concept` (was $smwgConceptPagingLimit)
+ # - `property` (was $smwgPropertyPagingLimit)
+ #
+ # Special:Browse
+ # - `valuelist.outgoingt` outgoing value list count
+ # - `valuelist.incoming` incoming value list count
+ #
+ # @since 3.0
+ ##
+ 'smwgPagingLimit' => [
+ 'type' => 50,
+ 'concept' => 250,
+ 'property' => 20,
+ 'errorlist' => 20,
+
+ // Special:Browse
+ 'browse' => [
+ 'valuelist.outgoing' => 200,
+ 'valuelist.incoming' => 20,
+ ]
+ ],
+ ##
+
+ ###
+ # Property page to limit the query request for individual values
+ #
+ # How many values should at most be displayed for a page on the Property
+ # page and if large values are desired, consider reducing
+ # $smwgPropertyPagingLimit for better performance.
+ #
+ # @since 1.3
+ ##
+ 'smwgMaxPropertyValues' => 3,
+ ##
+
+ ###
+ # Property page list limits
+ #
+ # 'subproperty' limit the query request on subproperties
+ # 'redirect' limit the query request on redirects
+ # 'error' limit the query request on improper assignments
+ #
+ # `false` as value assignment will disable the display of a selected list
+ #
+ # @since 3.0
+ ##
+ 'smwgPropertyListLimit' => [
+ 'subproperty' => 25,
+ 'redirect' => 25,
+ 'error' => 10
+ ],
+ ##
+
+ ###
+ # Settings for inline queries ({{#ask:...}}) and for semantic queries in
+ # general. This can especially be used to prevent overly high server-load due
+ # to complex queries. The following settings affect all queries, wherever they
+ # occur.
+ #
+ # @since 1.0
+ ##
+ 'smwgQEnabled' => true, // (De)activates all query related features and interfaces
+ 'smwgQMaxLimit' => 10000, // Max number of results *ever* retrieved, even when using special query pages.
+ #
+ # @since 1.5
+ ##
+ 'smwgIgnoreQueryErrors' => true, // Should queries be executed even if some errors were detected?
+ // A hint that points out errors is shown in any case.
+ ##
+ #
+ # @since 1.0
+ ##
+ 'smwgQSubcategoryDepth' => 10, // Restrict level of sub-category inclusion (steps within category hierarchy)
+ 'smwgQSubpropertyDepth' => 10, // Restrict level of sub-property inclusion (steps within property hierarchy)
+ // (Use 0 to disable hierarchy-inferencing in queries)
+ 'smwgQEqualitySupport' => SMW_EQ_SOME, // Evaluate #redirects as equality between page names, with possible
+ // performance-relevant restrictions depending on the storage engine
+ // 'smwgQEqualitySupport' => SMW_EQ_FULL, // Evaluate #redirects as equality between page names in all cases
+ // 'smwgQEqualitySupport' => SMW_EQ_NONE, // Never evaluate #redirects as equality between page names
+ 'smwgQDefaultNamespaces' => null, // Which namespaces should be searched by default?
+ // (value NULL switches off default restrictions on searching -- this is faster)
+ // Example with namespaces: 'smwgQDefaultNamespaces' => array(NS_MAIN, NS_FILE)
+
+ ###
+ # Sort features
+ #
+ # - SMW_QSORT_NONE
+ #
+ # - SMW_QSORT: General sort support for query results (was
+ # $smwgQSortingSupport)
+ #
+ # - SMW_QSORT_RANDOM: Random sorting support for query results (was
+ # $smwgQRandSortingSupport)
+ #
+ # @since 3.0
+ ##
+ 'smwgQSortFeatures' => SMW_QSORT | SMW_QSORT_RANDOM,
+ ##
+
+ ###
+ # List of comparator characters
+ #
+ # Comparators supported by queries with available entries being:
+ #
+ # < (smaller than) if $smwStrictComparators is false, it's actually smaller
+ # than or equal to
+ # > (greater than) if $smwStrictComparators is false, it's actually bigger
+ # than or equal to
+ # ! (unequal to)
+ # ~ (pattern with '*' as wildcard)
+ # !~ (not a pattern with '*' as wildcard, only for Type:String, need to be
+ # placed before ! and ~ to work correctly)
+ # ≤ (smaller than or equal to)
+ # ≥ (greater than or equal to)
+ #
+ # Extra compartors that in case of an enabled full-text index uses the primary
+ # LIKE/NLIKE match operation with operators being:
+ #
+ # like: to express LIKE use
+ # nlike: to express NLIKE use
+ #
+ # If unsupported comparators are used, they are treated as part of the
+ # queried value.
+ #
+ # @since 1.0
+ ##
+ 'smwgQComparators' => '<|>|!~|!|~|≤|≥|<<|>>|~=|like:|nlike:|in:|not:|phrase:',
+ ##
+
+ ###
+ # Sets whether the > and < comparators should be strict or not. If they are strict,
+ # values that are equal will not be accepted.
+ #
+ # @since 1.5.3
+ ##
+ 'smwStrictComparators' => false,
+
+ // To be used starting with 3.x (due to misspelling)
+ 'smwgQStrictComparators' => false,
+ ##
+
+ ###
+ # Further settings for queries. The following settings affect inline queries
+ # and querying special pages. Essentially they should mirror the kind of
+ # queries that should immediately be answered by the wiki, using whatever
+ # computations are needed.
+ #
+ # @since 1.0
+ ##
+ 'smwgQMaxSize' => 16, // Maximal number of conditions in queries, use format=debug for example sizes
+ 'smwgQMaxDepth' => 4, // Maximal property depth of queries, e.g. [[rel::<q>[[rel2::Test]]</q>]] has depth 2
+ ##
+
+ ###
+ # Expensive threshold
+ #
+ # The threshold defined in seconds denotes the ceiling as to when a #ask or
+ # #show call is classified as expensive and will count towards the
+ # $smwgQExpensiveExecutionLimit setting.
+ #
+ # @since 3.0
+ # @default 10
+ ##
+ 'smwgQExpensiveThreshold' => 10,
+ ##
+
+ ###
+ # Limit of expensive #ask/#show functions
+ #
+ # The limit will count all classified #ask/#show parser functions and restricts
+ # further use on pages that exceed that limit.
+ #
+ # @since 3.0
+ # @default false (== no limit)
+ ##
+ 'smwgQExpensiveExecutionLimit' => false,
+ ##
+
+ ###
+ # The below setting defines which query features should be available by
+ # default.
+ #
+ # Examples:
+ # only cateory intersections: 'smwgQFeatures' => SMW_CATEGORY_QUERY | SMW_CONJUNCTION_QUERY,
+ # only single concepts: 'smwgQFeatures' => SMW_CONCEPT_QUERY,
+ # anything but disjunctions: 'smwgQFeatures' => SMW_ANY_QUERY & ~SMW_DISJUNCTION_QUERY,
+ # The default is to support all basic features.
+ #
+ # @since 1.2
+ ##
+ 'smwgQFeatures' => SMW_PROPERTY_QUERY | SMW_CATEGORY_QUERY | SMW_CONCEPT_QUERY | SMW_NAMESPACE_QUERY | SMW_CONJUNCTION_QUERY | SMW_DISJUNCTION_QUERY,
+ ##
+
+ ###
+ # Filter duplicate query segments
+ #
+ # Experimental feature that allows to filter duplicate query segments from the
+ # query build process to eliminate computational effort for segments that
+ # represent that same query signature.
+ #
+ # @since 2.5
+ # @default: false
+ ##
+ 'smwgQFilterDuplicates' => false,
+ ##
+
+ ###
+ # Settings about printout of (especially inline) queries:
+ #
+ # @since 1.0
+ ##
+ 'smwgQDefaultLimit' => 50, // Default number of rows returned in a query. Can be increased with limit=num in #ask
+ 'smwgQMaxInlineLimit' => 500, // Max number of rows ever printed in a single inline query on a single page.
+ 'smwgQPrintoutLimit' => 100, // Max number of supported printouts (added columns in result table, ?-statements)
+ 'smwgQDefaultLinking' => 'all', // Default linking behavior. Can be one of "none", "subject" (first column), "all".
+ #
+ # @since 2.1
+ ##
+ 'smwgQUpperbound' => 5000, // Max number of rows ever printed in a single inline query on a single page with an offset.
+ ##
+
+ ###
+ # Further settings for queries. The following settings affect queries that are
+ # part of concept pages. These are usually chosen to be les restricted than
+ # inline queries, since there are two other means for controling their use:
+ # (1) Concept queries that would not be allowed as normal queries will not be
+ # executed directly, but can use pre-computed results instead. This is the
+ # default.
+ # (2) The whole Concept: namespace can be restricted (using some suitable
+ # MediaWiki extension) to an experienced user group that may create more
+ # complex queries responably. Other users can employ thus defined concepts in
+ # their queries.
+ ##
+ 'smwgQConceptCaching' => CONCEPT_CACHE_HARD, // Which concepts should be displayed only if available from cache?
+ // CONCEPT_CACHE_ALL -- show concept elements anywhere only if they are cached
+ // CONCEPT_CACHE_HARD -- show without cache if concept is not harder than permitted inline queries
+ // CONCEPT_CACHE_NONE -- show all concepts even without any cache
+ // In any cases, caches will always be used if available.
+ 'smwgQConceptMaxSize' => 20, // Same as $smwgQMaxSize, but for concepts
+ 'smwgQConceptMaxDepth' => 8, // Same as $smwgQMaxDepth, but for concepts
+
+ // Same as $smwgQFeatures but for concepts
+ 'smwgQConceptFeatures' => SMW_PROPERTY_QUERY | SMW_CATEGORY_QUERY | SMW_NAMESPACE_QUERY |
+ SMW_CONJUNCTION_QUERY | SMW_DISJUNCTION_QUERY | SMW_CONCEPT_QUERY,
+
+ // Cache life time in minutes. If a concept cache exists but is older than
+ // this, SMW tries to recompute it, and will only use the cache if this is not
+ // allowed due to settings above:
+ 'smwgQConceptCacheLifetime' => 24 * 60,
+ ##
+
+ ##
+ # Predefined result formats for queries
+ #
+ # Array of available formats for formatting queries. Can be redefined in
+ # the settings to disallow certain formats or to register extension formats.
+ # To disable a format, do "unset($smwgResultFormats['template'])," Disabled
+ # formats will be treated like if the format parameter had been omitted. The
+ # formats 'table' and 'list' are defaults that cannot be disabled. The format
+ # 'broadtable' should not be disabled either in order not to break Special:ask.
+ ##
+ 'smwgResultFormats' => [
+ 'table' => 'SMW\Query\ResultPrinters\TableResultPrinter',
+ 'broadtable' => 'SMW\Query\ResultPrinters\TableResultPrinter',
+ 'list' => 'SMW\Query\ResultPrinters\ListResultPrinter',
+ 'plainlist' => 'SMW\Query\ResultPrinters\ListResultPrinter',
+ 'ol' => 'SMW\Query\ResultPrinters\ListResultPrinter',
+ 'ul' => 'SMW\Query\ResultPrinters\ListResultPrinter',
+ 'category' => 'SMW\Query\ResultPrinters\CategoryResultPrinter',
+ 'embedded' => 'SMW\EmbeddedResultPrinter',
+ 'template' => 'SMW\Query\ResultPrinters\ListResultPrinter',
+ 'count' => 'SMW\Query\ResultPrinters\NullResultPrinter',
+ 'debug' => 'SMW\Query\ResultPrinters\NullResultPrinter',
+ 'feed' => 'SMW\Query\ResultPrinters\FeedExportPrinter',
+ 'csv' => 'SMW\Query\ResultPrinters\CsvFileExportPrinter',
+ 'templatefile' => 'SMW\Query\ResultPrinters\TemplateFileExportPrinter',
+ 'dsv' => 'SMW\DsvResultPrinter',
+ 'json' => 'SMW\JsonResultPrinter',
+ 'rdf' => 'SMW\RdfResultPrinter'
+ ],
+ ##
+
+ ##
+ # Predefined aliases for result formats
+ #
+ # Array of available aliases for result formats. Can be redefined in
+ # the settings to disallow certain aliases or to register extension aliases.
+ # To disable an alias, do "unset($smwgResultAliases['alias'])," Disabled
+ # aliases will be treated like if the alias parameter had been omitted.
+ #
+ # @since 1.8
+ ##
+ 'smwgResultAliases' => [
+ 'feed' => [ 'rss' ],
+ 'templatefile' => [ 'template file' ],
+ 'plainlist' => [ 'plain' ]
+ ],
+ ##
+
+ ##
+ # Result printer features
+ #
+ # - SMW_RF_NONE
+ # - SMW_RF_TEMPLATE_OUTSEP, #2022 (use the sep parameter as outer separator)
+ #
+ # @since 2.3
+ ##
+ 'smwgResultFormatsFeatures' => SMW_RF_TEMPLATE_OUTSEP,
+ ##
+
+ ###
+ # Handling of `RemoteRequest` features
+ #
+ # - SMW_REMOTE_REQ_SEND_RESPONSE allows Special:Ask to respond to remote requests in
+ # combination with $smwgQuerySources and the `RemoteRequest`.
+ #
+ # - SMW_REMOTE_REQ_SHOW_NOTE shows a note for each remote requests so users are aware
+ # that results retrieved from an external source.
+ #
+ # If `$smwgQuerySources` contains no entries then a remote request to a source
+ # is not supported and only sources that are available through the setting
+ # can be selected as remote source.
+ #
+ # @since 3.0
+ # @default: SMW_REMOTE_REQ_SEND_RESPONSE | SMW_REMOTE_REQ_SHOW_NOTE
+ ##
+ 'smwgRemoteReqFeatures' => SMW_REMOTE_REQ_SEND_RESPONSE | SMW_REMOTE_REQ_SHOW_NOTE,
+ ##
+
+ ###
+ #
+ # Predefined list of sources that can return query results
+ #
+ # Array of available sources for answering queries. Can be redefined in
+ # the settings to register new sources (usually an extension will do so
+ # on installation). Unknown source will be rerouted to the local wiki.
+ # Note that the basic installation comes with no additional source besides
+ # the local source (which in turn cannot be disabled or set explicitly).
+ #
+ # A query class handler is required to implement the `QueryEngine` interface
+ # and if it needs to be aware of the store, it should also implement the
+ # `StoreAware` interface.
+ #
+ # @since 1.4.3
+ ##
+ 'smwgQuerySources' => [
+ // 'local' => '',
+ // 'mw-wiki-foo' => [ '\SMW\Query\RemoteRequest', 'url' => 'http://example.org/wiki/index.php' ],
+ ],
+ ##
+
+ ### Default property type
+ # Undefined properties (those without pages or whose pages have no "has type"
+ # statement) will be assumed to be of this type. This is an internal type id.
+ # See the file languages/SMW_LanguageXX.php to find what IDs to use for
+ # datatpyes in your language. The default corresponds to "Type:Page".
+ #
+ # @since 1.1.2
+ ##
+ 'smwgPDefaultType' => '_wpg',
+ ##
+
+ ###
+ # The maximal number that SMW will normally display without using scientific exp
+ # notation. The deafult is rather large since some users have problems understanding
+ # exponents. Scineitfic applications may prefer a smaller value for concise display.
+ #
+ # @since 1.4.3
+ ##
+ 'smwgMaxNonExpNumber' => 1000000000000000,
+ ##
+
+ ###
+ # SMW defers some tasks until after a page was edited by using the MediaWiki
+ # job queueing system (see http://www.mediawiki.org/wiki/Manual:Job_queue).
+ # For example, when the type of a property is changed, all affected pages will
+ # be scheduled for (later) update. If a wiki generates too many jobs in this
+ # way (Special:Statistics and "showJobs.php" can be used to check that), the
+ # following setting can be used to disable jobs. Note that this will cause some
+ # parts of the semantic data to get out of date, so that manual modifications
+ # or the use of SMW_refreshData.php might be needed.
+ #
+ # @since 1.1.2
+ ##
+ 'smwgEnableUpdateJobs' => true,
+ ##
+
+ ###
+ # JobQueue watchlist
+ #
+ # This setting allows to display a personal bar link that shows the queue
+ # sizes for listed jobs. The information presented is fetched from the
+ # MediaWiki API and might be slightly inaccurate but should allow to make
+ # assumptions as to where the system needs attention.
+ #
+ # @see https://www.mediawiki.org/wiki/Manual:Job_queue#Special:Statistics
+ #
+ # To make this feature available, assign a simple list to the setting as in:
+ #
+ # $GLOBALS['smwgJobQueueWatchlist'] = [
+ # 'smw.update',
+ # 'smw.parserCachePurge',
+ # 'smw.fulltextSearchTableUpdate',
+ # 'smw.changePropagationUpdate'
+ # ]
+ #
+ # Information are not displayed unless a user enables the setting in his or
+ # her preference setting.
+ #
+ # @since 3.0
+ # @default disabled (empty array)
+ ##
+ 'smwgJobQueueWatchlist' => [],
+ ##
+
+ ###
+ # List of enabled special page properties.
+ #
+ # - `_MDAT` Modification date is enabled by default for backward compatibility.
+ # - `_TRANS` Add annotations (language, source etc. ) when a page is
+ # indentified as translation page (as done by the Translation extension)
+ #
+ # Extend array to enable other properties:
+ # $smwgPageSpecialProperties[ => '_CDAT',
+ # Or:
+ # array_merge( $smwgPageSpecialProperties, array( '_CDAT' ) ),
+ # Or rewrite entire array:
+ # 'smwgPageSpecialProperties' => array( '_MDAT', '_CDAT' ),
+ #
+ # However, DO NOT use `+=' operator! This DOES NOT work:
+ # $smwgPageSpecialProperties += array( '_MDAT' ),
+ #
+ # @since 1.7
+ ##
+ 'smwgPageSpecialProperties' => [ '_MDAT' ],
+ ##
+
+ ###
+ # Change propagation watchlist
+ #
+ # Properties (usually given as internal ids or DB key versions of property
+ # titles) that are relevant for declaring the behavior of a property P on a
+ # property page in the sense that changing their values requires that all
+ # pages that use P must be processed again.
+ #
+ # For example, if _PVAL (allowed values) for a property change, then pages
+ # must be processed again. This setting is not normally changed by users but
+ # by extensions that add new types that have their own additional declaration
+ # properties.
+ #
+ # @since 1.5
+ ##
+ 'smwgChangePropagationWatchlist' => [
+ '_PVAL', '_LIST', '_PVAP', '_PVUC', '_PDESC', '_PPLB', '_PREC', '_PDESC',
+ '_SUBP', '_SUBC', '_PVALI'
+ ],
+ ##
+
+ ##
+ # Change propagation protection
+ #
+ # An administrative intervention to disable the protection for an active change
+ # propagation.
+ #
+ # @since 3.0
+ # @default true
+ ##
+ 'smwgChangePropagationProtection' => true,
+ ##
+
+ ###
+ # By default, DataTypes (Date, URL etc.) are registered with a corresponding
+ # property of the same name to match the expected semantics. Yet, users can
+ # decide to change the behaviour by exempting listed DataTypes from the property
+ # registration process.
+ #
+ # @since 2.5
+ ##
+ 'smwgDataTypePropertyExemptionList' => [
+ 'Record',
+ 'Reference',
+ 'Keyword'
+ ],
+ ##
+
+ ##
+ # Default output formatter
+ #
+ # Users who want to alter the default output for a specific type can do so by
+ # setting a specify default formatter.
+ #
+ # The expected form is:
+ #
+ # [ <_typeID> => '<Formatter>' ] OR
+ # [ <typeName> => '<Formatter>' ] OR
+ # [ <propertyName> => '<Formatter>' ]
+ #
+ # Only valid formatters will be considered for an individual type, no
+ # errors or exceptions are raised in case of an improper formatter.
+ #
+ # The formatter is applied to values displayed on special pages
+ # as well.
+ #
+ # @since 3.0
+ # @default: []
+ ##
+ 'smwgDefaultOutputFormatters' => [
+ // '_dat' => 'LOCL',
+ // 'Boolean' => 'tick',
+ ],
+ ##
+
+ // some default settings which usually need no modification
+
+ ###
+ # -- FEATURE IS DISABLED --
+ # Setting this to true allows to translate all the labels within
+ # the browser GIVEN that they have interwiki links.
+ #
+ # @since 0.7
+ ##
+ 'smwgTranslate' => false,
+ ##
+
+ ###
+ # -- FEATURE IS DISABLED --
+ # If you want to import ontologies, you need to install RAP,
+ # a free RDF API for PHP, see
+ # http://wifo5-03.informatik.uni-mannheim.de/bizer/rdfapi/index.html
+ # The following is the path to your installation of RAP
+ # (the directory where you extracted the files to) as seen
+ # from your local filesystem. Note that ontology import is
+ # highly experimental at the moment, and may not do what you
+ # extect.
+ #
+ # @since 1.0
+ ##
+ // 'smwgRAPPath' => $smwgIP . 'libs/rdfapi-php',
+ // 'smwgRAPPath' => '/another/example/path/rdfapi-php',
+ ##
+
+ ###
+ # List of Special:SemanticMediaWiki (or Special:SMWAdmin) features
+ #
+ # - SMW_ADM_REFRESH: to initiate the repairing or updating of all wiki data
+ # - SMW_ADM_SETUP: restrict to "Database installation and upgrade"
+ # - SMW_ADM_DISPOSAL: restrict access to the "Object ID lookup and disposal"
+ # feature and the "Outdated entities disposal"
+ # - SMW_ADM_PSTATS: Property statistics update
+ # - SMW_ADM_FULLT:
+ #
+ # @since 2.5
+ ##
+ 'smwgAdminFeatures' => SMW_ADM_REFRESH | SMW_ADM_SETUP | SMW_ADM_DISPOSAL | SMW_ADM_PSTATS | SMW_ADM_FULLT,
+ ##
+
+ ###
+ # Sets whether or not to refresh the pages of which semantic data is stored.
+ #
+ # @since 1.5.6
+ ##
+ 'smwgAutoRefreshSubject' => true,
+ ##
+
+ ###
+ # Semantic MediaWiki uses various cache instances and types to improve access
+ # and re-access to objects. `smwgMainCacheType` identifies the "main" type
+ # to be used for a persitent storage to a vendor (SQL, memcache, redis etc.)
+ # specific solution.
+ #
+ # `CACHE_ANYTHING` refers to settings available in `$wgMessageCacheType` or
+ # `$wgParserCacheType` if they are set.
+ #
+ # @see https://www.semantic-mediawiki.org/wiki/Help:Caching
+ # @see http://www.mediawiki.org/wiki/$wgMainCacheType
+ #
+ # @since 3.0
+ # @default CACHE_ANYTHING
+ ##
+ 'smwgMainCacheType' => CACHE_ANYTHING,
+ ##
+
+ ###
+ # Separate cache type to allow for adding a more responsive cache layer
+ # (redis, riak) when requesting value lookups from the SQLStore.
+ #
+ # CACHE_NONE = disabled, uses the standard SQLStore DB access for all
+ # lookups
+ #
+ # @since 2.3 (experimental)
+ #
+ # @default: CACHE_NONE, users need to actively enable it in order
+ # to make use of it
+ ##
+ 'smwgEntityLookupCacheType' => CACHE_NONE,
+ ##
+
+ ###
+ # Declares a lifetime of a cached item for `smwgEntityLookupCacheType` until it
+ # is removed if not invalidated before.
+ #
+ # @since 2.3
+ ##
+ 'smwgEntityLookupCacheLifetime' => 60 * 60 * 24 * 7, // a week
+ ##
+
+ ##
+ # Features expected to be enabled in CachedValueLookupStore
+ #
+ # Flags that declare a enable/disable state of a supported functionality. If a
+ # feature is disabled then a connection is always established to the standard
+ # Repository/DB backend.
+ #
+ # The settings are only relevant for cases where `smwgEntityLookupCacheType` is
+ # set.
+ #
+ # - SMW_VL_SD: corresponds to Store::getSemanticData
+ # - SMW_VL_PL: corresponds to Store::getProperties
+ # - SMW_VL_PV: corresponds to Store::getPropertyValues
+ # - SMW_VL_PS: corresponds to Store::getPropertySubjects
+ #
+ # @since 2.3
+ #
+ # @default: all features are enabled
+ ##
+ 'smwgEntityLookupFeatures' => SMW_VL_SD | SMW_VL_PL | SMW_VL_PV | SMW_VL_PS,
+ ##
+
+ ###
+ # CacheTTL settings
+ #
+ # Defines time to live for in Semantic MediaWiki used cache instances and
+ # requires $smwgMainCacheType to be set otherwise related settings will have
+ # no effect.
+ #
+ # - special.wantedproperties TTL (in sec, or false to disable it) for caching
+ # the lookup on wanted property usage
+ #
+ # - special.unusedproperties TTL (in sec, or false to disable it) for caching
+ # the lookup on unused property usage
+ #
+ # - special.properties TTL (in sec, or false to disable it) for caching the
+ # lookup on property usage
+ #
+ # - special.statistics TTL (in sec, or false to disable it) for caching the
+ # lookup on statistics
+ #
+ # - api.browse TTL (in sec, or false to disable it) for the API browse module
+ # as general cache
+ #
+ # - api.browse.pvalue TTL (in sec, or false to disable it) for the API browse
+ # pvalue module when requesting property values
+ #
+ # - api.browse.psubject TTL (in sec, or false to disable it) for the API browse
+ # psubject module when requesting property subjects
+ #
+ # - api.task TTL (in sec, or false to disable it) for the API task module
+ #
+ # @since 1.9
+ ##
+ 'smwgCacheUsage' => [
+ 'special.wantedproperties' => 3600,
+ 'special.unusedproperties' => 3600,
+ 'special.properties' => 3600,
+ 'special.statistics' => 3600,
+ 'api.browse' => 3600,
+ 'api.browse.pvalue' => 3600,
+ 'api.browse.psubject' => 3600,
+ 'api.task' => 3600
+ ],
+ ##
+
+ ###
+ # Sets whether or not to refresh semantic data in the store when a page is
+ # manually purged
+ #
+ # @since 1.9
+ #
+ # @requires $smwgMainCacheType be set
+ # @default true
+ ##
+ 'smwgAutoRefreshOnPurge' => true,
+ ##
+
+ ###
+ # Sets whether or not to refresh semantic data in the store when a page was
+ # moved
+ #
+ # @since 1.9
+ #
+ # @requires $smwgMainCacheType be set
+ # @default true
+ ##
+ 'smwgAutoRefreshOnPageMove' => true,
+ ##
+
+ ##
+ # List of user-defined fixed properties
+ #
+ # Listed properties are managed by its own fixed table (instad of a
+ # shared one) to allow for sharding large datasets with value assignments.
+ #
+ # The type definition is talen from the property page `[[Has type::...]]` and
+ # by default (if no type is defined) then the `smwgPDefaultType` is returned.
+ #
+ # Any change to the property type requires to run the `setupStore.php` script
+ # or `Special:SMWAdmin` table update.
+ #
+ # 'smwgFixedProperties' => array(
+ # 'Age',
+ # 'Has population'
+ # ),
+ #
+ # @see https://semantic-mediawiki.org/wiki/Fixed_properties
+ # @since 1.9
+ #
+ # @default array()
+ ##
+ 'smwgFixedProperties' => [],
+
+ ###
+ # Sets a threshold value for when a property is being highlighted as "hardly
+ # begin used" on Special:Properties
+ #
+ # @since 1.9
+ #
+ # default = 5
+ ##
+ 'smwgPropertyLowUsageThreshold' => 5,
+ ##
+
+ ###
+ # Hide properties where the usage count is zero on Special:Properties
+ #
+ # @since 1.9
+ #
+ # default = true (legacy behaviour)
+ ##
+ 'smwgPropertyZeroCountDisplay' => true,
+ ##
+
+ ###
+ # QueryProfiler related settings
+ #
+ # @note If these settings are changed, please ensure to run update.php/rebuildData.php
+ #
+ # - smwgQueryProfiler can be set false to disable its functionality but it
+ # may impact secondary processes that rely on profile information to be
+ # available (Notification system etc.)
+ #
+ # - SMW_QPRFL_DUR to record query duration (the time
+ # between the query result selection and output its)
+ #
+ # - SMW_QPRFL_PARAMS to record query parameters that are necessary
+ # for allowing to generate a query result using a background job
+ #
+ # $smwgQueryProfiler = SMW_QPRFL_DUR | SMW_QPRFL_PARAMS;
+ #
+ # @since 1.9
+ # @default true
+ ##
+ 'smwgQueryProfiler' => true,
+ ##
+
+ ###
+ # Enables SMW specific annotation and content processing for listed SpecialPages
+ #
+ # @since 1.9
+ ##
+ 'smwgEnabledSpecialPage' => [ 'Ask' ],
+ ##
+
+ ###
+ # Search engine to fall back to in case SMWSearch is used as custom search
+ # engine but is unable to interpret the search term as an SMW query
+ #
+ # Leave as null to select the default search engine for the selected database
+ # type (e.g. SearchMySQL, SearchPostgres or SearchOracle), or set to a class
+ # name to override to a custom search engine.
+ #
+ # @since 2.1
+ ##
+ 'smwgFallbackSearchType' => null,
+ ##
+
+ ###
+ # If enabled it will display help information on the edit page to support users
+ # unfamiliar with SMW when extending page content.
+ #
+ # @since 2.1
+ ##
+ 'smwgEnabledEditPageHelp' => true,
+ ##
+
+ ###
+ # Various MediaWiki update operations in MW 1.26+ started to use DeferredUpdates
+ # and to ensure that the Store update follows in queue of updates made to a page
+ # this setting should be enabled by default for MW 1.26 onwards.
+ #
+ # It will improve page responsiveness for purge and move action significantly.
+ #
+ # @since 2.4
+ ##
+ 'smwgEnabledDeferredUpdate' => true,
+ ##
+
+ ###
+ # Regulates task specific settings for the post-edit process.
+ #
+ # The main objective is to defer secondary updates until after the GET request
+ # has been finalized so that resource requirements are part of an API request
+ # (and not a GET) and hereby ensures that a client remains responsive
+ # independent of the update workload.
+ #
+ # `run-jobs` specifies jobs that should be executed on a post-edit to run in a
+ # timely manner independent of a users job scheduler environment. The number
+ # indicates the expected number of jobs to be executed per request.
+ #
+ # @experimental
+ #
+ # `check-query` The display of query results and the storage of entities that
+ # make up the results of a query are two distinct processes. The display
+ # normally happens before the storage due to how the MW parser works meaning
+ # that a query can only display the most recent results after a page has
+ # been processed and rendered while the storage is being deferred (or in case
+ # of an external store is influenced by the network lag).
+ #
+ # The `check-query` uses the `post-edit` event to run registered queries and
+ # if necessary reloads the page (hereby refreshes the results) in case the
+ # result is different by comparing the `result_hash` from before and after.
+ # To determine the query state, the `post-edit` has to invoke the API (as
+ # background task) which has to probe the query and to only run the query once
+ # for the page that embeds the query, it is strongly recommended that this
+ # option is only enabled together with:
+ # - the query cache (@see $smwgQueryResultCacheType) and
+ # - the query links store (@see $smwgEnabledQueryDependencyLinksStore)
+ #
+ # @since 3.0
+ ##
+ 'smwgPostEditUpdate' => [
+ 'check-query' => false,
+ 'run-jobs' => [
+ 'smw.fulltextSearchTableUpdate' => 1,
+ 'smw.parserCachePurge' => 5
+ ]
+ ],
+ ##
+
+ ###
+ # Query dependency and parser cache invalidation
+ #
+ # If enabled it will store dependencies for queries allowing it to purge
+ # the ParserCache on subjects with embedded queries that contain altered entities.
+ #
+ # The setting requires to run `update.php` (it creates an extra table). Also
+ # as noted in #1117, `SMW\ParserCachePurgeJob` should be scheduled accordingly.
+ #
+ # @since 2.3 (experimental)
+ # @default false
+ ##
+ 'smwgEnabledQueryDependencyLinksStore' => false,
+ ##
+
+ ###
+ # Relates to `smwgEnabledQueryDependencyLinksStore` and defines property keys
+ # to be excluded from the dependency detection.
+ #
+ # For example, to avoid a purge process being triggered for each altered subobject
+ # '_SOBJ' is excluded from the processing but it will not exclude any properties
+ # defined by a subobject (given that it is not part of an extended exclusion list).
+ #
+ # `_MDAT` is excluded to avoid a purge on each page edit with a `Modification date`
+ # change that would otherwise trigger a dependency update.
+ #
+ # '_ASKDU' changes to the duration of a query should not trigger an update of
+ # possible query dependencies (as this has no bearing on the result list).
+ #
+ # @since 2.3 (experimental)
+ ##
+ 'smwgQueryDependencyPropertyExemptionList' => [ '_MDAT', '_SOBJ', '_ASKDU' ],
+ ##
+
+ ###
+ # Listed properties are marked as affiliate, meaning that when an alteration to
+ # a property value occurs query dependencies for the related entity are recorded
+ # as well. For example, _DTITLE is most likely such property where a change would
+ # normally not be reflected in query results (as it not directly linked to a
+ # query) but when added as an affiliated, changes to its content will be
+ # handled as if it is linked to an embedded entity.
+ #
+ # @since 2.4 (experimental)
+ ##
+ 'smwgQueryDependencyAffiliatePropertyDetectionList' => [],
+ ##
+
+ ###
+ # Settings for OWL/RDF export
+ #
+ # Whether or not "normal" users can request an recursive export.
+ #
+ # @since 0.7
+ # @default = false
+ ##
+ 'smwgAllowRecursiveExport' => false,
+ ##
+
+ ###
+ # Settings for OWL/RDF export
+ #
+ # Whether or not backlinks should be included by default.
+ #
+ # @since 0.7
+ # @default = true
+ ##
+ 'smwgExportBacklinks' => true,
+ ##
+
+ ###
+ # OWL/RDF export namespace for URIs/IRIs
+ #
+ # Will be set automatically if nothing is given, but in order to make pretty
+ # URIs you will need to set this to something nice and adapt your Apache
+ # configuration appropriately.
+ #
+ # @see https://www.semantic-mediawiki.org/wiki/Help:$smwgNamespace
+ # @see https://www.semantic-mediawiki.org/wiki/Help:EnableSemantics
+ # @see https://www.semantic-mediawiki.org/wiki/Help:Pretty_URIs
+ #
+ # @since 1.0
+ # @default = ''
+ ##
+ // 'smwgNamespace' => "http://example.org/id/",
+ ##
+
+ ###
+ # The setting is introduced the keep backwards compatibility with existing Rdf/Turtle
+ # exports. The `aux` marker is expected only used to be used for selected properties
+ # to generate a helper value and not for any other predefined property.
+ #
+ # Any property that does not explicitly require an auxiliary value (such `_dat`/
+ # `_geo` type values) now uses its native as condition descriptor (`Has_subobject`
+ # instead of `Has_subobject-23aux`)
+ #
+ # For SPARQL repository users that don't want to run an a `rebuildData.php`,
+ # the setting has to be TRUE.
+ #
+ # This BC setting is planned to vanish with 3.x.
+ #
+ # @since 2.3
+ ##
+ 'smwgExportBCAuxiliaryUse' => false,
+ ##
+
+ ##
+ # The preferred form is to use canonical identifiers (Category:, Property:)
+ # instead of localized names to ensure that RDF/Query statements are language
+ # agnostic and do work even after the site/content language changes.
+ #
+ # This BC setting is planned to vanish with 3.x.
+ #
+ # @since 2.3
+ ##
+ 'smwgExportBCNonCanonicalFormUse' => false,
+ ##
+
+ ##
+ # Export resources using IRIs
+ #
+ # Instead of ASCII encoded URI's, allow resources to be exported as IRI's (RFC
+ # 3987).
+ #
+ # @see https://www.w3.org/TR/rdf11-concepts/#section-IRIs
+ #
+ # @since 2.5
+ # @default true
+ ##
+ 'smwgExportResourcesAsIri' => true,
+ ##
+
+ ###
+ # Features related to text and annotion parsing
+ #
+ # - SMW_PARSER_NONE
+ #
+ # - SMW_PARSER_STRICT: The default interpretation (strict) is to find a single
+ # triple such as [[property::value:partOfTheValue::alsoPartOfTheValue]] where
+ # in case the strict mode is disabled multiple properties can be assigned
+ # using a [[property1::property2::value]] notation but may cause value
+ # strings to be interpret unanticipated in case of additional colons.
+ #
+ # - SMW_PARSER_UNSTRIP: Support decoding (unstripping) of hidden text elements
+ # (e.g. `<nowiki>` as in `[[Has description::<nowiki>{{#ask: HasStripMarkers
+ # }}</nowiki>]]` etc.) within an annotation value (can only be stored together
+ # with a `_txt` type property).
+ #
+ # - SMW_PARSER_INL_ERROR: Should warnings be displayed in wikitexts right after
+ # the problematic input? This affects only semantic annotations, not warnings
+ # that are displayed by inline queries or other features. (was $smwgInlineErrors)
+ #
+ # - SMW_PARSER_HID_CATS: Switch to omit hidden categories (marked with
+ # __HIDDENCAT__) from the annotation process. Changing the setting requires
+ # to run a full rebuild to ensure hidden categories are discarded during
+ # the parsing process. (was $smwgShowHiddenCategories 1.9)
+ #
+ # - SMW_PARSER_LINV: Support parsing of "links in values" for annotations like
+ # [[SomeProperty::Foo [[link]] in [[Bar::AnotherValue]]]] (was $smwgLinksInValues
+ # with SMW_LINV_OBFU, SMW_LINV_PCRE is no longer available)
+ #
+ # @since 3.0
+ ##
+ 'smwgParserFeatures' => SMW_PARSER_STRICT | SMW_PARSER_INL_ERROR | SMW_PARSER_HID_CATS,
+ ##
+
+ ##
+ # Features or restrictions for specific DataValue types
+ #
+ # - SMW_DV_NONE
+ #
+ # - SMW_DV_PROV_REDI (PropertyValue) If a property is redirected to a different
+ # target (Foo -> Bar) then follow it by default in order to allow query results
+ # to be displayed equivalent for both queries without having to adjust
+ # (or change) a query. This flag is mainly provided to restore backwards
+ # compatibility where behaviour is not expected to be altered, nevertheless it is
+ # recommended that the setting is enabled to improve user friendliness in terms
+ # of query execution.
+ #
+ # - SMW_DV_MLTV_LCODE (MonolingualTextValue) is to require a language code in order
+ # for a DV to be completed otherwise a MLTV can operate without a language code
+ #
+ # - SMW_DV_PVAP (Allows pattern) to allow regular expression pattern matching
+ # when `Allows pattern` property is assigned to user-defined property
+ #
+ # - SMW_DV_WPV_DTITLE (WikiPageValue) is to allow requesting a lookup for a display
+ # title and if present will be used as caption for the invoked subject
+ #
+ # - SMW_DV_PROV_DTITLE (PropertyValue) in combination with SMW_DV_WPV_DTITLE, If
+ # enabled it will attempt to resolve a property label by matching it against a
+ # possible assigned property "Display title of" value. For example, property
+ # "Foo" has "Display title of" "hasFoolishFoo" where "hasFoolishFoo" is being
+ # resolved as "Foo" when creating annotations. Currently, this uses an
+ # uncached lookup and therefore is disabled by default to avoid a possible
+ # performance impact (which has not been established or analyzed).
+ #
+ # - SMW_DV_PVUC (Uniqueness constraint) to specify that a property can only
+ # assign a value that is unique in its literal representation (the state of
+ # uniqueness for a value is established by the fact that it is assigned before
+ # any other value of the same representation to a property).
+ #
+ # - SMW_DV_TIMEV_CM (TimeValue) to indicate the CalendarModel if is not a
+ # CM_GREGORIAN
+ #
+ # - SMW_DV_NUMV_USPACE (Number/QuantityValue) to preserve spaces within
+ # unit labels
+ #
+ # - SMW_DV_PPLB to support the use of preferred property labels
+ #
+ # - SMW_DV_PROV_LHNT (PropertyValue) to output a <sup>p</sup> hint marker on
+ # properties that use a preferred label
+ #
+ # @since 2.4
+ ##
+ 'smwgDVFeatures' => SMW_DV_PROV_REDI | SMW_DV_MLTV_LCODE | SMW_DV_PVAP | SMW_DV_WPV_DTITLE | SMW_DV_TIMEV_CM | SMW_DV_PPLB | SMW_DV_PROV_LHNT,
+ ##
+
+ ##
+ # Fulltext search support
+ #
+ # If enabled, it will store text elements using a separate table in order for
+ # the SQL back-end to use the special fulltext index operations provided by
+ # the SQL engine.
+ #
+ # - Tested with MySQL/MariaDB
+ # - Tested with SQLite
+ #
+ # @since 2.5
+ # @default: false
+ ##
+ 'smwgEnabledFulltextSearch' => false,
+ ##
+
+ ##
+ # Throttle index updates
+ #
+ # The objective is to postpone an update by relying on a deferred process that
+ # runs the index update decoupled from the storage back-end update.
+ #
+ #
+ # If a user wants to push updates to the updater immediately then this setting needs
+ # to be disabled but by disabling this setting update lag may increase due to having
+ # the process being executed synchronously to the wikipage update.
+ #
+ # @since 2.5
+ # @default: true
+ ##
+ 'smwgFulltextDeferredUpdate' => true,
+ ##
+
+ ##
+ # Fulltext search table options
+ #
+ # This setting directly influences how a ft table is created therefore change
+ # the content with caution.
+ #
+ # - MySQL version 5.5 or later with only MyISAM and InnoDB storage engines
+ # to support full-text search (according to sources)
+ #
+ # - MariaDB full-text indexes can be used only with MyISAM and Aria tables,
+ # from MariaDB 10.0.5 with InnoDB tables and from MariaDB 10.0.15
+ # with Mroonga tables (according to sources)
+ #
+ # - SQLite FTS3 has been available since version 3.5, FTS4 were added with
+ # version 3.7.4, and FTS5 is available with version 3.9.0 (according to
+ # sources), The setting allows to specify extra arguments after the module
+ # engine such as array( 'FTS4', 'tokenize=porter' ).
+ #
+ # It is possible to extend the option description (MySQL 5.7+) with
+ # 'mysql' => array( 'ENGINE=MyISAM, DEFAULT CHARSET=utf8', 'WITH PARSER ngram' )
+ #
+ # @since 2.5
+ ##
+ 'smwgFulltextSearchTableOptions' => [
+ 'mysql' => [ 'ENGINE=MyISAM, DEFAULT CHARSET=utf8' ],
+ 'sqlite' => [ 'FTS4' ]
+ ],
+ ##
+
+ ##
+ # Exempted properties
+ #
+ # List of property keys for which index and fulltext match operations are
+ # exempted because there are either insignificant, mostly represent single
+ # terms, or contain other characteristics that make them non preferable when
+ # searching via the fulltext index.
+ #
+ # Listed properties will use the standard LIKE/NLIKE match operation when used
+ # in connection with the ~/!~ expression.
+ #
+ # @since 2.5
+ ##
+ 'smwgFulltextSearchPropertyExemptionList' => [
+ '_ASKFO', '_ASKST', '_ASKPA','_IMPO', '_LCODE', '_UNIT', '_CONV',
+ '_TYPE', '_ERRT', '_INST', '_ASK', '_SOBJ', '_PVAL', '_PVALI',
+ '_REDI', '_CHGPRO'
+ ],
+ ##
+
+ ##
+ # List of indexable DataTypes
+ #
+ # - SMW_FT_BLOB property values of type Blob (Text)
+ # - SMW_FT_URI property values of type URI
+ # - SMW_FT_WIKIPAGE property values of type Page
+ #
+ # SMW_FT_WIKIPAGE has not been added as default value as no performance
+ # impact analysis is available as to how indexing and search performance would
+ # be affected by a wiki with a large pool of pages (10K+) or extended page
+ # type value assignments on a full-text index.
+ #
+ # Enabling SMW_FT_WIKIPAGE will support the same search features (case
+ # insensitivity, phrase matching etc.) as available for Text or URI values
+ # when searches are executed using the ~/!~.
+ #
+ # @since 2.5
+ # @default: SMW_FT_BLOB | SMW_FT_URI
+ ##
+ 'smwgFulltextSearchIndexableDataTypes' => SMW_FT_BLOB | SMW_FT_URI,
+ ##
+
+ ##
+ # Describes the minimum word/token length to help to decide whether MATCH or LIKE
+ # operators are to be used for a condition statement.
+ #
+ # For MySQL it is expected it corresponds to either innodb_ft_min_token_size or
+ # ft_min_word_len
+ #
+ # @since 2.5
+ ##
+ 'smwgFulltextSearchMinTokenSize' => 3,
+ ##
+
+ ##
+ # To detect a possible language candidate from an indexable text element.
+ #
+ # TextCatLanguageDetector, a large list of languages does have a detrimental
+ # influence on the performance when trying to detect a language from a free text.
+ #
+ # Stopwords are only applied after language detection has been enabled.
+ #
+ # @see https://github.com/wikimedia/wikimedia-textcat
+ #
+ # @since 2.5
+ # @default empty list (language detection is disabled by default)
+ ##
+ 'smwgFulltextLanguageDetection' => [
+ // 'TextCatLanguageDetector' => array( 'en', 'de', 'fr', 'es', 'ja', 'zh' )
+ // 'CdbNGramLanguageDetector' => array( 'en', 'de', 'fr', 'es', 'ja', 'zh' )
+ ],
+ ##
+
+ ##
+ # MySQL's "Global Transaction Identifier" will create issues when executing
+ # queries that rely on temporary tables, according to the documentation "... the
+ # operations listed here cannot be used ... CREATE TEMPORARY TABLE statements
+ # inside transactions".
+ #
+ # MySQL Global transaction identifier is a unique transaction ID assigned to
+ # every transaction that happens in the MySQL database.
+ #
+ # Issue is encountered when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1
+ #
+ # @see https://dev.mysql.com/doc/refman/5.6/en/replication-options-gtids.html
+ # @see https://support.software.dell.com/kb/184275
+ #
+ # This setting (if enabled) will force an auto commit operation for temporary
+ # tables to avoid the described limitation.
+ #
+ # @since 2.5
+ # @default false
+ ##
+ 'smwgQTemporaryTablesAutoCommitMode' => false,
+ ##
+
+ ###
+ # Support to store a computed subject list that were fetched from the QueryEngine
+ # (not the string result generated from a result printer) and improve general
+ # page-loading time for articles that contain embedded queries and decrease
+ # server load on query requests.
+ #
+ # It is recommended that `smwgEnabledQueryDependencyLinksStore` is enabled
+ # to make use of automatic query results cache eviction.
+ #
+ # Enabling this option will render queries with a new ID to optimize queries
+ # that result in the same signature (fingerprint) to lower the rate of cache
+ # fragmentation.
+ #
+ # @since 2.5 (experimental)
+ # @default: CACHE_NONE (== feature is disabled)
+ ##
+ 'smwgQueryResultCacheType' => CACHE_NONE,
+ ##
+
+ ###
+ # Specifies the lifetime of embedded query and their results fetched from a
+ # QueryEngine for when `smwgQueryResultCacheType` is enabled.
+ #
+ # @since 2.5
+ ##
+ 'smwgQueryResultCacheLifetime' => 60 * 60 * 24 * 7, // a week
+ ##
+
+ ###
+ # Specifies the lifetime of non-embedded queries (Special:Ask, API etc.) and their
+ # results that are fetched from a QueryEngine for when `smwgQueryResultCacheType` is
+ # enabled.
+ #
+ # This setting can also be used to minimize a possible DoS vector by preventing
+ # an advisory to make unlimited query requests from either Special:Ask or the
+ # API that may lock the DB due to complex query answering and instead being
+ # rerouted to the cache once a result has been computed.
+ #
+ # @note Non-embedded queries cannot not be tracked using the `QueryDependencyLinksStore`
+ # (subject is being missing that would identify the entity) therefore
+ # an auto-purge mechanism as in case of an embedded entity is not possible hence
+ # the lifetime should be carefully selected to provide the necessary means for a
+ # user and the application.
+ #
+ # 0/false as setting to disable caching of non-embedded queries.
+ #
+ # @since 2.5
+ ##
+ 'smwgQueryResultNonEmbeddedCacheLifetime' => 60 * 10, // 10 min
+ ##
+
+ ###
+ # Enables the manual refresh for embedded queries when the action=purge event is
+ # triggered.
+ #
+ # @since 2.5
+ ##
+ 'smwgQueryResultCacheRefreshOnPurge' => true,
+ ##
+
+ ##
+ # Property create protection
+ #
+ # If enabled, users are able to annotate property values using existing properties
+ # but new properties can only be created by those with the assigned "authority"
+ # (aka user right).
+ #
+ # Changes to a property specification requires the permission as well.
+ #
+ # @since 3.0
+ # @default false
+ ##
+ 'smwgCreateProtectionRight' => false,
+ ##
+
+ ###
+ # Page edit protection
+ #
+ # To prevent accidental changes of content especially to those of property
+ # definitions, this setting allows with the help of the `Is edit protected`
+ # property to prevent editing on pages that have annotate the property with
+ # `true`.
+ #
+ # Once the property is set, only users with the listed user right are able
+ # to edit and/or revoke the restriction on the selected page.
+ #
+ # `smw-pageedit` has been deployed as extra right to be distinct from existing
+ # edit protections
+ #
+ # To enable this functionality either assign `smw-pageedit` or any other
+ # right to the variable to activate an edit protection.
+ #
+ # @since 2.5
+ # @default false
+ ##
+ 'smwgEditProtectionRight' => false,
+ ##
+
+ ##
+ # Similarity lookup exemption property
+ #
+ # The listed property is used to exclude a property from the similarity
+ # lookup in case the comparing property contains an annotation value with the
+ # exemption property.
+ #
+ # For example, the property `Governance level` may define
+ # [[owl:differentFrom::Governance level of]] which would result in a suppressed
+ # similarity lookup for both `Governance level` and `Governance level of`
+ # property when compared to each other.
+ #
+ # @since 2.5
+ ##
+ 'smwgSimilarityLookupExemptionProperty' => 'owl:differentFrom',
+ ##
+
+ ##
+ # Property label invalid characters
+ #
+ # Listed characters are categorized as invalid for a property label and will
+ # result in an error.
+ #
+ # @see #1568, #1638, 3134
+ #
+ # @since 2.5
+ ##
+ 'smwgPropertyInvalidCharacterList' => [ '[', ']' , '|' , '<' , '>', '{', '}', '+', '–', '%', "\r", "\n" ],
+ ##
+
+ ##
+ # Reserved property names
+ #
+ # Listed names are reserved as they may interfere with Semantic MediaWiki or
+ # MediaWiki itself.
+ #
+ # Removing default names from the list is not recommended (extending the list
+ # is supported and may be used to customize use cases for an individual wiki).
+ #
+ # The list can contain simple names or identifiers that start with
+ # `smw-property-reserved-` to link to a translatable representation that
+ # matches a string in a content language.
+ #
+ # @see #2835, #2840
+ #
+ # @since 3.0
+ ##
+ 'smwgPropertyReservedNameList' => [ 'Category', 'smw-property-reserved-category' ],
+ ##
+
+ ##
+ # Entity specific collation
+ #
+ # This should correspond to the $wgCategoryCollation setting (also in regards
+ # to selected argument values), yet it is kept separate to have a better
+ # control over changes in regards to the collation, sorting, and display of
+ # values.
+ #
+ # This setting is "global" and applies to any entity that is maintained for
+ # a wiki. In being global means that it cannot be selective (use one collation
+ # for one query and use another collation for a different query) because the
+ # field (smw_sort) contains a computed representation of the sort value.
+ #
+ # ANY change to this setting requires to run the `updateEntityCollation.php`
+ # maintenance script.
+ #
+ # @since 3.0
+ # @default identity (as legacy setting)
+ ##
+ 'smwgEntityCollation' => 'identity',
+ ##
+
+ ##
+ # Experimental settings
+ #
+ # Features enabled are considered stable but for any unforeseen behaviour, the
+ # feature can be disabled to return to a previous working state avoiding
+ # the need for hot-patching a system.
+ #
+ # After a certain in-production period, features will be moved permanently
+ # to the desired target state and hereby automatically retires the related
+ # setting.
+ #
+ # @since 3.0
+ ##
+ 'smwgExperimentalFeatures' => false,
+ ##
+
+ ##
+ # SQLStore specific field type features
+ #
+ # SMW_FIELDT_NONE
+ #
+ # SMW_FIELDT_CHAR_NOCASE - Modifies selected search fields to use a case
+ # insensitive collation and may require additional extension (e.g. Postgres
+ # requires `citext`) on non MySQL related systems therefore it is disabled
+ # by default.
+ #
+ # Furthermore, no extensive analysis has been performed on how the switch
+ # from VARBINARY to a collated VARCHAR field type affects the search
+ # performance.
+ #
+ # If enabled, the setting will replace selected `FieldType::FIELD_TITLE`
+ # types with `FieldType::TYPE_CHAR_NOCASE`.
+ #
+ # `FieldType::TYPE_CHAR_NOCASE` has been defined as:
+ #
+ # - MySQL: VARCHAR(255) CHARSET utf8 COLLATE utf8_general_ci
+ # - Postgres: citext NOT NULL
+ # - SQLite: VARCHAR(255) NOT NULL COLLATE NOCASE but according to [0] this may
+ # not work and need a special solution as hinted in [0]
+ #
+ # [0] https://techblog.dorogin.com/case-insensitive-like-in-sqlite-504f594dcdc3
+ #
+ # SMW_FIELDT_CHAR_LONG - Extends the size to 300 chars for text pattern
+ # match (DIBlob and DIUri) fields.
+ #
+ # 300 has been selected to be able to build an index prefix with the available
+ # default setting of MySQL/MariaDB which restricts the prefix length to 767
+ # bytes for InnoDB tables [1]. The index length can be lifted [2] to up to
+ # 3072 bytes for InnoDB tables that use the DYNAMIC or COMPRESSED row format but
+ # that requires custom intervention.
+ #
+ # [1] https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
+ # [2] https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_large_prefix
+ #
+ # By default, the SQLStore has restricted the DIBlob and DIUri fields to a
+ # 72 chars search depth in exchange for index size and performance.
+ # Extending fields to 300 allows to run LIKE/NLIKE matching on a larger text
+ # body without relying on a full-text index but an increased index size could
+ # potentially carry a performance penalty when the index cannot be kept in
+ # memory.
+ #
+ # No analysis has been performed on how performance is impacted. Selecting
+ # this option requires to run `rebuildData.php` to adjust the field content
+ # to the new length.
+ #
+ # SMW_FIELDT_CHAR_NOCASE | SMW_FIELDT_CHAR_LONG can be combined to build a
+ # case insensitive long field type.
+ #
+ # @since 3.0
+ # @default false
+ ##
+ 'smwgFieldTypeFeatures' => false,
+ ##
+
+ ##
+ # Subobject content hash !! BC setting ONLY !!
+ #
+ # Normalized content hash is enabled by default to ensure that a content
+ # declaration like:
+ #
+ # {{#subobject:
+ # |Has text=Foo,Bar|+sep=,
+ # }}
+ #
+ # yields the same hash as:
+ #
+ # {{#subobject:
+ # |Has text=Bar,Foo|+sep=,
+ # }}
+ #
+ # The setting is only provided to allow for a temporary backwards compatibility
+ # and will be removed with 3.1 at which point the functionality is enabled
+ # without any constraint.
+ #
+ # @since 3.0
+ # @default true
+ ##
+ 'smwgUseComparableContentHash' => true,
+ ##
+
+ ##
+ # List of supported schemes for a URI typed property
+ #
+ # @see https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
+ # @see https://www.w3.org/wiki/UriSchemes
+ #
+ # @since 3.0
+ ##
+ 'smwgURITypeSchemeList' => [
+ 'http', 'https', 'mailto', 'tel', 'ftp', 'sftp', 'news', 'file', 'urn',
+ 'telnet', 'ldap', 'gopher', 'ssh', 'git', 'irc', 'ircs'
+ ],
+ ##
+
+ ##
+ # Special:Ask form submit method
+ #
+ # - SMW_SASK_SUBMIT_POST uses `post` as submit method, allows to jump
+ # directly to the search result but will not produce any copyable URL
+ # string (use the result bookmark button instead)
+ #
+ # - SMW_SASK_SUBMIT_GET uses `get` as submit method and was the default
+ # until 2.5, is not able to jump the search result directly after a submit
+ #
+ # - SMW_SASK_SUBMIT_GET_REDIRECT uses `get` as submit method and provides
+ # the means to directly jump to the search result after a submit but
+ # requires an extra HTTP request to follow a redirect
+ #
+ # @since 3.0
+ # @default SMW_SASK_SUBMIT_POST
+ ##
+ 'smwgSpecialAskFormSubmitMethod' => SMW_SASK_SUBMIT_POST,
+ ##
+
+ ##
+ # Enable/disable <section> ... </section> support
+ #
+ # @since 3.0
+ # @default true
+ ##
+ 'smwgSupportSectionTag' => true,
+ ##
+
+ ##
+ # THE FOLLOWING SETTINGS AND SUPPORT FUNCTIONS ARE EXPERIMENTAL!
+ #
+ # Please make you read the Readme.md (see the Elastic folder) file first
+ # before enabling the ElasticStore and its settings!
+ ##
+
+ ##
+ # Schema types
+ #
+ # The mapping defines the relation between a specific type, group and
+ # a possible interpreter which validates the expected syntax.
+ #
+ # Each type will have its own interpretation about elements and how to
+ # define and enact requirements.
+ #
+ # @since 3.0
+ ##
+ 'smwgSchemaTypes' => [
+ 'LINK_FORMAT_SCHEMA' => [
+ 'validation_schema' => __DIR__ . '/data/schema/link-format-schema.v1.json',
+ 'group' => SMW_SCHEMA_GROUP_FORMAT,
+ 'type_description' => 'smw-schema-description-link-format-schema',
+ // '__factory' => [ 'SMW\Schema\SchemaFactory', 'newTest' ]
+ ],
+ 'SEARCH_FORM_SCHEMA' => [
+ 'validation_schema' => __DIR__ . '/data/schema/search-form-schema.v1.json',
+ 'group' => SMW_SCHEMA_GROUP_SEARCH_FORM,
+ 'type_description' => 'smw-schema-description-search-form-schema'
+ ]
+ ],
+ ##
+
+ ##
+ # ElasticStore settings
+ #
+ # Supported options and settings required by the ElasticStore.
+ #
+ # This setting provides documentation and default values for the ElasticStore
+ # and its use in an ES cluster.
+ #
+ # @since 3.0
+ ##
+ 'smwgElasticsearchConfig' => [
+ 'index_def' => [
+ // The complete name will be auto-generated from "smw-...-" + wfWikiID()
+ // to avoid indicies among different wikis being corrupted when sharing
+ // an ES instance.
+ 'data' => __DIR__ . '/data/elastic/smw-data-standard.json',
+ 'lookup' => __DIR__ . '/data/elastic/smw-lookup.json'
+ ],
+ 'connection' =>[
+ 'quick_ping' => true,
+ // Number of times the client tries to reconnect before throwing an
+ // exception
+ 'retries' => 2,
+
+ // Controls how long curl should wait for the entire request to finish
+ 'timeout' => 30,
+
+ // Controls how long curl should wait for the "connect" phase to finish
+ 'connect_timeout' => 30
+ ],
+ 'settings' => [
+ 'data' => [
+ // Setting names match those from ES, any misspelling or
+ // incorrect setting will cause an error in ES
+ 'index.mapping.total_fields.limit' => 9000,
+ 'index.max_result_window' => 50000
+ ]
+ ],
+ 'indexer' => [
+
+ // Allows to index unstructured, unprocessed raw text from a revision
+ 'raw.text' => false,
+
+ // Experimental feature to investigate the use of the ingest pipline
+ // to index uploaded files and make that content available to
+ // QueryEngine during a wide proximity search (e.g. [[in:fox jumps]])
+ // Requires https://www.elastic.co/guide/en/elasticsearch/plugins/master/ingest-attachment.html
+ 'experimental.file.ingest' => false,
+
+ // If the replication encounters an `illegal_argument_exception` from
+ // the ES cluster, rethrow it as exception to ensure it doesn't get
+ // unnoticed as it is likely to require intervention due to issues
+ // like "Limit of total fields ... has been exceeded" etc.
+ 'throw.exception.on.illegal.argument.error' => true,
+
+ // Number of max. retries before the recovery job will resign from
+ // trying any more attempts to update the ES cluster. This is to
+ // prevent jobs from invoking themselves indefinitely.
+ 'job.recovery.retries' => 5,
+
+ // Number of max. retries before the file ingest
+ 'job.file.ingest.retries' => 3
+ ],
+ 'query' => [
+
+ // If for some reason no connection to the ES cluster could be
+ // established, use the SQLStore QueryEngine as fallback.
+ 'fallback.no.connection' => false,
+
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/6.1/_profiling_queries.html
+ 'profiling' => false,
+
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-validate.html
+ // Part of the `format=debug` to validate potentially expensive queries
+ // without executing them.
+ 'debug.explain' => true,
+
+ // During the debug output, display details about which description was
+ // when resolved in connection with a query
+ 'debug.description.log' => true,
+
+ // When `!...` is used make sure that the condition is only applied
+ // on entities where the property exists together with the negated
+ // value condition otherwise the ! condition becomes unrestricted
+ 'must_not.property.exists' => true,
+
+ // When sorting on a particular property, enforce that the property
+ // exists as an assignment to a selected entity. The default setting
+ // matches the SQLStore behaviour. (See also #2823)
+ 'sort.property.must.exists' => true,
+
+ // Sort by score (aka relevancy)
+ //
+ // Defines the name of the sortkey (as covention) that is used to sort
+ // results by scores computed by ES (based on Term Frequency, Inverse
+ // Document Frequency etc.).
+ //
+ // Output results with the highest score first:
+ //
+ // {{#ask: [[Category:Foo]]
+ // |sort=es.score
+ // |order=desc
+ // }}
+ //
+ // @see https://www.compose.com/articles/how-scoring-works-in-elasticsearch/
+ 'score.sortfield' => 'es.score',
+
+ // The `+` and `-` symbols will be interpret as boolean operators so that
+ // things like `+foo, -bar` mean `+` (this term must be present) and
+ // `-`(this term must not be present). If they need to be part of
+ // the search string itself then it is required to escape them like
+ // `\+`.
+ 'query_string.boolean.operators' => true,
+
+ // ES works different with text elements compared to the SQL interface
+ // (and its DSL query logic) therefore we try to modify some
+ // common scenarios and alter strings (and boolean operators) to pass
+ // most use cases from the SQLStore integration test suite and hereby
+ // allows to be compatible with the SMW SQL answering behaviour.
+ //
+ // ES has reserved characters `+ - = && || > < ! ( ) { } [ ] ^ " ~ *
+ // ? : \ /` and this mode will automatically encode them which of course
+ // limits the ability to use them as part of the native boolean operators
+ // within the query expression.
+ //
+ // In case the mode is disabled, the user has to make sure to follow
+ // the rules set forth by ES in connection with the query_string
+ // parser.
+ //
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/6.1/query-dsl-query-string-query.html
+ 'compat.mode' => true,
+
+ // Size (limit) of the subquery construct which is executed as separated
+ // search request.
+ 'subquery.size' => 10000,
+
+ // Sorting and scoring of subqueries is generally not necessary therefore
+ // we use the `constant_score` filter context to executed queries which
+ // helps to elevate the use of the filter caching.
+ //
+ // @see https://www.elastic.co/guide/en/elasticsearch/guide/current/filter-caching.html
+ 'subquery.constant.score' => true,
+
+ // Defines the threshold for a result size as to when those should be
+ // stored in a special lookup index to facilitate the ES terms lookup
+ // feature (which requires to write and refresh the specific index
+ // element ad-hoc before it can be used by the "source" query).
+ //
+ // The more often subqueries are used (or reused) the lower the threshold
+ // should be set as it directly impacts performance.
+ //
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
+ 'subquery.terms.lookup.result.size.index.write.threshold' => 200,
+
+ // Intermediary optimization to allow for a subquery (executed as part
+ // of a "source" query and uses the special lookup index) to be reused
+ // (aka cached) for any succeeding query executions for the time frame
+ // set and hereby avoids fetching subquery results on repeating
+ // requests especially when the source query changes its limit and
+ // offset parameters frequently.
+ //
+ // Only subqueries with `subquery.terms.lookup.result.size.index.write.threshold`
+ // will be available to make use of this index cache.
+ //
+ // The cache is static and will not apply any eviction strategy which
+ // means that in case of additional values that would normally invalidate
+ // a subquery result, results remain static for the time frame set.
+ //
+ // Caching becomes crucial when a subqery terms lookup contains 1000+
+ // of matching documents as we avoid executing the subquery and if
+ // available directly resuse the terms lookup index.
+ //
+ // @default 1h
+ 'subquery.terms.lookup.cache.lifetime' => 60 * 60,
+
+ // A concept as (aka dynamix category) is defined using a query and
+ // will return a list of matchable IDs therefore to improve performance
+ // during the lookup of those entities use the lookup index to retrieve
+ // precomputed results.
+ 'concept.terms.lookup' => true,
+
+ // Threshold when to store and use the index lookup
+ 'concept.terms.lookup.result.size.index.write.threshold' => 10,
+
+ // Threshold when to store and use the index lookup
+ // It is similar to `$smwgQConceptCacheLifetime`
+ //
+ // @default 1h
+ 'concept.terms.lookup.cache.lifetime' => 60 * 60,
+
+ // In case search terms contains CJK terms, remove `*` prefix/affix
+ // from a search request in an effort to best match single characters
+ // that created as part of the standard analyzer. Use a phrase match
+ // instead of a wildcard proximity.
+ //
+ // This setting may be disabled when using a different index definition
+ // (e.g. ICU).
+ 'cjk.best.effort.proximity.match' => true,
+
+ // Specifies that a wide proximity search (e.g. [[~~Foo bar]] or
+ // [[in:Foo bar]]) is executed as a match_phrase search meaning that
+ // that all elements of the query string need to be present in the
+ // order of the query
+ 'wide.proximity.as.match_phrase' => true,
+
+ // Fields to be used for a wide proximity search with some being
+ // boosted to weight higher in relevance. For example, when `Foo` is
+ // part of the title it relevance is boosted by 8 (i.e. count more
+ // towards the relevance score) as when it would only appear in one
+ // of the text fields.
+ //
+ // It means that [[in:Foo]] where titles match `Foo` will be
+ // assigned a 5 times higher score and therefore appear higher in a
+ // list when sorted by relevancy.
+ 'wide.proximity.fields' => [
+ 'subject.title^8',
+ 'text_copy^5',
+ 'text_raw',
+ 'attachment.title^3',
+ 'attachment.content'
+ ],
+
+ // By default, the URI fields are considered case sensitive similar to
+ // what RFC 3986 " ... the scheme and host are case-insensitive and
+ // therefore should be normalized to lowercase ... the other generic
+ // syntax components are assumed to be case-sensitive unless ",
+ // RFC 2616 " ... comparing two URIs to decide if they match or
+ // not, a client SHOULD use a case-sensitive octet-by-octet
+ // comparison of the entire URIs ..."
+ //
+ // The setting applies to the EQ, LIKE, and NLIKE match.
+ 'uri.field.case.insensitive' => false,
+
+ // By default, equality searches (e.g. [[Has text:Foo]], [Has text:foo]])
+ // are case senstive but as in case of the SMW_FIELDT_CHAR_NOCASE,
+ // the search can be altered to find case insensitive matches as well.
+ //
+ // The default setting matches the SQLStore standard behaviour and
+ // uses the faster ES `term` search instead of a `match` variant
+ // which would become necessary for any analyzed field.
+ //
+ // @see https://www.elastic.co/guide/en/elasticsearch/guide/current/term-vs-full-text.html
+ 'text.field.case.insensitive.eq.match' => false,
+
+ // [[~Foo/Bar/*]] vs. [[~FOO/bar/*]]
+ // [[Has page::~Foo bar/bar/*]]
+ 'page.field.case.insensitive.proximity.match' => true,
+
+ // Allows to retrieve text fragments from ES for query request and
+ // depending on the type selected can require more query time.
+ //
+ // Available types are `plain`, `unified`, and `fvh`. The `fvh` type
+ // requires text fields to have the `term_vector` with `with_positions_offsets`
+ // enabled.
+ //
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html#plain-highlighter
+ // @see https://www.elastic.co/guide/en/elasticsearch/reference/current/term-vector.html
+ 'highlight.fragment' => [ 'number' => 1, 'size' => 250, 'type' => false ]
+ ]
+ ],
+ ##
+
+ ##
+ # ElasticStore profile
+ #
+ # Maintaining various settings using an array notation in `LocalSettinga.php`
+ # can become challenging hence we provide a JSON profile that can be assigned
+ # instead. Settings will be merged together with the default
+ # `smwgElasticsearchConfig` where a profile will override any previous value
+ # assignments.
+ #
+ # @since 3.0
+ ##
+ 'smwgElasticsearchProfile' => false, // __DIR__ . '/data/elastic/default-profile.json',
+
+ ##
+ # ElasticStore connection settings
+ #
+ # @since 3.0
+ ##
+ 'smwgElasticsearchEndpoints' => [
+ // [ 'host' => '127.0.0.1', 'port' => 9200, 'scheme' => 'http' ],
+ // [ 'host' => '127.0.0.1', 'port' => 9200, 'scheme' => 'http', 'user' => 'username', 'pass' => 'password!#$?*abc' ]
+ // 'localhost:9200'
+ ]
+
+];