/// /// /// /// /** * Type Definitions for Gjs (https://gjs.guide/) * * These type definitions are automatically generated, do not edit them by hand. * If you found a bug fix it in `ts-for-gir` or create a bug report on https://github.com/gjsify/ts-for-gir * * The based EJS template file is used for the generated .d.ts file of each GIR module like Gtk-4.0, GObject-2.0, ... */ declare module 'gi://Tsparql?version=3.0' { // Module dependencies import type Gio from 'gi://Gio?version=2.0'; import type GObject from 'gi://GObject?version=2.0'; import type GLib from 'gi://GLib?version=2.0'; import type GModule from 'gi://GModule?version=2.0'; export namespace Tsparql { /** * Tsparql-3.0 */ /** * Flags affecting deserialization from a RDF data format. */ /** * Flags affecting deserialization from a RDF data format. */ export namespace DeserializeFlags { export const $gtype: GObject.GType; } enum DeserializeFlags { /** * No flags. */ NONE, } /** * Notifier event types. */ /** * Notifier event types. */ export namespace NotifierEventType { export const $gtype: GObject.GType; } enum NotifierEventType { /** * An element was created. */ CREATE, /** * An element was deleted. */ DELETE, /** * An element was updated. */ UPDATE, } /** * Describes a RDF format to be used in data exchange. */ /** * Describes a RDF format to be used in data exchange. */ export namespace RdfFormat { export const $gtype: GObject.GType; } enum RdfFormat { /** * Turtle format * ([http://www.w3.org/ns/formats/Turtle](http://www.w3.org/ns/formats/Turtle)) */ TURTLE, /** * Trig format * ([http://www.w3.org/ns/formats/Trig](http://www.w3.org/ns/formats/Trig)) */ TRIG, /** * JSON-LD format * ([http://www.w3.org/ns/formats/JSON-LD](http://www.w3.org/ns/formats/JSON-LD)). * This value was added in version 3.5. */ JSON_LD, /** * The total number of RDF formats */ LAST, } /** * Flags affecting serialization into a RDF data format. */ /** * Flags affecting serialization into a RDF data format. */ export namespace SerializeFlags { export const $gtype: GObject.GType; } enum SerializeFlags { /** * No flags. */ NONE, } /** * Error domain for Tracker Sparql. Errors in this domain will be from the * [error`SparqlError]` enumeration. See [struct`GLib`.Error] for more information on error * domains. */ class SparqlError extends GLib.Error { static $gtype: GObject.GType; // Static fields /** * Subject is not in the domain of a property or * trying to set multiple values for a single valued * property. */ static CONSTRAINT: number; /** * Internal error. */ static INTERNAL: number; /** * There was no disk space available to perform the request. */ static NO_SPACE: number; /** * The specified ontology wasn't found. */ static ONTOLOGY_NOT_FOUND: number; /** * Problem encountered while opening the database. */ static OPEN_ERROR: number; /** * Error parsing the SPARQL string. */ static PARSE: number; /** * Problem while executing the query. */ static QUERY_FAILED: number; /** * Type constraint failed when trying to insert data. */ static TYPE: number; /** * Unknown class. */ static UNKNOWN_CLASS: number; /** * Unknown graph. */ static UNKNOWN_GRAPH: number; /** * Unknown property. */ static UNKNOWN_PROPERTY: number; /** * Unsupported feature or method. */ static UNSUPPORTED: number; /** * The ontology doesn't contain nrl:lastModified header */ static MISSING_LAST_MODIFIED_HEADER: number; /** * The property is not completely defined. */ static INCOMPLETE_PROPERTY_DEFINITION: number; /** * A soft/hard corruption was found in the database during operation. * If this error is obtained during regular operations with an existing [class`SparqlConnection]`, * the corruption was newly found. This event will be persistently recorded so that the * [func`SparqlConnection`.new_async] constructor (or its synchronous variant) will * perform database repair attempts. If this error is obtained during one of those constructors, the * database could not be repaired automatically and data loss is unavoidable. It is left to the discretion * of the API user to set up the appropriate fallbacks in this situation, to replace the * database and recover from the error. See [ctor`SparqlConnection`.new] documentation * for more information on corruption handling. */ static CORRUPT: number; /** * The total number of error codes. */ static LAST: number; // Constructors constructor(options: { message: string; code: number }); _init(...args: any[]): void; // Static methods static quark(): GLib.Quark; } /** * Enumeration with the possible types of the cursor's cells */ /** * Enumeration with the possible types of the cursor's cells */ export namespace SparqlValueType { export const $gtype: GObject.GType; } enum SparqlValueType { /** * Unbound value type */ UNBOUND, /** * Uri value type, rdfs:Resource */ URI, /** * String value type, xsd:string or rdf:langString */ STRING, /** * Integer value type, xsd:integer */ INTEGER, /** * Double value type, xsd:double */ DOUBLE, /** * Datetime value type, xsd:dateTime */ DATETIME, /** * Blank node value type */ BLANK_NODE, /** * Boolean value type, xsd:boolean */ BOOLEAN, } /** * The major version of the Tracker library. * * Like #tracker_major_version, but intended to be used at application compile time. */ const MAJOR_VERSION: number; /** * The micro version of the Tracker library. * * Like #tracker_micro_version, but intended to be used at application compile time. */ const MICRO_VERSION: number; /** * The minor version of the Tracker library. * * Like #tracker_minor_version, but intended to be used at application compile time. */ const MINOR_VERSION: number; /** * The Prefix of the DC (Dublin Core) namespace */ const PREFIX_DC: string; /** * The Prefix of the MFO namespace */ const PREFIX_MFO: string; /** * The Prefix of the NAO namespace */ const PREFIX_NAO: string; /** * The Prefix of the NCO namespace */ const PREFIX_NCO: string; /** * The Prefix of the NFO namespace */ const PREFIX_NFO: string; /** * The Prefix of the NIE namespace */ const PREFIX_NIE: string; /** * The Prefix of the RDF namespace */ const PREFIX_NMM: string; /** * The Prefix of the NRL namespace */ const PREFIX_NRL: string; /** * The Prefix of the Osinfo namespace */ const PREFIX_OSINFO: string; /** * The Prefix of the RDF namespace */ const PREFIX_RDF: string; /** * The Prefix of the RDFS namespace */ const PREFIX_RDFS: string; /** * The Prefix of the SLO namespace */ const PREFIX_SLO: string; /** * The Prefix of the Tracker namespace */ const PREFIX_TRACKER: string; /** * The Prefix of the XSD namespace */ const PREFIX_XSD: string; /** * Checks that the Tracker library in use is compatible with the given version. * * Generally you would pass in the constants * [const`MAJOR_VERSION]`, [const`MINOR_VERSION]`, [const`MICRO_VERSION]` * as the three arguments to this function; that produces * a check that the library in use is compatible with * the version of Tracker the application or module was compiled * against. * * Compatibility is defined by two things: first the version * of the running library is newer than the version * `required_major`.`required_minor`.`required_micro`. Second * the running library must be binary compatible with the * version `required_major`.`required_minor`.`required_micro` * (same major version.) * @param required_major the required major version. * @param required_minor the required minor version. * @param required_micro the required micro version. * @returns %NULL if the Tracker library is compatible with the given version, or a string describing the version mismatch. */ function check_version(required_major: number, required_minor: number, required_micro: number): string; function sparql_error_quark(): GLib.Quark; /** * Escapes `literal` so it is suitable for insertion in * SPARQL queries as string literals. * * Manual construction of query strings based user input is best * avoided at all cost, use of #TrackerSparqlStatement is recommended * instead. * @param literal a string to escape * @returns the escaped string */ function sparql_escape_string(literal: string): string; /** * Escapes a string for use as a URI. * @param uri a string to be escaped, following the tracker sparql rules * @returns a newly-allocated string holding the result. */ function sparql_escape_uri(uri: string): string; /** * Returns a path to the built-in Nepomuk ontologies. * @returns a #GFile instance. */ function sparql_get_ontology_nepomuk(): Gio.File; /** * Creates a fresh UUID-based URN. * @returns A newly generated UUID URN. */ function sparql_get_uuid_urn(): string; /** * Connection flags to modify #TrackerSparqlConnection behavior. */ /** * Connection flags to modify #TrackerSparqlConnection behavior. */ export namespace SparqlConnectionFlags { export const $gtype: GObject.GType; } enum SparqlConnectionFlags { /** * No flags. */ NONE, /** * Connection is readonly. */ READONLY, /** * Word stemming is applied to FTS search terms. */ FTS_ENABLE_STEMMER, /** * Unaccenting is applied to FTS search terms. */ FTS_ENABLE_UNACCENT, /** * FTS Search terms are filtered through a stop word list. This flag is deprecated since Tracker 3.6, and will do nothing. */ FTS_ENABLE_STOP_WORDS, /** * Ignore numbers in FTS search terms. */ FTS_IGNORE_NUMBERS, /** * Treat blank nodes as specified in * SPARQL 1.1 syntax. Namely, they cannot be used as URIs. This flag is available since Tracker 3.3. */ ANONYMOUS_BNODES, } namespace Batch { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { connection: SparqlConnection; } } /** * `TrackerBatch` executes a series of SPARQL updates and RDF data * insertions within a transaction. * * A batch is created with [method`SparqlConnection`.create_batch]. * To add resources use [method`Batch`.add_resource], * [method`Batch`.add_sparql] or [method`Batch`.add_statement]. * * When a batch is ready for execution, use [method`Batch`.execute] * or [method`Batch`.execute_async]. The batch is executed as a single * transaction, it will succeed or fail entirely. * * This object has a single use, after the batch is executed it can * only be finished and freed. * * The mapping of blank node labels is global in a `TrackerBatch`, * referencing the same blank node label in different operations in * a batch will resolve to the same resource. */ abstract class Batch extends GObject.Object { static $gtype: GObject.GType; // Properties /** * The [class`SparqlConnection]` the batch belongs to. */ get connection(): SparqlConnection; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; // Methods /** * Inserts the RDF data contained in `stream` as part of `batch`. * * The RDF data will be inserted in the given `default_graph` if one is provided, * or the anonymous graph if `default_graph` is %NULL. Any RDF data that has a * graph specified (e.g. using the `GRAPH` clause in the Trig format) will * be inserted in the specified graph instead of `default_graph`. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_DESERIALIZE_FLAGS_NONE must be passed. * @param flags Deserialization flags * @param format RDF format of data in stream * @param default_graph Default graph that will receive the RDF data * @param stream Input stream with RDF data */ add_rdf( flags: DeserializeFlags | null, format: RdfFormat | null, default_graph: string, stream: Gio.InputStream, ): void; /** * Adds the RDF represented by `resource` to `batch`. * @param graph RDF graph to insert the resource to * @param resource A [class@Resource] */ add_resource(graph: string | null, resource: Resource): void; /** * Adds an SPARQL update string to `batch`. * @param sparql A SPARQL update string */ add_sparql(sparql: string): void; /** * Adds a [class`SparqlStatement]` containing an SPARQL update. The statement will * be executed once in the batch, with the values bound as specified by `variable_names` * and `values`. * * For example, for a statement that has a single `~name` parameter, * it could be given a value for execution with the given code: * * ```c * const char *names = { "name" }; * const GValue values[G_N_ELEMENTS (names)] = { 0, }; * * g_value_init (&values[0], G_TYPE_STRING); * g_value_set_string (&values[0], "John Smith"); * tracker_batch_add_statementv (batch, stmt, * G_N_ELEMENTS (names), * names, values); * ``` * ```python * batch.add_statement(stmt, ['name'], ['John Smith']); * ``` * ```js * batch.add_statement(stmt, ['name'], ['John Smith']); * ``` * * A [class`SparqlStatement]` may be used on multiple [method`Batch`.add_statement] * calls with the same or different values, on the same or different `TrackerBatch` * objects. * * This function should only be called on [class`SparqlStatement]` objects * obtained through [method`SparqlConnection`.update_statement] or * update statements loaded through [method`SparqlConnection`.load_statement_from_gresource]. * @param stmt A [class@SparqlStatement] containing a SPARQL update * @param variable_names The names of each bound parameter * @param values The values of each bound parameter */ add_statement(stmt: SparqlStatement, variable_names: string[], values: (GObject.Value | any)[]): void; /** * Executes the batch. This operations happens synchronously. * @param cancellable Optional [type@Gio.Cancellable] * @returns %TRUE of there were no errors, %FALSE otherwise */ execute(cancellable?: Gio.Cancellable | null): boolean; /** * Executes the batch. This operation happens asynchronously, when * finished `callback` will be executed. * @param cancellable Optional [type@Gio.Cancellable] */ execute_async(cancellable?: Gio.Cancellable | null): Promise; /** * Executes the batch. This operation happens asynchronously, when * finished `callback` will be executed. * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ execute_async(cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null): void; /** * Executes the batch. This operation happens asynchronously, when * finished `callback` will be executed. * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ execute_async( cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`Batch`.execute_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns %TRUE of there were no errors, %FALSE otherwise */ execute_finish(res: Gio.AsyncResult): boolean; /** * Returns the [class`SparqlConnection]` that this batch was created * from. * @returns The SPARQL connection of this batch. */ get_connection(): SparqlConnection; } namespace Endpoint { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { allowed_graphs: string[]; allowedGraphs: string[]; allowed_services: string[]; allowedServices: string[]; readonly: boolean; sparql_connection: SparqlConnection; sparqlConnection: SparqlConnection; } } /** * `TrackerEndpoint` is a helper object to make RDF triple stores represented * by a [class`SparqlConnection]` publicly available to other processes/hosts. * * This is a base abstract object, see [class`EndpointDBus]` to make * RDF triple stores available to other processes in the same machine, and * [class`EndpointHttp]` to make it available to other hosts in the * network. * * When the RDF triple store represented by a [class`SparqlConnection]` * is made public this way, other peers may connect to the database using * [ctor`SparqlConnection`.bus_new] or [ctor`SparqlConnection`.remote_new] * to access this endpoint exclusively, or they may use the `SERVICE { ... }` SPARQL * syntax from their own [class`SparqlConnection]`s to expand their data set. * * By default, and as long as the underlying [class`SparqlConnection]` * allows SPARQL updates and RDF graph changes, endpoints will allow updates * and modifications to happen through them. Use [method`Endpoint`.set_readonly] * to change this behavior. * * By default, endpoints allow access to every RDF graph in the triple store * and further external SPARQL endpoints to the queries performed on it. Use * [method`Endpoint`.set_allowed_graphs] and * [method`Endpoint`.set_allowed_services] to change this behavior. Users do * not typically need to do this for D-Bus endpoints, as these do already have a layer * of protection with the Tracker portal. This is the mechanism used by the portal * itself. This access control API may not interoperate with other SPARQL endpoint * implementations than Tracker. */ abstract class Endpoint extends GObject.Object { static $gtype: GObject.GType; // Properties /** * RDF graphs that are allowed to be accessed * through queries to this endpoint. See * tracker_endpoint_set_allowed_graphs(). */ get allowed_graphs(): string[]; set allowed_graphs(val: string[]); /** * RDF graphs that are allowed to be accessed * through queries to this endpoint. See * tracker_endpoint_set_allowed_graphs(). */ get allowedGraphs(): string[]; set allowedGraphs(val: string[]); /** * External SPARQL endpoints that are allowed to be * accessed through queries to this endpint. See * tracker_endpoint_set_allowed_services(). */ get allowed_services(): string[]; set allowed_services(val: string[]); /** * External SPARQL endpoints that are allowed to be * accessed through queries to this endpint. See * tracker_endpoint_set_allowed_services(). */ get allowedServices(): string[]; set allowedServices(val: string[]); /** * Whether the endpoint allows SPARQL updates or not. See * tracker_endpoint_set_readonly(). */ get readonly(): boolean; set readonly(val: boolean); /** * The [class`SparqlConnection]` being proxied by this endpoint. */ get sparql_connection(): SparqlConnection; /** * The [class`SparqlConnection]` being proxied by this endpoint. */ get sparqlConnection(): SparqlConnection; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; // Methods /** * Returns the list of RDF graphs that the endpoint allows * access for. * @returns The list of allowed RDF graphs */ get_allowed_graphs(): string[]; /** * Returns the list of external SPARQL endpoints that are * allowed to be accessed through this endpoint. * @returns The list of allowed services */ get_allowed_services(): string[]; /** * Returns whether the endpoint is readonly, thus SPARQL update * queries are disallowed. * @returns %TRUE if the endpoint is readonly */ get_readonly(): boolean; /** * Returns the [class`SparqlConnection]` that this endpoint proxies * to a wider audience. * @returns The proxied SPARQL connection */ get_sparql_connection(): SparqlConnection; /** * Sets the list of RDF graphs that this endpoint will allow access * for. Any explicit (e.g. `GRAPH` keyword) or implicit (e.g. through the * default anonymous graph) access to RDF graphs unespecified in this * list in SPARQL queries will be seen as if those graphs did not exist, or * (equivalently) had an empty set. Changes to these graphs through SPARQL * updates will also be disallowed. * * If `graphs` is %NULL, access will be allowed to every RDF graph stored * in the endpoint, this is the default behavior. If you want to forbid access * to all RDF graphs, use an empty list. * * The empty string (`""`) is allowed as a special value, to allow access * to the stock anonymous graph. All graph names are otherwise dependent * on the endpoint and its contained data. * @param graphs List of allowed graphs, or %NULL to allow all graphs */ set_allowed_graphs(graphs: string): void; /** * Sets the list of external SPARQL endpoints that this endpoint * will allow access for. Access through the `SERVICE` SPARQL syntax * will fail for services not specified in this list. * * If `services` is %NULL, access will be allowed to every external endpoint, * this is the default behavior. If you want to forbid access to all * external SPARQL endpoints, use an empty list. * * This affects both remote SPARQL endpoints accessed through HTTP, * and external SPARQL endpoints offered through D-Bus. For the latter, * the following syntax is allowed to describe them as an URI: * * `DBUS_URI = 'dbus:' [ ('system' | 'session') ':' ]? dbus-name [ ':' object-path ]?` * * If the system/session part is omitted, it will default to the session * bus. If the object path is omitted, the `/org/freedesktop/Tracker3/Endpoint` * [class`EndpointDBus]` default will be assumed. * @param services List of allowed services, or %NULL to allow all services */ set_allowed_services(services: string): void; /** * Sets whether the endpoint will be readonly. Readonly endpoints * will not allow SPARQL update queries. The underlying * [class`SparqlConnection]` may be readonly of its own, this * method does not change its behavior in any way. * @param readonly Whether the endpoint will be readonly */ set_readonly(readonly: boolean): void; } namespace EndpointDBus { // Signal callback interfaces interface BlockCall { (object: string): boolean; } // Constructor properties interface interface ConstructorProps extends Endpoint.ConstructorProps, Gio.Initable.ConstructorProps { dbus_connection: Gio.DBusConnection; dbusConnection: Gio.DBusConnection; object_path: string; objectPath: string; } } /** * `TrackerEndpointDBus` makes the RDF data in a [class`SparqlConnection]` * accessible to other processes via DBus. * * This object is a [class`Endpoint]` subclass that exports * a [class`SparqlConnection]` so its RDF data is accessible to other * processes through the given [class`Gio`.DBusConnection]. * * ```c * // This process already has org.example.Endpoint bus name * endpoint = tracker_endpoint_dbus_new (sparql_connection, * dbus_connection, * NULL, * NULL, * &error); * * // From another process * connection = tracker_sparql_connection_bus_new ("org.example.Endpoint", * NULL, * dbus_connection, * &error); * ``` * * The `TrackerEndpointDBus` will manage a DBus object at the given path * with the `org.freedesktop.Tracker3.Endpoint` interface, if no path is * given the object will be at the default `/org/freedesktop/Tracker3/Endpoint` * location. * * Access to D-Bus endpoints may be managed via the * [signal`EndpointDBus:`:block-call] signal, the boolean * return value expressing whether the request is blocked or not. * Inspection of the requester address is left up to the user. The * default value allows all requests independently of their provenance. * * However, moderating access to D-Bus interfaces is typically not necessary * in user code, as access to public D-Bus endpoints will be transparently * managed through the Tracker portal service for applications sandboxed * via XDG portals. These already have access to D-Bus SPARQL endpoints and * their data naturally filtered as defined in the application manifest. * * A `TrackerEndpointDBus` may be created on a different thread/main * context from the one that created [class`SparqlConnection]`. */ class EndpointDBus extends Endpoint implements Gio.Initable { static $gtype: GObject.GType; // Properties /** * The [class`Gio`.DBusConnection] where the connection is proxied through. */ get dbus_connection(): Gio.DBusConnection; /** * The [class`Gio`.DBusConnection] where the connection is proxied through. */ get dbusConnection(): Gio.DBusConnection; /** * The DBus object path that this endpoint manages. */ get object_path(): string; /** * The DBus object path that this endpoint manages. */ get objectPath(): string; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; static ['new']( sparql_connection: SparqlConnection, dbus_connection: Gio.DBusConnection, object_path?: string | null, cancellable?: Gio.Cancellable | null, ): EndpointDBus; // Signals connect(id: string, callback: (...args: any[]) => any): number; connect_after(id: string, callback: (...args: any[]) => any): number; emit(id: string, ...args: any[]): void; connect(signal: 'block-call', callback: (_source: this, object: string) => boolean): number; connect_after(signal: 'block-call', callback: (_source: this, object: string) => boolean): number; emit(signal: 'block-call', object: string): void; // Inherited methods /** * Initializes the object implementing the interface. * * This method is intended for language bindings. If writing in C, * g_initable_new() should typically be used instead. * * The object must be initialized before any real use after initial * construction, either with this function or g_async_initable_init_async(). * * Implementations may also support cancellation. If `cancellable` is not %NULL, * then initialization can be cancelled by triggering the cancellable object * from another thread. If the operation was cancelled, the error * %G_IO_ERROR_CANCELLED will be returned. If `cancellable` is not %NULL and * the object doesn't support cancellable initialization the error * %G_IO_ERROR_NOT_SUPPORTED will be returned. * * If the object is not initialized, or initialization returns with an * error, then all operations on the object except g_object_ref() and * g_object_unref() are considered to be invalid, and have undefined * behaviour. See the [description][iface`Gio`.Initable#description] for more details. * * Callers should not assume that a class which implements #GInitable can be * initialized multiple times, unless the class explicitly documents itself as * supporting this. Generally, a class’ implementation of init() can assume * (and assert) that it will only be called once. Previously, this documentation * recommended all #GInitable implementations should be idempotent; that * recommendation was relaxed in GLib 2.54. * * If a class explicitly supports being initialized multiple times, it is * recommended that the method is idempotent: multiple calls with the same * arguments should return the same results. Only the first call initializes * the object; further calls return the result of the first call. * * One reason why a class might need to support idempotent initialization is if * it is designed to be used via the singleton pattern, with a * #GObjectClass.constructor that sometimes returns an existing instance. * In this pattern, a caller would expect to be able to call g_initable_init() * on the result of g_object_new(), regardless of whether it is in fact a new * instance. * @param cancellable optional #GCancellable object, %NULL to ignore. * @returns %TRUE if successful. If an error has occurred, this function will return %FALSE and set @error appropriately if present. */ init(cancellable?: Gio.Cancellable | null): boolean; /** * Initializes the object implementing the interface. * * This method is intended for language bindings. If writing in C, * g_initable_new() should typically be used instead. * * The object must be initialized before any real use after initial * construction, either with this function or g_async_initable_init_async(). * * Implementations may also support cancellation. If `cancellable` is not %NULL, * then initialization can be cancelled by triggering the cancellable object * from another thread. If the operation was cancelled, the error * %G_IO_ERROR_CANCELLED will be returned. If `cancellable` is not %NULL and * the object doesn't support cancellable initialization the error * %G_IO_ERROR_NOT_SUPPORTED will be returned. * * If the object is not initialized, or initialization returns with an * error, then all operations on the object except g_object_ref() and * g_object_unref() are considered to be invalid, and have undefined * behaviour. See the [description][iface`Gio`.Initable#description] for more details. * * Callers should not assume that a class which implements #GInitable can be * initialized multiple times, unless the class explicitly documents itself as * supporting this. Generally, a class’ implementation of init() can assume * (and assert) that it will only be called once. Previously, this documentation * recommended all #GInitable implementations should be idempotent; that * recommendation was relaxed in GLib 2.54. * * If a class explicitly supports being initialized multiple times, it is * recommended that the method is idempotent: multiple calls with the same * arguments should return the same results. Only the first call initializes * the object; further calls return the result of the first call. * * One reason why a class might need to support idempotent initialization is if * it is designed to be used via the singleton pattern, with a * #GObjectClass.constructor that sometimes returns an existing instance. * In this pattern, a caller would expect to be able to call g_initable_init() * on the result of g_object_new(), regardless of whether it is in fact a new * instance. * @param cancellable optional #GCancellable object, %NULL to ignore. */ vfunc_init(cancellable?: Gio.Cancellable | null): boolean; /** * Creates a binding between `source_property` on `source` and `target_property` * on `target`. * * Whenever the `source_property` is changed the `target_property` is * updated using the same value. For instance: * * * ```c * g_object_bind_property (action, "active", widget, "sensitive", 0); * ``` * * * Will result in the "sensitive" property of the widget #GObject instance to be * updated with the same value of the "active" property of the action #GObject * instance. * * If `flags` contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual: * if `target_property` on `target` changes then the `source_property` on `source` * will be updated as well. * * The binding will automatically be removed when either the `source` or the * `target` instances are finalized. To remove the binding without affecting the * `source` and the `target` you can just call g_object_unref() on the returned * #GBinding instance. * * Removing the binding by calling g_object_unref() on it must only be done if * the binding, `source` and `target` are only used from a single thread and it * is clear that both `source` and `target` outlive the binding. Especially it * is not safe to rely on this if the binding, `source` or `target` can be * finalized from different threads. Keep another reference to the binding and * use g_binding_unbind() instead to be on the safe side. * * A #GObject can have multiple bindings. * @param source_property the property on @source to bind * @param target the target #GObject * @param target_property the property on @target to bind * @param flags flags to pass to #GBinding * @returns the #GBinding instance representing the binding between the two #GObject instances. The binding is released whenever the #GBinding reference count reaches zero. */ bind_property( source_property: string, target: GObject.Object, target_property: string, flags: GObject.BindingFlags | null, ): GObject.Binding; /** * Complete version of g_object_bind_property(). * * Creates a binding between `source_property` on `source` and `target_property` * on `target,` allowing you to set the transformation functions to be used by * the binding. * * If `flags` contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual: * if `target_property` on `target` changes then the `source_property` on `source` * will be updated as well. The `transform_from` function is only used in case * of bidirectional bindings, otherwise it will be ignored * * The binding will automatically be removed when either the `source` or the * `target` instances are finalized. This will release the reference that is * being held on the #GBinding instance; if you want to hold on to the * #GBinding instance, you will need to hold a reference to it. * * To remove the binding, call g_binding_unbind(). * * A #GObject can have multiple bindings. * * The same `user_data` parameter will be used for both `transform_to` * and `transform_from` transformation functions; the `notify` function will * be called once, when the binding is removed. If you need different data * for each transformation function, please use * g_object_bind_property_with_closures() instead. * @param source_property the property on @source to bind * @param target the target #GObject * @param target_property the property on @target to bind * @param flags flags to pass to #GBinding * @param transform_to the transformation function from the @source to the @target, or %NULL to use the default * @param transform_from the transformation function from the @target to the @source, or %NULL to use the default * @param notify a function to call when disposing the binding, to free resources used by the transformation functions, or %NULL if not required * @returns the #GBinding instance representing the binding between the two #GObject instances. The binding is released whenever the #GBinding reference count reaches zero. */ bind_property_full( source_property: string, target: GObject.Object, target_property: string, flags: GObject.BindingFlags | null, transform_to?: GObject.BindingTransformFunc | null, transform_from?: GObject.BindingTransformFunc | null, notify?: GLib.DestroyNotify | null, ): GObject.Binding; // Conflicted with GObject.Object.bind_property_full bind_property_full(...args: never[]): any; /** * This function is intended for #GObject implementations to re-enforce * a [floating][floating-ref] object reference. Doing this is seldom * required: all #GInitiallyUnowneds are created with a floating reference * which usually just needs to be sunken by calling g_object_ref_sink(). */ force_floating(): void; /** * Increases the freeze count on `object`. If the freeze count is * non-zero, the emission of "notify" signals on `object` is * stopped. The signals are queued until the freeze count is decreased * to zero. Duplicate notifications are squashed so that at most one * #GObject::notify signal is emitted for each property modified while the * object is frozen. * * This is necessary for accessors that modify multiple properties to prevent * premature notification while the object is still being modified. */ freeze_notify(): void; /** * Gets a named field from the objects table of associations (see g_object_set_data()). * @param key name of the key for that association * @returns the data if found, or %NULL if no such data exists. */ get_data(key: string): any | null; /** * Gets a property of an object. * * The value can be: * - an empty GObject.Value initialized by G_VALUE_INIT, which will be automatically initialized with the expected type of the property (since GLib 2.60) * - a GObject.Value initialized with the expected type of the property * - a GObject.Value initialized with a type to which the expected type of the property can be transformed * * In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling GObject.Value.unset. * * Note that GObject.Object.get_property is really intended for language bindings, GObject.Object.get is much more convenient for C programming. * @param property_name The name of the property to get * @param value Return location for the property value. Can be an empty GObject.Value initialized by G_VALUE_INIT (auto-initialized with expected type since GLib 2.60), a GObject.Value initialized with the expected property type, or a GObject.Value initialized with a transformable type */ get_property(property_name: string, value: GObject.Value | any): any; /** * This function gets back user data pointers stored via * g_object_set_qdata(). * @param quark A #GQuark, naming the user data pointer * @returns The user data pointer set, or %NULL */ get_qdata(quark: GLib.Quark): any | null; /** * Gets `n_properties` properties for an `object`. * Obtained properties will be set to `values`. All properties must be valid. * Warnings will be emitted and undefined behaviour may result if invalid * properties are passed in. * @param names the names of each property to get * @param values the values of each property to get */ getv(names: string[], values: (GObject.Value | any)[]): void; /** * Checks whether `object` has a [floating][floating-ref] reference. * @returns %TRUE if @object has a floating reference */ is_floating(): boolean; /** * Emits a "notify" signal for the property `property_name` on `object`. * * When possible, eg. when signaling a property change from within the class * that registered the property, you should use g_object_notify_by_pspec() * instead. * * Note that emission of the notify signal may be blocked with * g_object_freeze_notify(). In this case, the signal emissions are queued * and will be emitted (in reverse order) when g_object_thaw_notify() is * called. * @param property_name the name of a property installed on the class of @object. */ notify(property_name: string): void; /** * Emits a "notify" signal for the property specified by `pspec` on `object`. * * This function omits the property name lookup, hence it is faster than * g_object_notify(). * * One way to avoid using g_object_notify() from within the * class that registered the properties, and using g_object_notify_by_pspec() * instead, is to store the GParamSpec used with * g_object_class_install_property() inside a static array, e.g.: * * * ```c * typedef enum * { * PROP_FOO = 1, * PROP_LAST * } MyObjectProperty; * * static GParamSpec *properties[PROP_LAST]; * * static void * my_object_class_init (MyObjectClass *klass) * { * properties[PROP_FOO] = g_param_spec_int ("foo", NULL, NULL, * 0, 100, * 50, * G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); * g_object_class_install_property (gobject_class, * PROP_FOO, * properties[PROP_FOO]); * } * ``` * * * and then notify a change on the "foo" property with: * * * ```c * g_object_notify_by_pspec (self, properties[PROP_FOO]); * ``` * * @param pspec the #GParamSpec of a property installed on the class of @object. */ notify_by_pspec(pspec: GObject.ParamSpec): void; /** * Increases the reference count of `object`. * * Since GLib 2.56, if `GLIB_VERSION_MAX_ALLOWED` is 2.56 or greater, the type * of `object` will be propagated to the return type (using the GCC typeof() * extension), so any casting the caller needs to do on the return type must be * explicit. * @returns the same @object */ ref(): GObject.Object; /** * Increase the reference count of `object,` and possibly remove the * [floating][floating-ref] reference, if `object` has a floating reference. * * In other words, if the object is floating, then this call "assumes * ownership" of the floating reference, converting it to a normal * reference by clearing the floating flag while leaving the reference * count unchanged. If the object is not floating, then this call * adds a new normal reference increasing the reference count by one. * * Since GLib 2.56, the type of `object` will be propagated to the return type * under the same conditions as for g_object_ref(). * @returns @object */ ref_sink(): GObject.Object; /** * Releases all references to other objects. This can be used to break * reference cycles. * * This function should only be called from object system implementations. */ run_dispose(): void; /** * Each object carries around a table of associations from * strings to pointers. This function lets you set an association. * * If the object already had an association with that name, * the old association will be destroyed. * * Internally, the `key` is converted to a #GQuark using g_quark_from_string(). * This means a copy of `key` is kept permanently (even after `object` has been * finalized) — so it is recommended to only use a small, bounded set of values * for `key` in your program, to avoid the #GQuark storage growing unbounded. * @param key name of the key * @param data data to associate with that key */ set_data(key: string, data?: any | null): void; /** * Sets a property on an object. * @param property_name The name of the property to set * @param value The value to set the property to */ set_property(property_name: string, value: GObject.Value | any): void; /** * Remove a specified datum from the object's data associations, * without invoking the association's destroy handler. * @param key name of the key * @returns the data if found, or %NULL if no such data exists. */ steal_data(key: string): any | null; /** * This function gets back user data pointers stored via * g_object_set_qdata() and removes the `data` from object * without invoking its destroy() function (if any was * set). * Usually, calling this function is only required to update * user data pointers with a destroy notifier, for example: * * ```c * void * object_add_to_user_list (GObject *object, * const gchar *new_string) * { * // the quark, naming the object data * GQuark quark_string_list = g_quark_from_static_string ("my-string-list"); * // retrieve the old string list * GList *list = g_object_steal_qdata (object, quark_string_list); * * // prepend new string * list = g_list_prepend (list, g_strdup (new_string)); * // this changed 'list', so we need to set it again * g_object_set_qdata_full (object, quark_string_list, list, free_string_list); * } * static void * free_string_list (gpointer data) * { * GList *node, *list = data; * * for (node = list; node; node = node->next) * g_free (node->data); * g_list_free (list); * } * ``` * * Using g_object_get_qdata() in the above example, instead of * g_object_steal_qdata() would have left the destroy function set, * and thus the partial string list would have been freed upon * g_object_set_qdata_full(). * @param quark A #GQuark, naming the user data pointer * @returns The user data pointer set, or %NULL */ steal_qdata(quark: GLib.Quark): any | null; /** * Reverts the effect of a previous call to * g_object_freeze_notify(). The freeze count is decreased on `object` * and when it reaches zero, queued "notify" signals are emitted. * * Duplicate notifications for each property are squashed so that at most one * #GObject::notify signal is emitted for each property, in the reverse order * in which they have been queued. * * It is an error to call this function when the freeze count is zero. */ thaw_notify(): void; /** * Decreases the reference count of `object`. When its reference count * drops to 0, the object is finalized (i.e. its memory is freed). * * If the pointer to the #GObject may be reused in future (for example, if it is * an instance variable of another object), it is recommended to clear the * pointer to %NULL rather than retain a dangling pointer to a potentially * invalid #GObject instance. Use g_clear_object() for this. */ unref(): void; /** * This function essentially limits the life time of the `closure` to * the life time of the object. That is, when the object is finalized, * the `closure` is invalidated by calling g_closure_invalidate() on * it, in order to prevent invocations of the closure with a finalized * (nonexisting) object. Also, g_object_ref() and g_object_unref() are * added as marshal guards to the `closure,` to ensure that an extra * reference count is held on `object` during invocation of the * `closure`. Usually, this function will be called on closures that * use this `object` as closure data. * @param closure #GClosure to watch */ watch_closure(closure: GObject.Closure): void; /** * the `constructed` function is called by g_object_new() as the * final step of the object creation process. At the point of the call, all * construction properties have been set on the object. The purpose of this * call is to allow for object initialisation steps that can only be performed * after construction properties have been set. `constructed` implementors * should chain up to the `constructed` call of their parent class to allow it * to complete its initialisation. */ vfunc_constructed(): void; /** * emits property change notification for a bunch * of properties. Overriding `dispatch_properties_changed` should be rarely * needed. * @param n_pspecs * @param pspecs */ vfunc_dispatch_properties_changed(n_pspecs: number, pspecs: GObject.ParamSpec): void; /** * the `dispose` function is supposed to drop all references to other * objects, but keep the instance otherwise intact, so that client method * invocations still work. It may be run multiple times (due to reference * loops). Before returning, `dispose` should chain up to the `dispose` method * of the parent class. */ vfunc_dispose(): void; /** * instance finalization function, should finish the finalization of * the instance begun in `dispose` and chain up to the `finalize` method of the * parent class. */ vfunc_finalize(): void; /** * the generic getter for all properties of this type. Should be * overridden for every type with properties. * @param property_id * @param value * @param pspec */ vfunc_get_property(property_id: number, value: GObject.Value | any, pspec: GObject.ParamSpec): void; /** * Emits a "notify" signal for the property `property_name` on `object`. * * When possible, eg. when signaling a property change from within the class * that registered the property, you should use g_object_notify_by_pspec() * instead. * * Note that emission of the notify signal may be blocked with * g_object_freeze_notify(). In this case, the signal emissions are queued * and will be emitted (in reverse order) when g_object_thaw_notify() is * called. * @param pspec */ vfunc_notify(pspec: GObject.ParamSpec): void; /** * the generic setter for all properties of this type. Should be * overridden for every type with properties. If implementations of * `set_property` don't emit property change notification explicitly, this will * be done implicitly by the type system. However, if the notify signal is * emitted explicitly, the type system will not emit it a second time. * @param property_id * @param value * @param pspec */ vfunc_set_property(property_id: number, value: GObject.Value | any, pspec: GObject.ParamSpec): void; /** * Disconnects a handler from an instance so it will not be called during any future or currently ongoing emissions of the signal it has been connected to. * @param id Handler ID of the handler to be disconnected */ disconnect(id: number): void; /** * Sets multiple properties of an object at once. The properties argument should be a dictionary mapping property names to values. * @param properties Object containing the properties to set */ set(properties: { [key: string]: any }): void; /** * Blocks a handler of an instance so it will not be called during any signal emissions * @param id Handler ID of the handler to be blocked */ block_signal_handler(id: number): void; /** * Unblocks a handler so it will be called again during any signal emissions * @param id Handler ID of the handler to be unblocked */ unblock_signal_handler(id: number): void; /** * Stops a signal's emission by the given signal name. This will prevent the default handler and any subsequent signal handlers from being invoked. * @param detailedName Name of the signal to stop emission of */ stop_emission_by_name(detailedName: string): void; } namespace EndpointHttp { // Signal callback interfaces interface BlockRemoteAddress { (address: Gio.SocketAddress): boolean; } // Constructor properties interface interface ConstructorProps extends Endpoint.ConstructorProps, Gio.Initable.ConstructorProps { http_certificate: Gio.TlsCertificate; httpCertificate: Gio.TlsCertificate; http_port: number; httpPort: number; } } /** * `TrackerEndpointHttp` makes the RDF data in a [class`SparqlConnection]` * accessible to other hosts via HTTP. * * This object is a [class`Endpoint]` subclass that exports * a [class`SparqlConnection]` so its RDF data is accessible via HTTP * requests on the given port. This endpoint implementation is compliant * with the [SPARQL protocol specifications](https://www.w3.org/TR/2013/REC-sparql11-protocol-20130321/) * and may interoperate with other implementations. * * ```c * // This host has "example.local" hostname * endpoint = tracker_endpoint_http_new (sparql_connection, * 8080, * tls_certificate, * NULL, * &error); * * // From another host * connection = tracker_sparql_connection_remote_new ("http://example.local:8080/sparql"); * ``` * * Access to HTTP endpoints may be managed via the * [signal`EndpointHttp:`:block-remote-address] signal, the boolean * return value expressing whether the connection is blocked or not. * Inspection of the requester address is left up to the user. The * default value allows all requests independently of their provenance, * users are encouraged to add a handler. * * If the provided [class`Gio`.TlsCertificate] is %NULL, the endpoint will allow * plain HTTP connections. Users are encouraged to provide a certificate * in order to use HTTPS. * * As a security measure, and in compliance specifications, * the HTTP endpoint does not handle database updates or modifications in any * way. The database content is considered to be entirely managed by the * process that creates the HTTP endpoint and owns the [class`SparqlConnection]`. * * A `TrackerEndpointHttp` may be created on a different thread/main * context from the one that created [class`SparqlConnection]`. */ class EndpointHttp extends Endpoint implements Gio.Initable { static $gtype: GObject.GType; // Properties /** * [class`Gio`.TlsCertificate] to encrypt the communication. */ get http_certificate(): Gio.TlsCertificate; /** * [class`Gio`.TlsCertificate] to encrypt the communication. */ get httpCertificate(): Gio.TlsCertificate; /** * HTTP port used to listen requests. */ get http_port(): number; /** * HTTP port used to listen requests. */ get httpPort(): number; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; static ['new']( sparql_connection: SparqlConnection, port: number, certificate?: Gio.TlsCertificate | null, cancellable?: Gio.Cancellable | null, ): EndpointHttp; // Signals connect(id: string, callback: (...args: any[]) => any): number; connect_after(id: string, callback: (...args: any[]) => any): number; emit(id: string, ...args: any[]): void; connect( signal: 'block-remote-address', callback: (_source: this, address: Gio.SocketAddress) => boolean, ): number; connect_after( signal: 'block-remote-address', callback: (_source: this, address: Gio.SocketAddress) => boolean, ): number; emit(signal: 'block-remote-address', address: Gio.SocketAddress): void; // Inherited methods /** * Initializes the object implementing the interface. * * This method is intended for language bindings. If writing in C, * g_initable_new() should typically be used instead. * * The object must be initialized before any real use after initial * construction, either with this function or g_async_initable_init_async(). * * Implementations may also support cancellation. If `cancellable` is not %NULL, * then initialization can be cancelled by triggering the cancellable object * from another thread. If the operation was cancelled, the error * %G_IO_ERROR_CANCELLED will be returned. If `cancellable` is not %NULL and * the object doesn't support cancellable initialization the error * %G_IO_ERROR_NOT_SUPPORTED will be returned. * * If the object is not initialized, or initialization returns with an * error, then all operations on the object except g_object_ref() and * g_object_unref() are considered to be invalid, and have undefined * behaviour. See the [description][iface`Gio`.Initable#description] for more details. * * Callers should not assume that a class which implements #GInitable can be * initialized multiple times, unless the class explicitly documents itself as * supporting this. Generally, a class’ implementation of init() can assume * (and assert) that it will only be called once. Previously, this documentation * recommended all #GInitable implementations should be idempotent; that * recommendation was relaxed in GLib 2.54. * * If a class explicitly supports being initialized multiple times, it is * recommended that the method is idempotent: multiple calls with the same * arguments should return the same results. Only the first call initializes * the object; further calls return the result of the first call. * * One reason why a class might need to support idempotent initialization is if * it is designed to be used via the singleton pattern, with a * #GObjectClass.constructor that sometimes returns an existing instance. * In this pattern, a caller would expect to be able to call g_initable_init() * on the result of g_object_new(), regardless of whether it is in fact a new * instance. * @param cancellable optional #GCancellable object, %NULL to ignore. * @returns %TRUE if successful. If an error has occurred, this function will return %FALSE and set @error appropriately if present. */ init(cancellable?: Gio.Cancellable | null): boolean; /** * Initializes the object implementing the interface. * * This method is intended for language bindings. If writing in C, * g_initable_new() should typically be used instead. * * The object must be initialized before any real use after initial * construction, either with this function or g_async_initable_init_async(). * * Implementations may also support cancellation. If `cancellable` is not %NULL, * then initialization can be cancelled by triggering the cancellable object * from another thread. If the operation was cancelled, the error * %G_IO_ERROR_CANCELLED will be returned. If `cancellable` is not %NULL and * the object doesn't support cancellable initialization the error * %G_IO_ERROR_NOT_SUPPORTED will be returned. * * If the object is not initialized, or initialization returns with an * error, then all operations on the object except g_object_ref() and * g_object_unref() are considered to be invalid, and have undefined * behaviour. See the [description][iface`Gio`.Initable#description] for more details. * * Callers should not assume that a class which implements #GInitable can be * initialized multiple times, unless the class explicitly documents itself as * supporting this. Generally, a class’ implementation of init() can assume * (and assert) that it will only be called once. Previously, this documentation * recommended all #GInitable implementations should be idempotent; that * recommendation was relaxed in GLib 2.54. * * If a class explicitly supports being initialized multiple times, it is * recommended that the method is idempotent: multiple calls with the same * arguments should return the same results. Only the first call initializes * the object; further calls return the result of the first call. * * One reason why a class might need to support idempotent initialization is if * it is designed to be used via the singleton pattern, with a * #GObjectClass.constructor that sometimes returns an existing instance. * In this pattern, a caller would expect to be able to call g_initable_init() * on the result of g_object_new(), regardless of whether it is in fact a new * instance. * @param cancellable optional #GCancellable object, %NULL to ignore. */ vfunc_init(cancellable?: Gio.Cancellable | null): boolean; /** * Creates a binding between `source_property` on `source` and `target_property` * on `target`. * * Whenever the `source_property` is changed the `target_property` is * updated using the same value. For instance: * * * ```c * g_object_bind_property (action, "active", widget, "sensitive", 0); * ``` * * * Will result in the "sensitive" property of the widget #GObject instance to be * updated with the same value of the "active" property of the action #GObject * instance. * * If `flags` contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual: * if `target_property` on `target` changes then the `source_property` on `source` * will be updated as well. * * The binding will automatically be removed when either the `source` or the * `target` instances are finalized. To remove the binding without affecting the * `source` and the `target` you can just call g_object_unref() on the returned * #GBinding instance. * * Removing the binding by calling g_object_unref() on it must only be done if * the binding, `source` and `target` are only used from a single thread and it * is clear that both `source` and `target` outlive the binding. Especially it * is not safe to rely on this if the binding, `source` or `target` can be * finalized from different threads. Keep another reference to the binding and * use g_binding_unbind() instead to be on the safe side. * * A #GObject can have multiple bindings. * @param source_property the property on @source to bind * @param target the target #GObject * @param target_property the property on @target to bind * @param flags flags to pass to #GBinding * @returns the #GBinding instance representing the binding between the two #GObject instances. The binding is released whenever the #GBinding reference count reaches zero. */ bind_property( source_property: string, target: GObject.Object, target_property: string, flags: GObject.BindingFlags | null, ): GObject.Binding; /** * Complete version of g_object_bind_property(). * * Creates a binding between `source_property` on `source` and `target_property` * on `target,` allowing you to set the transformation functions to be used by * the binding. * * If `flags` contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual: * if `target_property` on `target` changes then the `source_property` on `source` * will be updated as well. The `transform_from` function is only used in case * of bidirectional bindings, otherwise it will be ignored * * The binding will automatically be removed when either the `source` or the * `target` instances are finalized. This will release the reference that is * being held on the #GBinding instance; if you want to hold on to the * #GBinding instance, you will need to hold a reference to it. * * To remove the binding, call g_binding_unbind(). * * A #GObject can have multiple bindings. * * The same `user_data` parameter will be used for both `transform_to` * and `transform_from` transformation functions; the `notify` function will * be called once, when the binding is removed. If you need different data * for each transformation function, please use * g_object_bind_property_with_closures() instead. * @param source_property the property on @source to bind * @param target the target #GObject * @param target_property the property on @target to bind * @param flags flags to pass to #GBinding * @param transform_to the transformation function from the @source to the @target, or %NULL to use the default * @param transform_from the transformation function from the @target to the @source, or %NULL to use the default * @param notify a function to call when disposing the binding, to free resources used by the transformation functions, or %NULL if not required * @returns the #GBinding instance representing the binding between the two #GObject instances. The binding is released whenever the #GBinding reference count reaches zero. */ bind_property_full( source_property: string, target: GObject.Object, target_property: string, flags: GObject.BindingFlags | null, transform_to?: GObject.BindingTransformFunc | null, transform_from?: GObject.BindingTransformFunc | null, notify?: GLib.DestroyNotify | null, ): GObject.Binding; // Conflicted with GObject.Object.bind_property_full bind_property_full(...args: never[]): any; /** * This function is intended for #GObject implementations to re-enforce * a [floating][floating-ref] object reference. Doing this is seldom * required: all #GInitiallyUnowneds are created with a floating reference * which usually just needs to be sunken by calling g_object_ref_sink(). */ force_floating(): void; /** * Increases the freeze count on `object`. If the freeze count is * non-zero, the emission of "notify" signals on `object` is * stopped. The signals are queued until the freeze count is decreased * to zero. Duplicate notifications are squashed so that at most one * #GObject::notify signal is emitted for each property modified while the * object is frozen. * * This is necessary for accessors that modify multiple properties to prevent * premature notification while the object is still being modified. */ freeze_notify(): void; /** * Gets a named field from the objects table of associations (see g_object_set_data()). * @param key name of the key for that association * @returns the data if found, or %NULL if no such data exists. */ get_data(key: string): any | null; /** * Gets a property of an object. * * The value can be: * - an empty GObject.Value initialized by G_VALUE_INIT, which will be automatically initialized with the expected type of the property (since GLib 2.60) * - a GObject.Value initialized with the expected type of the property * - a GObject.Value initialized with a type to which the expected type of the property can be transformed * * In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling GObject.Value.unset. * * Note that GObject.Object.get_property is really intended for language bindings, GObject.Object.get is much more convenient for C programming. * @param property_name The name of the property to get * @param value Return location for the property value. Can be an empty GObject.Value initialized by G_VALUE_INIT (auto-initialized with expected type since GLib 2.60), a GObject.Value initialized with the expected property type, or a GObject.Value initialized with a transformable type */ get_property(property_name: string, value: GObject.Value | any): any; /** * This function gets back user data pointers stored via * g_object_set_qdata(). * @param quark A #GQuark, naming the user data pointer * @returns The user data pointer set, or %NULL */ get_qdata(quark: GLib.Quark): any | null; /** * Gets `n_properties` properties for an `object`. * Obtained properties will be set to `values`. All properties must be valid. * Warnings will be emitted and undefined behaviour may result if invalid * properties are passed in. * @param names the names of each property to get * @param values the values of each property to get */ getv(names: string[], values: (GObject.Value | any)[]): void; /** * Checks whether `object` has a [floating][floating-ref] reference. * @returns %TRUE if @object has a floating reference */ is_floating(): boolean; /** * Emits a "notify" signal for the property `property_name` on `object`. * * When possible, eg. when signaling a property change from within the class * that registered the property, you should use g_object_notify_by_pspec() * instead. * * Note that emission of the notify signal may be blocked with * g_object_freeze_notify(). In this case, the signal emissions are queued * and will be emitted (in reverse order) when g_object_thaw_notify() is * called. * @param property_name the name of a property installed on the class of @object. */ notify(property_name: string): void; /** * Emits a "notify" signal for the property specified by `pspec` on `object`. * * This function omits the property name lookup, hence it is faster than * g_object_notify(). * * One way to avoid using g_object_notify() from within the * class that registered the properties, and using g_object_notify_by_pspec() * instead, is to store the GParamSpec used with * g_object_class_install_property() inside a static array, e.g.: * * * ```c * typedef enum * { * PROP_FOO = 1, * PROP_LAST * } MyObjectProperty; * * static GParamSpec *properties[PROP_LAST]; * * static void * my_object_class_init (MyObjectClass *klass) * { * properties[PROP_FOO] = g_param_spec_int ("foo", NULL, NULL, * 0, 100, * 50, * G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); * g_object_class_install_property (gobject_class, * PROP_FOO, * properties[PROP_FOO]); * } * ``` * * * and then notify a change on the "foo" property with: * * * ```c * g_object_notify_by_pspec (self, properties[PROP_FOO]); * ``` * * @param pspec the #GParamSpec of a property installed on the class of @object. */ notify_by_pspec(pspec: GObject.ParamSpec): void; /** * Increases the reference count of `object`. * * Since GLib 2.56, if `GLIB_VERSION_MAX_ALLOWED` is 2.56 or greater, the type * of `object` will be propagated to the return type (using the GCC typeof() * extension), so any casting the caller needs to do on the return type must be * explicit. * @returns the same @object */ ref(): GObject.Object; /** * Increase the reference count of `object,` and possibly remove the * [floating][floating-ref] reference, if `object` has a floating reference. * * In other words, if the object is floating, then this call "assumes * ownership" of the floating reference, converting it to a normal * reference by clearing the floating flag while leaving the reference * count unchanged. If the object is not floating, then this call * adds a new normal reference increasing the reference count by one. * * Since GLib 2.56, the type of `object` will be propagated to the return type * under the same conditions as for g_object_ref(). * @returns @object */ ref_sink(): GObject.Object; /** * Releases all references to other objects. This can be used to break * reference cycles. * * This function should only be called from object system implementations. */ run_dispose(): void; /** * Each object carries around a table of associations from * strings to pointers. This function lets you set an association. * * If the object already had an association with that name, * the old association will be destroyed. * * Internally, the `key` is converted to a #GQuark using g_quark_from_string(). * This means a copy of `key` is kept permanently (even after `object` has been * finalized) — so it is recommended to only use a small, bounded set of values * for `key` in your program, to avoid the #GQuark storage growing unbounded. * @param key name of the key * @param data data to associate with that key */ set_data(key: string, data?: any | null): void; /** * Sets a property on an object. * @param property_name The name of the property to set * @param value The value to set the property to */ set_property(property_name: string, value: GObject.Value | any): void; /** * Remove a specified datum from the object's data associations, * without invoking the association's destroy handler. * @param key name of the key * @returns the data if found, or %NULL if no such data exists. */ steal_data(key: string): any | null; /** * This function gets back user data pointers stored via * g_object_set_qdata() and removes the `data` from object * without invoking its destroy() function (if any was * set). * Usually, calling this function is only required to update * user data pointers with a destroy notifier, for example: * * ```c * void * object_add_to_user_list (GObject *object, * const gchar *new_string) * { * // the quark, naming the object data * GQuark quark_string_list = g_quark_from_static_string ("my-string-list"); * // retrieve the old string list * GList *list = g_object_steal_qdata (object, quark_string_list); * * // prepend new string * list = g_list_prepend (list, g_strdup (new_string)); * // this changed 'list', so we need to set it again * g_object_set_qdata_full (object, quark_string_list, list, free_string_list); * } * static void * free_string_list (gpointer data) * { * GList *node, *list = data; * * for (node = list; node; node = node->next) * g_free (node->data); * g_list_free (list); * } * ``` * * Using g_object_get_qdata() in the above example, instead of * g_object_steal_qdata() would have left the destroy function set, * and thus the partial string list would have been freed upon * g_object_set_qdata_full(). * @param quark A #GQuark, naming the user data pointer * @returns The user data pointer set, or %NULL */ steal_qdata(quark: GLib.Quark): any | null; /** * Reverts the effect of a previous call to * g_object_freeze_notify(). The freeze count is decreased on `object` * and when it reaches zero, queued "notify" signals are emitted. * * Duplicate notifications for each property are squashed so that at most one * #GObject::notify signal is emitted for each property, in the reverse order * in which they have been queued. * * It is an error to call this function when the freeze count is zero. */ thaw_notify(): void; /** * Decreases the reference count of `object`. When its reference count * drops to 0, the object is finalized (i.e. its memory is freed). * * If the pointer to the #GObject may be reused in future (for example, if it is * an instance variable of another object), it is recommended to clear the * pointer to %NULL rather than retain a dangling pointer to a potentially * invalid #GObject instance. Use g_clear_object() for this. */ unref(): void; /** * This function essentially limits the life time of the `closure` to * the life time of the object. That is, when the object is finalized, * the `closure` is invalidated by calling g_closure_invalidate() on * it, in order to prevent invocations of the closure with a finalized * (nonexisting) object. Also, g_object_ref() and g_object_unref() are * added as marshal guards to the `closure,` to ensure that an extra * reference count is held on `object` during invocation of the * `closure`. Usually, this function will be called on closures that * use this `object` as closure data. * @param closure #GClosure to watch */ watch_closure(closure: GObject.Closure): void; /** * the `constructed` function is called by g_object_new() as the * final step of the object creation process. At the point of the call, all * construction properties have been set on the object. The purpose of this * call is to allow for object initialisation steps that can only be performed * after construction properties have been set. `constructed` implementors * should chain up to the `constructed` call of their parent class to allow it * to complete its initialisation. */ vfunc_constructed(): void; /** * emits property change notification for a bunch * of properties. Overriding `dispatch_properties_changed` should be rarely * needed. * @param n_pspecs * @param pspecs */ vfunc_dispatch_properties_changed(n_pspecs: number, pspecs: GObject.ParamSpec): void; /** * the `dispose` function is supposed to drop all references to other * objects, but keep the instance otherwise intact, so that client method * invocations still work. It may be run multiple times (due to reference * loops). Before returning, `dispose` should chain up to the `dispose` method * of the parent class. */ vfunc_dispose(): void; /** * instance finalization function, should finish the finalization of * the instance begun in `dispose` and chain up to the `finalize` method of the * parent class. */ vfunc_finalize(): void; /** * the generic getter for all properties of this type. Should be * overridden for every type with properties. * @param property_id * @param value * @param pspec */ vfunc_get_property(property_id: number, value: GObject.Value | any, pspec: GObject.ParamSpec): void; /** * Emits a "notify" signal for the property `property_name` on `object`. * * When possible, eg. when signaling a property change from within the class * that registered the property, you should use g_object_notify_by_pspec() * instead. * * Note that emission of the notify signal may be blocked with * g_object_freeze_notify(). In this case, the signal emissions are queued * and will be emitted (in reverse order) when g_object_thaw_notify() is * called. * @param pspec */ vfunc_notify(pspec: GObject.ParamSpec): void; /** * the generic setter for all properties of this type. Should be * overridden for every type with properties. If implementations of * `set_property` don't emit property change notification explicitly, this will * be done implicitly by the type system. However, if the notify signal is * emitted explicitly, the type system will not emit it a second time. * @param property_id * @param value * @param pspec */ vfunc_set_property(property_id: number, value: GObject.Value | any, pspec: GObject.ParamSpec): void; /** * Disconnects a handler from an instance so it will not be called during any future or currently ongoing emissions of the signal it has been connected to. * @param id Handler ID of the handler to be disconnected */ disconnect(id: number): void; /** * Sets multiple properties of an object at once. The properties argument should be a dictionary mapping property names to values. * @param properties Object containing the properties to set */ set(properties: { [key: string]: any }): void; /** * Blocks a handler of an instance so it will not be called during any signal emissions * @param id Handler ID of the handler to be blocked */ block_signal_handler(id: number): void; /** * Unblocks a handler so it will be called again during any signal emissions * @param id Handler ID of the handler to be unblocked */ unblock_signal_handler(id: number): void; /** * Stops a signal's emission by the given signal name. This will prevent the default handler and any subsequent signal handlers from being invoked. * @param detailedName Name of the signal to stop emission of */ stop_emission_by_name(detailedName: string): void; } namespace NamespaceManager { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps {} } /** * `TrackerNamespaceManager` object represents a mapping between namespaces and * their shortened prefixes. * * This object keeps track of namespaces, and allows you to assign * short prefixes for them to avoid frequent use of full namespace IRIs. The syntax * used is that of [Compact URIs (CURIEs)](https://www.w3.org/TR/2010/NOTE-curie-20101216). * * Usually you will want to use a namespace manager obtained through * [method`SparqlConnection`.get_namespace_manager] from the * [class`SparqlConnection]` that manages the RDF data, as that will * contain all prefixes and namespaces that are pre-defined by its ontology. */ class NamespaceManager extends GObject.Object { static $gtype: GObject.GType; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; static ['new'](): NamespaceManager; // Static methods /** * Returns the global `TrackerNamespaceManager` that contains a set of well-known * namespaces and prefixes, such as `rdf:`, `rdfs:`, `nie:`, `tracker:`, etc. * * Note that the list of prefixes and namespaces is hardcoded in * libtracker-sparql. It may not correspond with the installed set of * ontologies, if they have been modified since they were installed. */ static get_default(): NamespaceManager; // Methods /** * Adds `prefix` as the recognised abbreviaton of `namespace`. * * Only one prefix is allowed for a given namespace, and all prefixes must * be unique. * * Since 3.3, The `TrackerNamespaceManager` instances obtained through * [method`SparqlConnection`.get_namespace_manager] are "sealed", * this API call should not performed on those. * @param prefix a short, unique prefix to identify @namespace * @param ns the URL of the given namespace */ add_prefix(prefix: string, ns: string): void; /** * If `uri` begins with one of the namespaces known to this * `TrackerNamespaceManager`, then the return value will be the * compressed URI. Otherwise, %NULL will be returned. * @param uri a URI or compact URI * @returns (nullable): the compressed URI */ compress_uri(uri: string): string; /** * If `compact_uri` begins with one of the prefixes known to this * `TrackerNamespaceManager`, then the return value will be the * expanded URI. Otherwise, a copy of `compact_uri` will be returned. * @param compact_uri a URI or compact URI * @returns The possibly expanded URI in a newly-allocated string. */ expand_uri(compact_uri: string): string; /** * Calls `func` for each known prefix / URI pair. * @param func the function to call for each prefix / URI pair */ foreach(func: GLib.HFunc): void; /** * Returns whether `prefix` is known. * @param prefix a string * @returns %TRUE if the `TrackerNamespaceManager` knows about @prefix, %FALSE otherwise */ has_prefix(prefix: string): boolean; /** * Looks up the namespace URI corresponding to `prefix,` or %NULL if the prefix * is not known. * @param prefix a string * @returns a string owned by the `TrackerNamespaceManager`, or %NULL */ lookup_prefix(prefix: string): string | null; /** * Writes out all namespaces as ``prefix`` statements in * the [Turtle](https://www.w3.org/TR/turtle/) RDF format. * @returns a newly-allocated string */ print_turtle(): string; } namespace Notifier { // Signal callback interfaces interface Events { (service: string, graph: string, events: NotifierEvent[]): void; } // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { connection: SparqlConnection; } } /** * `TrackerNotifier` allows receiving notification on changes * in the data stored by a [class`SparqlConnection]`. * * This object may be created through [method`SparqlConnection`.create_notifier], * events can then be listened for by connecting to the * [signal`Notifier:`:events] signal. * * Not every change is notified, only RDF resources with a * class that has the [nrl:notify](nrl-ontology.html#nrl:notify) * property defined by the ontology will be notified upon changes. * * Database changes are communicated through [struct`NotifierEvent]` events on * individual graph/resource pairs. The event type obtained through * [method`NotifierEvent`.get_event_type] will determine the type of event. * Insertion of new resources is notified through * %TRACKER_NOTIFIER_EVENT_CREATE events, deletion of * resources is notified through %TRACKER_NOTIFIER_EVENT_DELETE * events, and changes on any property of the resource is notified * through %TRACKER_NOTIFIER_EVENT_UPDATE events. * * The events happen in reaction to database changes, after a `TrackerNotifier` * received an event of type %TRACKER_NOTIFIER_EVENT_DELETE, the resource will * not exist anymore and only the information in the [struct`NotifierEvent]` * will remain. * * Similarly, when receiving an event of type %TRACKER_NOTIFIER_EVENT_UPDATE, * the resource will have already changed, so the data previous to the update is * no longer available. * * The [signal`Notifier:`:events] signal is emitted in the thread-default * main context of the thread where the `TrackerNotifier` instance was created. */ class Notifier extends GObject.Object { static $gtype: GObject.GType; // Properties /** * SPARQL connection to listen to. */ get connection(): SparqlConnection; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; // Signals connect(id: string, callback: (...args: any[]) => any): number; connect_after(id: string, callback: (...args: any[]) => any): number; emit(id: string, ...args: any[]): void; connect( signal: 'events', callback: (_source: this, service: string, graph: string, events: NotifierEvent[]) => void, ): number; connect_after( signal: 'events', callback: (_source: this, service: string, graph: string, events: NotifierEvent[]) => void, ): number; emit(signal: 'events', service: string, graph: string, events: NotifierEvent[]): void; // Methods /** * Listens to notification events from a remote DBus SPARQL endpoint. * * If `connection` refers to a message bus (system/session), `service` must refer * to a D-Bus name (either unique or well-known). If `connection` is a non-message * bus (e.g. a peer-to-peer D-Bus connection) the `service` argument may be %NULL. * * If the `object_path` argument is %NULL, the default * `/org/freedesktop/Tracker3/Endpoint` path will be * used. If `graph` is %NULL, all graphs will be listened for. * * The signal subscription can be removed with * [method`Notifier`.signal_unsubscribe]. * * Note that this call is not necessary to receive notifications on * a connection obtained through [ctor`SparqlConnection`.bus_new], * only to listen to update notifications from additional DBus endpoints. * @param connection A [class@Gio.DBusConnection] * @param service DBus service name to subscribe to events for, or %NULL * @param object_path DBus object path to subscribe to events for, or %NULL * @param graph Graph to listen events for, or %NULL * @returns An ID for this subscription */ signal_subscribe( connection: Gio.DBusConnection, service?: string | null, object_path?: string | null, graph?: string | null, ): number; /** * Undoes a signal subscription done through [method`Notifier`.signal_subscribe]. * * The `handler_id` argument was previously obtained during signal subscription creation. * @param handler_id A signal subscription handler ID */ signal_unsubscribe(handler_id: number): void; } namespace Resource { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { identifier: string; } } /** * `TrackerResource` is an in-memory representation of RDF data about a given resource. * * This object keeps track of a set of properties for a given resource, and can * also link to other `TrackerResource` objects to form trees or graphs of RDF * data. See [method`Resource`.set_relation] and [method`Resource`.set_uri] * on how to link a `TrackerResource` to other RDF data. * * `TrackerResource` may also hold data about literal values, added through * the specialized [method`Resource`.set_int64], [method`Resource`.set_string], * etc family of functions, or the generic [method`Resource`.set_gvalue] method. * * Since RDF properties may be multi-valued, for every `set` call there exists * another `add` call (e.g. [method`Resource`.add_int64], [method`Resource`.add_string] * and so on). The `set` methods do also reset any previously value the * property might hold for the given resource. * * Resources may have an IRI set at creation through [ctor`Resource`.new], * or set afterwards through [method`Resource`.set_identifier]. Resources * without a name will represent a blank node, and will be dealt with as such * during database insertions. * * `TrackerResource` performs no validation on the data being coherent as per * any ontology. Errors will be found out at the time of using the TrackerResource * for e.g. database updates. * * Once the RDF data is built in memory, the (tree of) `TrackerResource` may be * converted to a RDF format through [method`Resource`.print_rdf], or * directly inserted into a database through [method`Batch`.add_resource] * or [method`SparqlConnection`.update_resource]. */ class Resource extends GObject.Object { static $gtype: GObject.GType; // Properties /** * The URI identifier for this class, or %NULL for a * blank node. */ get identifier(): string; set identifier(val: string); // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; static ['new'](identifier?: string | null): Resource; // Static methods /** * Deserializes a `TrackerResource` previously serialized with * [method`Resource`.serialize]. It is implied that both ends * use a common [class`NamespaceManager]`. * @param variant a [type@GLib.Variant] */ static deserialize(variant: GLib.Variant): Resource | null; // Methods /** * Adds a boolean property. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:boolean](xsd-ontology.html#xsd:boolean). * @param property_uri A string identifying the property to modify * @param value The property boolean value */ add_boolean(property_uri: string, value: boolean): void; /** * Adds a date property as a [type`GLib`.DateTime]. Previous values for the * same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:date](xsd-ontology.html#xsd:date) and * [xsd:dateTime](xsd-ontology.html#xsd:dateTime). * @param property_uri a string identifying the property to modify * @param value the property object */ add_datetime(property_uri: string, value: GLib.DateTime): void; /** * Adds a numeric property with double precision. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:double](xsd-ontology.html#xsd:double). * @param property_uri a string identifying the property to modify * @param value the property object */ add_double(property_uri: string, value: number): void; /** * Add `value` to the list of values for given property. * * You can pass any kind of [struct`GObject`.Value] for `value,` but serialization functions will * normally only be able to serialize URIs/relationships and fundamental value * types (string, int, etc.). * @param property_uri a string identifying the property to set * @param value an initialised [struct@GObject.Value] */ add_gvalue(property_uri: string, value: GObject.Value | any): void; /** * Adds a numeric property with integer precision. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:integer](xsd-ontology.html#xsd:integer). * @param property_uri a string identifying the property to modify * @param value the property object */ add_int(property_uri: string, value: number): void; /** * Adds a numeric property with 64-bit integer precision. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:integer](xsd-ontology.html#xsd:integer). * @param property_uri a string identifying the property to modify * @param value the property object */ add_int64(property_uri: string, value: number): void; /** * Adds a resource property as a `TrackerResource`. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This method produces similar RDF to [method`Resource`.add_uri], * although in this function the URI will depend on the identifier * set on `resource`. * @param property_uri a string identifying the property to modify * @param resource the property object */ add_relation(property_uri: string, resource: Resource): void; /** * Adds a string property. Previous values for the same property are kept. * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method corresponds to [xsd:string](xsd-ontology.html#xsd:string). * @param property_uri a string identifying the property to modify * @param value the property object */ add_string(property_uri: string, value: string): void; /** * Adds a resource property as a `TrackerResource`. Previous values for the same property are kept. * Takes ownership on the given `resource`. * * This method is meant to RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This function produces similar RDF to [method`Resource`.add_uri], * although in this function the URI will depend on the identifier * set on `resource`. This function takes ownership of `resource`. * @param property_uri a string identifying the property to modify * @param resource the property object */ add_take_relation(property_uri: string, resource: Resource): void; /** * Adds a resource property as an URI string. Previous values for the same property are kept. * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This method is meant for RDF properties allowing multiple values, see * [nrl:maxCardinality](nrl-ontology.html#nrl:maxCardinality). * * This function produces similar RDF to [method`Resource`.add_relation], although * it requires that the URI is previously known. * @param property_uri a string identifying the property to modify * @param value the property object */ add_uri(property_uri: string, value: string): void; /** * Returns the first boolean object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first boolean object */ get_first_boolean(property_uri: string): boolean; /** * Returns the first [type`GLib`.DateTime] previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first GDateTime object */ get_first_datetime(property_uri: string): GLib.DateTime | null; /** * Returns the first double object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first double object */ get_first_double(property_uri: string): number; /** * Returns the first integer object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first integer object */ get_first_int(property_uri: string): number; /** * Returns the first integer object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first integer object */ get_first_int64(property_uri: string): number; /** * Returns the first resource object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first resource object */ get_first_relation(property_uri: string): Resource | null; /** * Returns the first string object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first string object */ get_first_string(property_uri: string): string | null; /** * Returns the first resource object previously assigned to a property. * @param property_uri a string identifying the property to look up * @returns the first resource object as an URI. */ get_first_uri(property_uri: string): string | null; /** * Returns the identifier of a resource. * * If the identifier was set to NULL, the identifier returned will be a locally * unique SPARQL blank node identifier, such as `_:123`. * @returns a string owned by the resource */ get_identifier(): string | null; /** * Gets the list of properties defined in `resource` * @returns The list of properties. */ get_properties(): string[]; /** * Returns whether the prior values for this property would be deleted * in the SPARQL issued by `resource`. * @param property_uri a string identifying the property to query * @returns #TRUE if the property would be overwritten */ get_property_overwrite(property_uri: string): boolean; /** * Returns the list of all known values of the given property. * @param property_uri a string identifying the property to look up * @returns a [struct@GLib.List] of [struct@GObject.Value] instances. The list should be freed with [func@GLib.List.free] */ get_values(property_uri: string): GObject.Value[] | null; /** * A helper function that compares a `TrackerResource` by its identifier * string. * @param identifier a string identifying the resource * @returns an integer less than, equal to, or greater than zero, if the resource identifier is <, == or > than @identifier */ identifier_compare_func(identifier: string): number; /** * Serialize all the information in `resource` as a JSON-LD document. * * See for more information on the JSON-LD * serialization format. * * The `namespaces` object is used to expand any compact URI values. In most * cases you should pass the one returned by [method`SparqlConnection`.get_namespace_manager] * from the connection that is the intended recipient of this data. * @param namespaces a set of prefixed URLs, or %NULL to use the Nepomuk set * @returns a newly-allocated string containing JSON-LD data. */ print_jsonld(namespaces?: NamespaceManager | null): string; /** * Serialize all the information in `resource` into the selected RDF format. * * The `namespaces` object is used to expand any compact URI values. In most * cases you should pass the one returned by [method`SparqlConnection`.get_namespace_manager] * from the connection that is the intended recipient of this data. * @param namespaces a set of prefixed URLs * @param format RDF format of the printed string * @param graph target graph of the resource RDF, or %NULL for the default graph * @returns a newly-allocated string containing RDF data in the requested format. */ print_rdf(namespaces: NamespaceManager, format: RdfFormat | null, graph?: string | null): string; /** * Generates a SPARQL command to update a database with the information * stored in `resource`. * * The `namespaces` object is used to expand any compact URI values. In most * cases you should pass the one returned by [method`SparqlConnection`.get_namespace_manager] * from the connection that is the intended recipient of this data. * @param namespaces a set of prefixed URLs, or %NULL to use the Nepomuk set * @param graph_id the URN of the graph the data should be added to, or %NULL * @returns a newly-allocated string containing a SPARQL update command. */ print_sparql_update(namespaces?: NamespaceManager | null, graph_id?: string | null): string; /** * Serialize all the information in `resource` as a Turtle document. * * The generated Turtle should correspond to this standard: * * * The `namespaces` object is used to expand any compact URI values. In most * cases you should pass the one returned by [method`SparqlConnection`.get_namespace_manager] * from the connection that is the intended recipient of this data. * @param namespaces a set of prefixed URLs, or %NULL to use the Nepomuk set * @returns a newly-allocated string */ print_turtle(namespaces?: NamespaceManager | null): string; /** * Serializes a `TrackerResource` to a [type`GLib`.Variant] in a lossless way. * All child resources are subsequently serialized. It is implied * that both ends use a common [class`NamespaceManager]`. * @returns A variant describing the resource, the reference is floating. */ serialize(): GLib.Variant | null; /** * Sets a boolean property. Replaces any previous value. * * This method corresponds to [xsd:boolean](xsd-ontology.html#xsd:boolean). * @param property_uri A string identifying the property to modify * @param value The property boolean value */ set_boolean(property_uri: string, value: boolean): void; /** * Sets a date property as a [type`GLib`.DateTime]. Replaces any previous value. * * This method corresponds to [xsd:date](xsd-ontology.html#xsd:date) and * [xsd:dateTime](xsd-ontology.html#xsd:dateTime). * @param property_uri a string identifying the property to modify * @param value the property object */ set_datetime(property_uri: string, value: GLib.DateTime): void; /** * Sets a numeric property with double precision. Replaces any previous value. * * This method corresponds to [xsd:double](xsd-ontology.html#xsd:double). * @param property_uri A string identifying the property to modify * @param value The property object */ set_double(property_uri: string, value: number): void; /** * Replace any previously existing value for `property_uri` with `value`. * * When serialising to SPARQL, any properties that were set with this function * will get a corresponding DELETE statement to remove any existing values in * the database. * * You can pass any kind of [struct`GObject`.Value] for `value,` but serialization functions will * normally only be able to serialize URIs/relationships and fundamental value * types (string, int, etc.). * @param property_uri a string identifying the property to set * @param value an initialised [struct@GObject.Value] */ set_gvalue(property_uri: string, value: GObject.Value | any): void; /** * Changes the identifier of a `TrackerResource`. The identifier should be a * URI or compact URI, but this is not necessarily enforced. Invalid * identifiers may cause errors when serializing the resource or trying to * insert the results in a database. * * If the identifier is set to %NULL, a SPARQL blank node identifier such as * `_:123` is assigned to the resource. * @param identifier a string identifying the resource */ set_identifier(identifier?: string | null): void; /** * Sets a numeric property with integer precision. Replaces any previous value. * * This method corresponds to [xsd:integer](xsd-ontology.html#xsd:integer). * @param property_uri A string identifying the property to modify * @param value The property object */ set_int(property_uri: string, value: number): void; /** * Sets a numeric property with 64-bit integer precision. Replaces any previous value. * * This method corresponds to [xsd:integer](xsd-ontology.html#xsd:integer). * @param property_uri a string identifying the property to modify * @param value the property object */ set_int64(property_uri: string, value: number): void; /** * Sets a resource property as a `TrackerResource`. Replaces any previous value. * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This function produces similar RDF to [method`Resource`.set_uri], * although in this function the URI will depend on the identifier * set on `resource`. * @param property_uri a string identifying the property to modify * @param resource the property object */ set_relation(property_uri: string, resource: Resource): void; /** * Sets a string property. Replaces any previous value. * * This method corresponds to [xsd:string](xsd-ontology.html#xsd:string). * @param property_uri a string identifying the property to modify * @param value the property object */ set_string(property_uri: string, value: string): void; /** * Sets a resource property as a `TrackerResource`. Replaces any previous value. * Takes ownership on the given `resource`. * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This function produces similar RDF to [method`Resource`.set_uri], * although in this function the URI will depend on the identifier * set on `resource`. * @param property_uri a string identifying the property to modify * @param resource the property object */ set_take_relation(property_uri: string, resource: Resource): void; /** * Sets a resource property as an URI string. Replaces any previous value. * * This method applies to properties with a [rdfs:range](rdf-ontology.html#rdfs:range) * that points to a non-literal class (i.e. a subclass of * [rdfs:Resource](rdf-ontology.html#rdfs:Resource)). * * This function produces similar RDF to [method`Resource`.set_relation], although * it requires that the URI is previously known. * @param property_uri a string identifying the property to modify * @param value the property object */ set_uri(property_uri: string, value: string): void; } namespace SparqlConnection { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps {} } /** * `TrackerSparqlConnection` holds a connection to a RDF triple store. * * This triple store may be of three types: * * - Local to the process, created through [ctor`SparqlConnection`.new]. * - A HTTP SPARQL endpoint over the network, created through * [ctor`SparqlConnection`.remote_new] * - A DBus SPARQL endpoint owned by another process in the same machine, created * through [ctor`SparqlConnection`.bus_new] * * When creating a local triple store, it is required to give details about its * structure. This is done by passing a location to an ontology, see more * on how are [ontologies defined](ontologies.html). A local database may be * stored in a filesystem location, or it may reside in memory. * * A `TrackerSparqlConnection` is private to the calling process, it can be * exposed to other hosts/processes via a [class`Endpoint]`, see * [ctor`EndpointDBus`.new] and [ctor`EndpointHttp`.new]. * * When issuing SPARQL queries and updates, it is recommended that these are * created through [class`SparqlStatement]` to avoid the SPARQL * injection class of bugs, see [method`SparqlConnection`.query_statement] * and [method`SparqlConnection`.update_statement]. For SPARQL updates * it is also possible to use a "builder" approach to generate RDF data, see * [class`Resource]`. It is also possible to create [class`SparqlStatement]` * objects for SPARQL queries and updates from SPARQL strings embedded in a * [struct`Gio`.Resource], see [method`SparqlConnection`.load_statement_from_gresource]. * * To get the best performance, it is recommended that SPARQL updates are clustered * through [class`Batch]`. * * `TrackerSparqlConnection` also offers a number of methods for the simple cases, * [method`SparqlConnection`.query] may be used when there is a SPARQL * query string directly available, and the [method`SparqlConnection`.update] * family of functions may be used for one-off updates. All functions have asynchronous * variants. * * When a SPARQL query is executed, a [class`SparqlCursor]` will be obtained * to iterate over the query results. * * Depending on the ontology definition, `TrackerSparqlConnection` may emit * notifications whenever resources of certain types get insert, modified or * deleted from the triple store (see [nrl:notify](nrl-ontology.html#nrl:notify). * These notifications can be handled via a [class`Notifier]` obtained with * [method`SparqlConnection`.create_notifier]. * * After done with a connection, it is recommended to call [method`SparqlConnection`.close] * or [method`SparqlConnection`.close_async] explicitly to cleanly close the * connection and prevent consistency checks on future runs. The triple store * connection will be implicitly closed when the `TrackerSparqlConnection` object * is disposed. * * A `TrackerSparqlConnection` may be used from multiple threads, asynchronous * updates are executed sequentially on arrival order, asynchronous * queries are dispatched in a thread pool. * * If you ever have the need to procedurally compose SPARQL query strings, consider * the use of [func`sparql_escape_string]` for literal strings and * the [func`sparql_escape_uri]` family of functions for URIs. */ abstract class SparqlConnection extends GObject.Object { static $gtype: GObject.GType; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; static bus_new( service_name: string, object_path?: string | null, dbus_connection?: Gio.DBusConnection | null, ): SparqlConnection; static bus_new_finish(result: Gio.AsyncResult): SparqlConnection; static ['new']( flags: SparqlConnectionFlags, store?: Gio.File | null, ontology?: Gio.File | null, cancellable?: Gio.Cancellable | null, ): SparqlConnection; static new_finish(result: Gio.AsyncResult): SparqlConnection; static remote_new(uri_base: string): SparqlConnection; // Static methods /** * Connects asynchronously to a database owned by another process on the * local machine via DBus. * @param service_name The name of the D-Bus service to connect to. * @param object_path The path to the object, or %NULL to use the default. * @param dbus_connection The [class@Gio.DBusConnection] to use, or %NULL to use the session bus * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ static bus_new_async( service_name: string, object_path?: string | null, dbus_connection?: Gio.DBusConnection | null, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): void; /** * Creates or opens a process-local database asynchronously. * * See [ctor`SparqlConnection`.new] for more information. * @param flags Connection flags to define the SPARQL connection behavior * @param store The directory that contains the database as a [iface@Gio.File], or %NULL * @param ontology The directory that contains the database schemas as a [iface@Gio.File], or %NULL * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ static new_async( flags: SparqlConnectionFlags, store?: Gio.File | null, ontology?: Gio.File | null, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): void; // Methods /** * Closes a SPARQL connection. * * No other API calls than g_object_unref() should happen after this call. * * This call is blocking. All pending updates will be flushed, and the * store databases will be closed orderly. All ongoing SELECT queries * will be cancelled. Notifiers will no longer emit events. */ close(): void; /** * Closes a SPARQL connection asynchronously. * * No other API calls than g_object_unref() should happen after this call. * @param cancellable Optional [type@Gio.Cancellable] */ close_async(cancellable?: Gio.Cancellable | null): Promise; /** * Closes a SPARQL connection asynchronously. * * No other API calls than g_object_unref() should happen after this call. * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ close_async(cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null): void; /** * Closes a SPARQL connection asynchronously. * * No other API calls than g_object_unref() should happen after this call. * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ close_async( cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.close_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns %FALSE if some error occurred, %TRUE otherwise */ close_finish(res: Gio.AsyncResult): boolean; /** * Creates a new [class`Batch]` to store and execute SPARQL updates. * * If the connection is readonly or cannot issue SPARQL updates, %NULL will be returned. * @returns (nullable): A new [class@Batch] */ create_batch(): Batch; /** * Creates a new [class`Notifier]` to receive notifications about changes in `connection`. * * See [class`Notifier]` documentation for information about how to use this * object. * * Connections to HTTP endpoints will return %NULL. * @returns A newly created notifier. */ create_notifier(): Notifier | null; /** * Loads the RDF data contained in `stream` into the given `connection`. * * This is an asynchronous operation, `callback` will be invoked when the * data has been fully inserted to `connection`. * * The RDF data will be inserted in the given `default_graph` if one is provided, * or the anonymous graph if `default_graph` is %NULL. Any RDF data that has a * graph specified (e.g. using the `GRAPH` clause in the Trig format) will * be inserted in the specified graph instead of `default_graph`. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_DESERIALIZE_FLAGS_NONE must be passed. * @param flags Deserialization flags * @param format RDF format of data in stream * @param default_graph Default graph that will receive the RDF data * @param stream Input stream with RDF data * @param cancellable Optional [type@Gio.Cancellable] */ deserialize_async( flags: DeserializeFlags | null, format: RdfFormat | null, default_graph: string, stream: Gio.InputStream, cancellable?: Gio.Cancellable | null, ): Promise; /** * Loads the RDF data contained in `stream` into the given `connection`. * * This is an asynchronous operation, `callback` will be invoked when the * data has been fully inserted to `connection`. * * The RDF data will be inserted in the given `default_graph` if one is provided, * or the anonymous graph if `default_graph` is %NULL. Any RDF data that has a * graph specified (e.g. using the `GRAPH` clause in the Trig format) will * be inserted in the specified graph instead of `default_graph`. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_DESERIALIZE_FLAGS_NONE must be passed. * @param flags Deserialization flags * @param format RDF format of data in stream * @param default_graph Default graph that will receive the RDF data * @param stream Input stream with RDF data * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ deserialize_async( flags: DeserializeFlags | null, format: RdfFormat | null, default_graph: string, stream: Gio.InputStream, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Loads the RDF data contained in `stream` into the given `connection`. * * This is an asynchronous operation, `callback` will be invoked when the * data has been fully inserted to `connection`. * * The RDF data will be inserted in the given `default_graph` if one is provided, * or the anonymous graph if `default_graph` is %NULL. Any RDF data that has a * graph specified (e.g. using the `GRAPH` clause in the Trig format) will * be inserted in the specified graph instead of `default_graph`. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_DESERIALIZE_FLAGS_NONE must be passed. * @param flags Deserialization flags * @param format RDF format of data in stream * @param default_graph Default graph that will receive the RDF data * @param stream Input stream with RDF data * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ deserialize_async( flags: DeserializeFlags | null, format: RdfFormat | null, default_graph: string, stream: Gio.InputStream, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.deserialize_async]. * @param result A [type@Gio.AsyncResult] with the result of the operation * @returns %TRUE if all data was inserted successfully. */ deserialize_finish(result: Gio.AsyncResult): boolean; /** * Returns a [class`NamespaceManager]` that contains all * prefixes in the ontology of `connection`. * @returns a [class@NamespaceManager] with the prefixes of @connection. */ get_namespace_manager(): NamespaceManager; /** * Prepares a [class`SparqlStatement]` for the SPARQL contained as a [struct`Gio`.Resource] * file at `resource_path`. * * SPARQL Query files typically have the .rq extension. This will use * [method`SparqlConnection`.query_statement] or [method`SparqlConnection`.update_statement] * underneath to indistinctly return SPARQL query or update statements. * @param resource_path The resource path of the file to parse. * @param cancellable Optional [type@Gio.Cancellable] * @returns A prepared statement */ load_statement_from_gresource( resource_path: string, cancellable?: Gio.Cancellable | null, ): SparqlStatement | null; /** * Maps a `TrackerSparqlConnection` onto another through a `private:`handle_name`` URI. * * This can be accessed via the SERVICE SPARQL syntax in * queries from `connection`. E.g.: * * ```c * tracker_sparql_connection_map_connection (connection, * "other-connection", * other_connection); * ``` * * ```sparql * SELECT ?u { * SERVICE { * ?u a rdfs:Resource * } * } * ``` * * This is useful to interrelate data from multiple * `TrackerSparqlConnection` instances maintained by the same process, * without creating a public endpoint for `service_connection`. * * `connection` may only be a `TrackerSparqlConnection` created via * [ctor`SparqlConnection`.new] and [func`SparqlConnection`.new_async]. * @param handle_name Handle name for @service_connection * @param service_connection a `TrackerSparqlConnection` to use from @connection */ map_connection(handle_name: string, service_connection: SparqlConnection): void; /** * Executes a SPARQL query on `connection`. * * This method is synchronous and will block until the query * is executed. See [method`SparqlConnection`.query_async] * for an asynchronous variant. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @returns a [class@SparqlCursor] with the results. */ query(sparql: string, cancellable?: Gio.Cancellable | null): SparqlCursor; /** * Executes asynchronously a SPARQL query on `connection` * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL query * @param cancellable Optional [type@Gio.Cancellable] */ query_async(sparql: string, cancellable?: Gio.Cancellable | null): Promise; /** * Executes asynchronously a SPARQL query on `connection` * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ query_async( sparql: string, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Executes asynchronously a SPARQL query on `connection` * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ query_async( sparql: string, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.query_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns a [class@SparqlCursor] with the results. */ query_finish(res: Gio.AsyncResult): SparqlCursor; /** * Prepares the given `SELECT`/`ASK`/`DESCRIBE`/`CONSTRUCT` SPARQL query as a * [class`SparqlStatement]`. * * This prepared statement can be executed through [method`SparqlStatement`.execute] * or [method`SparqlStatement`.serialize_async] families of functions. * @param sparql The SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @returns A prepared statement */ query_statement(sparql: string, cancellable?: Gio.Cancellable | null): SparqlStatement | null; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the specified RDF format. * * This is an asynchronous operation, `callback` will be invoked when * the data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags Serialization flags * @param format Output RDF format * @param query SPARQL query * @param cancellable Optional [type@Gio.Cancellable] */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, query: string, cancellable?: Gio.Cancellable | null, ): Promise; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the specified RDF format. * * This is an asynchronous operation, `callback` will be invoked when * the data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags Serialization flags * @param format Output RDF format * @param query SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, query: string, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the specified RDF format. * * This is an asynchronous operation, `callback` will be invoked when * the data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * %TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags Serialization flags * @param format Output RDF format * @param query SPARQL query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, query: string, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.serialize_async]. * @param result A [type@Gio.AsyncResult] with the result of the operation * @returns A [class@Gio.InputStream] to read RDF content. */ serialize_finish(result: Gio.AsyncResult): Gio.InputStream; /** * Executes a SPARQL update on `connection`. * * This method is synchronous and will block until the update * is finished. See [method`SparqlConnection`.update_async] * for an asynchronous variant. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] */ update(sparql: string, cancellable?: Gio.Cancellable | null): void; /** * Executes asynchronously an array of SPARQL updates. All updates in the * array are handled within a single transaction. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql An array of strings containing the SPARQL update queries * @param sparql_length The amount of strings you pass as @sparql * @param cancellable Optional [type@Gio.Cancellable] */ update_array_async( sparql: string, sparql_length: number, cancellable?: Gio.Cancellable | null, ): Promise; /** * Executes asynchronously an array of SPARQL updates. All updates in the * array are handled within a single transaction. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql An array of strings containing the SPARQL update queries * @param sparql_length The amount of strings you pass as @sparql * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_array_async( sparql: string, sparql_length: number, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Executes asynchronously an array of SPARQL updates. All updates in the * array are handled within a single transaction. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql An array of strings containing the SPARQL update queries * @param sparql_length The amount of strings you pass as @sparql * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_array_async( sparql: string, sparql_length: number, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.update_array_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns #TRUE if there were no errors. */ update_array_finish(res: Gio.AsyncResult): boolean; /** * Executes asynchronously a SPARQL update. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] */ update_async(sparql: string, cancellable?: Gio.Cancellable | null): Promise; /** * Executes asynchronously a SPARQL update. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_async( sparql: string, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Executes asynchronously a SPARQL update. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * * If the query is partially built from user input or other * untrusted sources, special care is required about possible * SPARQL injection. In order to avoid it entirely, it is recommended * to use [class`SparqlStatement]`, or to build the SPARQL * input through [class`Resource]`. The function * [func`sparql_escape_string]` exists as a last resort, * but its use is not recommended. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_async( sparql: string, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Executes a SPARQL update and returns the names of the generated blank nodes. * * This method is synchronous and will block until the update * is finished. See [method`SparqlConnection`.update_blank_async] * for an asynchronous variant. * * The `sparql` query should be built with [class`Resource]`, or * its parts correctly escaped using [func`sparql_escape_string]`, * otherwise SPARQL injection is possible. * * The format string of the `GVariant` is `aaa{ss}` (an array of an array * of dictionaries). The first array represents each INSERT that may exist in * the SPARQL string. The second array represents each new node for a given * WHERE clause. The last array holds a string pair with the blank node name * (e.g. `foo` for the blank node `_:foo`) and the URN that was generated for * it. For most updates the first two outer arrays will only contain one item. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] * @returns a [type@GLib.Variant] with the generated URNs. */ update_blank(sparql: string, cancellable?: Gio.Cancellable | null): GLib.Variant; /** * Executes asynchronously a SPARQL update and returns the names of the generated blank nodes. * * See the [method`SparqlConnection`.update_blank] documentation to * learn the differences with [method`SparqlConnection`.update]. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] */ update_blank_async(sparql: string, cancellable?: Gio.Cancellable | null): Promise; /** * Executes asynchronously a SPARQL update and returns the names of the generated blank nodes. * * See the [method`SparqlConnection`.update_blank] documentation to * learn the differences with [method`SparqlConnection`.update]. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_blank_async( sparql: string, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Executes asynchronously a SPARQL update and returns the names of the generated blank nodes. * * See the [method`SparqlConnection`.update_blank] documentation to * learn the differences with [method`SparqlConnection`.update]. * @param sparql String containing the SPARQL update query * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_blank_async( sparql: string, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.update_blank_async]. * * This method returns the URNs of the generated nodes, if any. See the * [method`SparqlConnection`.update_blank] documentation for the interpretation * of the returned [type`GLib`.Variant]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns a [type@GLib.Variant] with the generated URNs. */ update_blank_finish(res: Gio.AsyncResult): GLib.Variant; /** * Finishes the operation started with [method`SparqlConnection`.update_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation */ update_finish(res: Gio.AsyncResult): void; /** * Inserts a resource as described by `resource` on the given `graph`. * * This method is synchronous and will block until the update * is finished. See [method`SparqlConnection`.update_resource_async] * for an asynchronous variant. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * @param graph RDF graph where the resource should be inserted/updated, or %NULL for the default graph * @param resource A [class@Resource] * @param cancellable Optional [type@Gio.Cancellable] * @returns #TRUE if there were no errors. */ update_resource(graph: string | null, resource: Resource, cancellable?: Gio.Cancellable | null): boolean; /** * Inserts asynchronously a resource as described by `resource` on the given `graph`. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * @param graph RDF graph where the resource should be inserted/updated, or %NULL for the default graph * @param resource A [class@Resource] * @param cancellable Optional [type@Gio.Cancellable] */ update_resource_async( graph: string | null, resource: Resource, cancellable?: Gio.Cancellable | null, ): Promise; /** * Inserts asynchronously a resource as described by `resource` on the given `graph`. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * @param graph RDF graph where the resource should be inserted/updated, or %NULL for the default graph * @param resource A [class@Resource] * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_resource_async( graph: string | null, resource: Resource, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Inserts asynchronously a resource as described by `resource` on the given `graph`. * * It is recommented to consider the usage of [class`Batch]` * to cluster database updates. Frequent isolated SPARQL updates * through this method will have a degraded performance in comparison. * @param graph RDF graph where the resource should be inserted/updated, or %NULL for the default graph * @param resource A [class@Resource] * @param cancellable Optional [type@Gio.Cancellable] * @param callback User-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_resource_async( graph: string | null, resource: Resource, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the operation started with [method`SparqlConnection`.update_resource_async]. * @param res A [type@Gio.AsyncResult] with the result of the operation * @returns #TRUE if there were no errors. */ update_resource_finish(res: Gio.AsyncResult): boolean; /** * Prepares the given `INSERT`/`DELETE` SPARQL as a [class`SparqlStatement]`. * * This prepared statement can be executed through * the [method`SparqlStatement`.update] family of functions. * @param sparql The SPARQL update * @param cancellable Optional [type@Gio.Cancellable] * @returns A prepared statement */ update_statement(sparql: string, cancellable?: Gio.Cancellable | null): SparqlStatement | null; } namespace SparqlCursor { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { connection: SparqlConnection; n_columns: number; nColumns: number; } } /** * `TrackerSparqlCursor` provides the methods to iterate the results of a SPARQL query. * * Cursors are obtained through e.g. [method`SparqlStatement`.execute] * or [method`SparqlConnection`.query] after the SPARQL query has been * executed. * * When created, a cursor does not point to any element, [method`SparqlCursor`.next] * is necessary to iterate one by one to the first (and following) results. * When the cursor iterated across all rows in the result set, [method`SparqlCursor`.next] * will return %FALSE with no error set. * * On each row, it is possible to extract the result values through the * [method`SparqlCursor`.get_integer], [method`SparqlCursor`.get_string], etc... family * of methods. The column index of those functions starts at 0. The number of columns is * dependent on the SPARQL query issued, but may be checked at runtime through the * [method`SparqlCursor`.get_n_columns] method. * * After a cursor is iterated, it is recommended to call [method`SparqlCursor`.close] * explicitly to free up resources for other users of the same [class`SparqlConnection]`, * this is especially important in garbage collected languages. These resources * will be also implicitly freed on cursor object finalization. * * It is possible to use a given `TrackerSparqlCursor` in other threads than * the one it was created from. It must be however used from just one thread * at any given time. */ abstract class SparqlCursor extends GObject.Object { static $gtype: GObject.GType; // Properties /** * The [class`SparqlConnection]` used to retrieve the results. */ get connection(): SparqlConnection; /** * Number of columns available in the result set. */ get n_columns(): number; /** * Number of columns available in the result set. */ get nColumns(): number; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; // Methods /** * Closes the cursor. The object can only be freed after this call. */ close(): void; /** * Retrieve a boolean for the current row in `column`. * * If the row/column do not have a boolean value, the result is * undefined, see [method`SparqlCursor`.get_value_type]. * @param column column number to retrieve (first one is 0) * @returns a boolean value. */ get_boolean(column: number): boolean; /** * Returns the [class`SparqlConnection]` associated with this * `TrackerSparqlCursor`. * @returns the cursor [class@SparqlConnection]. The returned object must not be unreferenced by the caller. */ get_connection(): SparqlConnection; /** * Retrieves a [type`GLib`.DateTime] pointer for the current row in `column`. * @param column Column number to retrieve (first one is 0) * @returns [type@GLib.DateTime] object, or %NULL if the given column does not contain a [xsd:date](xsd-ontology.html#xsd:date) or [xsd:dateTime](xsd-ontology.html#xsd:dateTime). */ get_datetime(column: number): GLib.DateTime | null; /** * Retrieve a double for the current row in `column`. * * If the row/column do not have a integer or double value, the result is * undefined, see [method`SparqlCursor`.get_value_type]. * @param column column number to retrieve (first one is 0) * @returns a double value. */ get_double(column: number): number; /** * Retrieve an integer for the current row in `column`. * * If the row/column do not have an integer value, the result is * undefined, see [method`SparqlCursor`.get_value_type]. * @param column column number to retrieve (first one is 0) * @returns a 64-bit integer value. */ get_integer(column: number): number; /** * Retrieves a string representation of the data in the current * row in `column`. If the string has language information (i.e. it is * a `rdf:langString`](rdf-ontology.html#rdf:langString)), the language * tag will be returned in the location provided through `langtag`. This * language tag will typically be in a format conforming * [RFC 5646](https://www.rfc-editor.org/rfc/rfc5646.html). * @param column column number to retrieve * @returns a string which must not be freed. %NULL is returned if the column is not in the `[0, n_columns]` range, or if the row/column refer to a nullable optional value in the result set. */ get_langstring(column: number): [string | null, string, number]; /** * Retrieves the number of columns available in the result set. * * This method should only be called after a successful * [method`SparqlCursor`.next], otherwise its return value * will be undefined. * @returns The number of columns returned in the result set. */ get_n_columns(): number; /** * Retrieves a string representation of the data in the current * row in `column`. * * Any type may be converted to a string. If the value is not bound * (See [method`SparqlCursor`.is_bound]) this method will return %NULL. * @param column column number to retrieve (first one is 0) * @returns a string which must not be freed. %NULL is returned if the column is not in the `[0, n_columns]` range, or if the row/column refer to a nullable optional value in the result set. */ get_string(column: number): [string | null, number]; /** * Returns the data type bound to the current row and the given `column`. * * If the column is unbound, the value will be %TRACKER_SPARQL_VALUE_TYPE_UNBOUND. * See also [method`SparqlCursor`.is_bound]. * * Values of type #TRACKER_SPARQL_VALUE_TYPE_RESOURCE and * #TRACKER_SPARQL_VALUE_TYPE_BLANK_NODE can be considered equivalent, the * difference is the resource being referenced as a named IRI or a blank * node. * * All other [enum`SparqlValueType]` value types refer to literal values. * @param column column number to retrieve (first one is 0) * @returns a [enum@SparqlValueType] expressing the content type of the given column for the current row. */ get_value_type(column: number): SparqlValueType; /** * Retrieves the name of the given `column`. * * This name will be defined at the SPARQL query, either * implicitly from the names of the variables returned in * the resultset, or explicitly through the `AS ?var` SPARQL * syntax. * @param column column number to retrieve (first one is 0) * @returns The name of the given column. */ get_variable_name(column: number): string | null; /** * Returns whether the given `column` has a bound value in the current row. * * This may not be the case through e.g. the `OPTIONAL { }` SPARQL syntax. * @param column column number to retrieve (first one is 0) * @returns a %TRUE or %FALSE. */ is_bound(column: number): boolean; /** * Iterates the cursor to the next result. * * If the cursor was not started, it will point to the first result after * this call. This operation is completely synchronous and it may block, * see [method`SparqlCursor`.next_async] for an asynchronous variant. * @param cancellable Optional [type@Gio.Cancellable] * @returns %FALSE if there are no more results or if an error is found, otherwise %TRUE. */ next(cancellable?: Gio.Cancellable | null): boolean; /** * Iterates the cursor asyncronously to the next result. * * If the cursor was not started, it will point to the first result after * this operation completes. * * In the period between this call and the corresponding * [method`SparqlCursor`.next_finish] call, the other cursor methods * should not be used, nor their results trusted. The cursor should only * be iterated once at a time. * @param cancellable Optional [type@Gio.Cancellable] */ next_async(cancellable?: Gio.Cancellable | null): Promise; /** * Iterates the cursor asyncronously to the next result. * * If the cursor was not started, it will point to the first result after * this operation completes. * * In the period between this call and the corresponding * [method`SparqlCursor`.next_finish] call, the other cursor methods * should not be used, nor their results trusted. The cursor should only * be iterated once at a time. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when asynchronous operation is finished. */ next_async(cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null): void; /** * Iterates the cursor asyncronously to the next result. * * If the cursor was not started, it will point to the first result after * this operation completes. * * In the period between this call and the corresponding * [method`SparqlCursor`.next_finish] call, the other cursor methods * should not be used, nor their results trusted. The cursor should only * be iterated once at a time. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when asynchronous operation is finished. */ next_async( cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the asynchronous iteration to the next result started with * [method`SparqlCursor`.next_async]. * @param res a [type@Gio.AsyncResult] with the result of the operation * @returns %FALSE if there are no more results or if an error is found, otherwise %TRUE. */ next_finish(res: Gio.AsyncResult): boolean; /** * Resets the iterator to point back to the first result. */ rewind(): void; } namespace SparqlStatement { // Constructor properties interface interface ConstructorProps extends GObject.Object.ConstructorProps { connection: SparqlConnection; sparql: string; } } /** * `TrackerSparqlStatement` represents a prepared statement for a SPARQL query. * * The SPARQL query will be internally compiled into the format that is most * optimal to execute the query many times. For connections created * through [ctor`SparqlConnection`.new] that will be a * SQLite compiled statement. * * The SPARQL query may contain parameterized variables expressed via the * `~` prefix in the SPARQL syntax (e.g. `~var`), these may happen anywhere * in the SPARQL where a literal or variable would typically happen. These * parameterized variables may be mapped to arbitrary values prior to * execution. The `TrackerSparqlStatement` may be reused for future * queries with different values. * * The argument bindings may be changed through the [method`SparqlStatement`.bind_int], * [method`SparqlStatement`.bind_int], etc... family of functions. Those functions * receive a `name` argument corresponding for the variable name in the SPARQL query * (eg. `"var"` for `~var`) and a value to map the variable to. * * Once all arguments have a value, the query may be executed through * [method`SparqlStatement`.execute_async] or [method`SparqlStatement`.execute]. * * It is possible to use any `TrackerSparqlStatement` from other threads than * the one it was created from. However, binding values and executing the * statement must only happen from one thread at a time. It is possible to reuse * the `TrackerSparqlStatement` right after [method`SparqlStatement`.execute_async] * was called, there is no need to wait for [method`SparqlStatement`.execute_finish]. * * In some circumstances, it is possible that the query needs to be recompiled * from the SPARQL source. This will happen transparently. */ abstract class SparqlStatement extends GObject.Object { static $gtype: GObject.GType; // Properties /** * The [class`SparqlConnection]` the statement was created for. */ get connection(): SparqlConnection; /** * SPARQL query stored in this statement. */ get sparql(): string; // Constructors constructor(properties?: Partial, ...args: any[]); _init(...args: any[]): void; // Methods /** * Binds the boolean `value` to the parameterized variable given by `name`. * @param name variable name * @param value value */ bind_boolean(name: string, value: boolean): void; /** * Binds the [type`GLib`.DateTime] `value` to the parameterized variable given by `name`. * @param name variable name * @param value value */ bind_datetime(name: string, value: GLib.DateTime): void; /** * Binds the double `value` to the parameterized variable given by `name`. * @param name variable name * @param value value */ bind_double(name: string, value: number): void; /** * Binds the integer `value` to the parameterized variable given by `name`. * @param name variable name * @param value value */ bind_int(name: string, value: number): void; /** * Binds the `value` to the parameterized variable given by `name,` tagged * with the language defined by `langtag`. The language tag should follow * [RFC 5646](https://www.rfc-editor.org/rfc/rfc5646.html). The parameter * will be represented as a [`rdf:langString`](rdf-ontology.html#rdf:langString). * @param name variable name * @param value value * @param langtag language tag */ bind_langstring(name: string, value: string, langtag: string): void; /** * Binds the string `value` to the parameterized variable given by `name`. * @param name variable name * @param value value */ bind_string(name: string, value: string): void; /** * Clears all bindings. */ clear_bindings(): void; /** * Executes the `SELECT` or `ASK` SPARQL query with the currently bound values. * * This function also works for `DESCRIBE` and `CONSTRUCT` queries that * retrieve data from the triple store. These query forms that return * RDF data are however more useful together with [method`SparqlStatement`.serialize_async]. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.query_statement] or * SELECT/CONSTRUCT/DESCRIBE statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on a `INSERT` or `DELETE` * SPARQL query. * @param cancellable Optional [type@Gio.Cancellable] * @returns A `TrackerSparqlCursor` with the query results. */ execute(cancellable?: Gio.Cancellable | null): SparqlCursor; /** * Executes asynchronously the `SELECT` or `ASK` SPARQL query with the currently bound values. * * This function also works for `DESCRIBE` and `CONSTRUCT` queries that * retrieve data from the triple store. These query forms that return * RDF data are however more useful together with [method`SparqlStatement`.serialize_async]. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.query_statement] or * SELECT/CONSTRUCT/DESCRIBE statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on a `INSERT` or `DELETE` * SPARQL query. * @param cancellable Optional [type@Gio.Cancellable] */ execute_async(cancellable?: Gio.Cancellable | null): Promise; /** * Executes asynchronously the `SELECT` or `ASK` SPARQL query with the currently bound values. * * This function also works for `DESCRIBE` and `CONSTRUCT` queries that * retrieve data from the triple store. These query forms that return * RDF data are however more useful together with [method`SparqlStatement`.serialize_async]. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.query_statement] or * SELECT/CONSTRUCT/DESCRIBE statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on a `INSERT` or `DELETE` * SPARQL query. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ execute_async(cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null): void; /** * Executes asynchronously the `SELECT` or `ASK` SPARQL query with the currently bound values. * * This function also works for `DESCRIBE` and `CONSTRUCT` queries that * retrieve data from the triple store. These query forms that return * RDF data are however more useful together with [method`SparqlStatement`.serialize_async]. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.query_statement] or * SELECT/CONSTRUCT/DESCRIBE statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on a `INSERT` or `DELETE` * SPARQL query. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ execute_async( cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the asynchronous operation started through * [method`SparqlStatement`.execute_async]. * @param res a [type@Gio.AsyncResult] with the result of the operation * @returns A `TrackerSparqlCursor` with the query results. */ execute_finish(res: Gio.AsyncResult): SparqlCursor; /** * Returns the [class`SparqlConnection]` that this statement was created for. * @returns The SPARQL connection of this statement. */ get_connection(): SparqlConnection; /** * Returns the SPARQL string that this prepared statement holds. * @returns The contained SPARQL query */ get_sparql(): string; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the given RDF `format`. * * The query `stmt` was created from must be either a `DESCRIBE` or `CONSTRUCT` * query, an error will be raised otherwise. * * This is an asynchronous operation, `callback` will be invoked when the * data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * #TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags serialization flags * @param format RDF format of the serialized data * @param cancellable Optional [type@Gio.Cancellable] */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, cancellable?: Gio.Cancellable | null, ): Promise; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the given RDF `format`. * * The query `stmt` was created from must be either a `DESCRIBE` or `CONSTRUCT` * query, an error will be raised otherwise. * * This is an asynchronous operation, `callback` will be invoked when the * data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * #TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags serialization flags * @param format RDF format of the serialized data * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null, ): void; /** * Serializes a `DESCRIBE` or `CONSTRUCT` query into the given RDF `format`. * * The query `stmt` was created from must be either a `DESCRIBE` or `CONSTRUCT` * query, an error will be raised otherwise. * * This is an asynchronous operation, `callback` will be invoked when the * data is available for reading. * * The SPARQL endpoint may not support the specified format, in that case * an error will be raised. * * The `flags` argument is reserved for future expansions, currently * #TRACKER_SERIALIZE_FLAGS_NONE must be passed. * @param flags serialization flags * @param format RDF format of the serialized data * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ serialize_async( flags: SerializeFlags | null, format: RdfFormat | null, cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the asynchronous operation started through * [method`SparqlStatement`.serialize_async]. * @param result a [type@Gio.AsyncResult] with the result of the operation * @returns a [class@Gio.InputStream] to read RDF content. */ serialize_finish(result: Gio.AsyncResult): Gio.InputStream; /** * Executes the `INSERT`/`DELETE` SPARQL query series with the currently bound values. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.update_statement] or * `INSERT`/`DELETE` statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on * `SELECT`/`ASK`/`DESCRIBE`/`CONSTRUCT` SPARQL queries. * @param cancellable Optional [type@Gio.Cancellable] * @returns %TRUE if the update finished with no errors, %FALSE otherwise */ update(cancellable?: Gio.Cancellable | null): boolean; /** * Executes asynchronously the `INSERT`/`DELETE` SPARQL query series with the currently bound values. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.update_statement] or * `INSERT`/`DELETE` statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on * `SELECT`/`ASK`/`DESCRIBE`/`CONSTRUCT` SPARQL queries. * @param cancellable Optional [type@Gio.Cancellable] */ update_async(cancellable?: Gio.Cancellable | null): Promise; /** * Executes asynchronously the `INSERT`/`DELETE` SPARQL query series with the currently bound values. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.update_statement] or * `INSERT`/`DELETE` statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on * `SELECT`/`ASK`/`DESCRIBE`/`CONSTRUCT` SPARQL queries. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_async(cancellable: Gio.Cancellable | null, callback: Gio.AsyncReadyCallback | null): void; /** * Executes asynchronously the `INSERT`/`DELETE` SPARQL query series with the currently bound values. * * This function should only be called on `TrackerSparqlStatement` objects * obtained through [method`SparqlConnection`.update_statement] or * `INSERT`/`DELETE` statements loaded through * [method`SparqlConnection`.load_statement_from_gresource]. * An error will be raised if this method is called on * `SELECT`/`ASK`/`DESCRIBE`/`CONSTRUCT` SPARQL queries. * @param cancellable Optional [type@Gio.Cancellable] * @param callback user-defined [type@Gio.AsyncReadyCallback] to be called when the asynchronous operation is finished. */ update_async( cancellable?: Gio.Cancellable | null, callback?: Gio.AsyncReadyCallback | null, ): Promise | void; /** * Finishes the asynchronous update started through * [method`SparqlStatement`.update_async]. * @param result a [type@Gio.AsyncResult] with the result of the operation * @returns %TRUE if the update finished with no errors, %FALSE otherwise */ update_finish(result: Gio.AsyncResult): boolean; } type BatchClass = typeof Batch; type EndpointClass = typeof Endpoint; type NamespaceManagerClass = typeof NamespaceManager; type NotifierClass = typeof Notifier; /** * The TrackerNotifierEvent struct represents a * change event in the stored data. */ abstract class NotifierEvent { static $gtype: GObject.GType; // Constructors _init(...args: any[]): void; // Methods /** * Returns the event type. * @returns The event type */ get_event_type(): NotifierEventType; /** * Returns the tracker:id of the element being notified upon. This is a #gint64 * which is used as efficient internal identifier for the resource. * @returns the resource ID */ get_id(): number; /** * Returns the Uniform Resource Name of the element. This is Tracker's * public identifier for the resource. * * This URN is an unique string identifier for the resource being * notified upon, typically of the form `urn:uuid:...`. * @returns The element URN */ get_urn(): string; } type ResourceClass = typeof Resource; type SparqlConnectionClass = typeof SparqlConnection; type SparqlCursorClass = typeof SparqlCursor; type SparqlStatementClass = typeof SparqlStatement; /** * Name of the imported GIR library * `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L188 */ const __name__: string; /** * Version of the imported GIR library * `see` https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L189 */ const __version__: string; } export default Tsparql; } declare module 'gi://Tsparql' { import Tsparql30 from 'gi://Tsparql?version=3.0'; export default Tsparql30; } // END