diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/DefaultSettings.php | 2352 |
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' + ] + +]; |