/**
 * Dataset-schema specific settings for {@link SparqlDataProvider}.
 *
 * @category Data
 */
export interface SparqlDataProviderSettings {
    /**
     * Default prefix to be used in every query.
     */
    defaultPrefix: string;
    /**
     * Property path for querying schema labels in schema (classes, link types, properties).
     */
    schemaLabelProperty: string;
    /**
     * Property path for querying instance data labels (elements, links).
     */
    dataLabelProperty: string;
    /**
     * Set of language tags to provide a `FILTER` for labels and other literal values.
     */
    filterOnlyLanguages?: ReadonlyArray<string>;
    /**
     * SELECT query to retrieve class tree.
     *
     * Parametrized variables:
     *   - `${schemaLabelProperty}` `schemaLabelProperty` property from the settings
     *
     * Expected output bindings:
     *   - `?class`
     *   - `?label` (optional)
     *   - `?parent` (optional)
     *   - `?instcount` (optional)
     */
    classTreeQuery?: string;
    /**
     * SELECT query to retrieve data for each class in a set.
     *
     * Parametrized variables:
     *   - `${ids}` VALUES clause content with class IRIs
     *   - `${schemaLabelProperty}` `schemaLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     *
     * Expected output bindings:
     *   - `?class`
     *   - `?label` (optional)
     *   - `?instcount` (optional)
     */
    classInfoQuery?: string;
    /**
     * SELECT query to retrieve initial link types.
     *
     * Parametrized variables:
     *   - `${linkTypesPattern}` `linkTypesPattern` property from the settings
     *   - `${schemaLabelProperty}` `schemaLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     *
     * Expected output bindings:
     *   - `?link`
     *   - `?label` (optional)
     *   - `?instcount` (optional)
     */
    linkTypesQuery?: string;
    /**
     * Overridable part of `linkTypesQuery` with same output bindings.
     *
     * Parametrized variables: none
     */
    linkTypesPattern?: string;
    /**
     * SELECT query to retrieve data for each link type in a set.
     *
     * Parametrized variables:
     *   - `${ids}` VALUES clause content with link type IRIs
     *   - `${schemaLabelProperty}` `schemaLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     *
     * Expected output bindings:
     *   - `?link`
     *   - `?label` (optional)
     *   - `?instcount` (optional)
     */
    linkTypesInfoQuery?: string;
    /**
     * SELECT query to retrieve data for each datatype property in a set.
     *
     * Parametrized variables:
     *   - `${ids}` VALUES clause content with datatype property IRIs
     *   - `${schemaLabelProperty}` `schemaLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     *
     * Expected output bindings:
     *   - `?property`
     *   - `?label` (optional)
     */
    propertyInfoQuery?: string;
    /**
     * CONSTRUCT query to retrieve data for each element (types, labels, properties).
     *
     * Parametrized variables:
     *   - `${ids}` VALUES clause content with element IRIs
     *   - `${dataLabelProperty}` `dataLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     *   - `${valueLanguageFilter}` property value filter based on `filterOnlyLanguages`
     *   - `${propertyConfigurations}`
     *
     * Expected output format for triples:
     *   - `?inst <urn:reactodia:sparql:type> ?class` element has type
     *   - `?inst <urn:reactodia:sparql:label> ?label` element has label
     *   - `?inst ?propType ?propValue` element has value for a datatype property
     */
    elementInfoQuery: string;
    /**
     * SELECT query to retrieve links between specified `sourceIris` and
     * `targetIris` sets of entities.
     *
     * For backwards compatibility, `${ids}` placeholder variable with
     * combined set of entities can be used; in that case incremental
     * link querying will be disabled.
     *
     * Parametrized variables:
     *   - `${sourceIris}` VALUES clause content with source entity IRIs
     *   - `${targetIris}` VALUES clause content with target entity IRIs
     *   - `${ids}` VALUES clause content with all entity IRIs (for compatibility)
     *   - `${propLanguageFilter}` property value filter based on `filterOnlyLanguages`
     *   - `${linkConfigurations}`
     *
     * Expected output bindings:
     *   - `?type` link type
     *   - `?source` link source
     *   - `?target` link target
     *   - `?propType` (optional) link property type
     *   - `?propValue` (optional) link property value
     */
    linksInfoQuery: string;
    /**
     * Query pattern to retrieve image URL for an element.
     *
     * Expected bindings:
     *   - `?inst` element IRI
     *   - `?linkType` image property IRI
     *   - `?image` result image URL
     */
    imageQueryPattern: string;
    /**
     * SELECT query to retrieve incoming/outgoing link types from specified element with statistics.
     *
     * If `?direction` binding is returned, it would be possible to avoid statistics query
     * when `inexactCount` mode is requested in {@link DataProvider.connectedLinkStats}.
     *
     * Parametrized variables:
     *   - `${elementIri}`
     *   - `${linkConfigurations}`
     *
     * Expected bindings:
     *   - `?link`
     *   - `?direction` (optional) - expected values: `"in"`, `"out"`.
     */
    linkTypesOfQuery: string;
    /**
     * SELECT query to retrieve statistics of incoming/outgoing link types for specified element.
     *
     * Parametrized variables:
     *   - `${linkId}`
     *   - `${elementIri}`
     *   - `${linkConfigurationOut}`
     *   - `${linkConfigurationIn}`
     *   - `${navigateElementFilterOut}` (optional; for blank node support only)
     *   - `${navigateElementFilterIn}` (optional; for blank node support only)
     *
     * Expected bindings:
     *   - `?link` link type
     *   - `?inCount` incoming links count
     *   - `?outCount` outgoing links count
     */
    linkTypesStatisticsQuery: string;
    /**
     * SPARQL query pattern to restrict lookup results in case when
     * {@link DataProviderLookupParams.refElementLinkId} is not specified.
     *
     * Available bindings:
     *   - `?link` link type
     *   - `?direction` link direction, either `"in"` or `"out"`
     */
    filterRefElementLinkPattern: string;
    /**
     * SPARQL query pattern to retrieve transitive type sets for elements.
     *
     * Expected output bindings:
     *   - `?inst` element IRI
     *   - `?class` element type (there may be multiple or transitive types for an element)
     */
    filterTypePattern: string;
    /**
     * SPARQL pattern which describes how to fetch elements info similar to `elementInfoQuery`
     * but within the lookup query.
     *
     * Parametrized variables:
     *   - `${dataLabelProperty}` `dataLabelProperty` property from the settings
     *   - `${labelLanguageFilter}` label filter based on `filterOnlyLanguages`
     */
    filterElementInfoPattern: string;
    /**
     * SPARQL query pattern for additional filtering on elements within the lookup query.
     */
    filterAdditionalRestriction: string;
    /**
     * Lookup by text settings.
     */
    fullTextSearch: FullTextSearchSettings;
    /**
     * "Virtual" links configurations to translate a SPARQL pattern as a link.
     */
    linkConfigurations: LinkConfiguration[];
    /**
     * Allows data provider to find links other than specified in `linkConfigurations`
     * when `linkConfigurations` has at least one value set.
     *
     * @default false
     */
    openWorldLinks?: boolean;
    /**
     * "Virtual" property configurations to translate a SPARQL pattern as an element property.
     */
    propertyConfigurations: PropertyConfiguration[];
    /**
     * Allows data provider to find element properties other than specified in
     * `propertyConfigurations` when `propertyConfigurations` has at least one value set.
     *
     * @default false
     */
    openWorldProperties?: boolean;
}
/**
 * Lookup text search settings.
 *
 * It is possible to use anything from DB-specific search extensions to a regular expression match.
 */
export interface FullTextSearchSettings {
    /**
     * Prefixes to use in full text search queries.
     */
    prefix: string;
    /**
     * SPARQL query pattern to search/restrict results by text token.
     *
     * Parametrized variables:
     *   - `${text}` text token
     *   - `${dataLabelProperty}` `dataLabelProperty` property from the settings
     *
     * Expected bindings:
     *   - `?inst` link type
     *   - `?score` numerical score for ordering search results by relevance
     *   - `?extractedLabel` (optional; if `extractLabel` is enabled)
     */
    queryPattern: string;
    /**
     * When enabled, adds SPARQL patterns to try to extract label from IRI and
     * makes it available as `?extractedLabel` binding in `queryPattern`.
     */
    extractLabel?: boolean;
}
/**
 * Link abstraction configuration.
 */
export interface LinkConfiguration {
    /**
     * IRI of the "virtual" link
     */
    id: string;
    /**
     * Optional domain constraint for source element of the link.
     * If specified checks RDF type of source element to match one from this set.
     */
    domain?: ReadonlyArray<string>;
    /**
     * SPARQL predicate or pattern connecting source element to target element.
     *
     * Expected bindings (if it is a pattern):
     *   - `?source` source element
     *   - `?target` target element
     *
     * @example
     * Direct configuration: `ex:relatedToOther`
     *
     * Pattern configuration: `
     *   ?source ex:hasAddress ?addr .
     *   ?addr ex:hasCountry ?target .
     *   OPTIONAL {
     *     BIND(ex:addressType as ?propType)
     *     ?addr ex:addressType ?propValue
     *   }
     * `
     */
    path: string;
    /**
     * Additional SPARQL patterns can be used for getting properties of the link.
     *
     * Expected bindings
     *   - `?source` source element
     *   - `?target` target element
     *   - `?propType` link property type
     *   - `?propValue` link property value
     */
    properties?: string;
}
/**
 * Specifies property abstraction configuration
 */
export interface PropertyConfiguration {
    /**
     * IRI of the "virtual" link
     */
    id: string;
    /**
     * Optional domain constraint for source element of the property.
     * If specified checks RDF type of source element to match one from this set.
     */
    domain?: ReadonlyArray<string>;
    /**
     * SPARQL predicate or pattern connecting source element to property value.
     *
     * Expected bindings (if it is a pattern):
     *   - `?inst` source element
     *   - `?value` property value
     *
     * @example
     * Direct configuration: `ex:firstName`
     *
     * Pattern configuration: `
     *   ?inst ex:hasAddress ?addr .
     *   ?addr ex:hasApartmentNumber ?value
     * `
     */
    path: string;
}
/**
 * @category Constants
 */
export declare const RdfSettings: SparqlDataProviderSettings;
/**
 * @category Constants
 */
export declare const WikidataSettings: SparqlDataProviderSettings;
/**
 * @category Constants
 */
export declare const OwlRdfsSettings: SparqlDataProviderSettings;
/**
 * @category Constants
 */
export declare const OwlStatsSettings: SparqlDataProviderSettings;
/**
 * @category Constants
 */
export declare const DBPediaSettings: SparqlDataProviderSettings;
//# sourceMappingURL=sparqlDataProviderSettings.d.ts.map