__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::[[rel2::Test]]]] 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> => '' ] OR # [ => '' ] OR # [ => '' ] # # 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. `` as in `[[Has description::{{#ask: HasStripMarkers # }}]]` 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 p 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
...
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' ] ];