Administration¶
What’s in this document?
Schema Management API¶
Binding a schema
The PUT /soml/{schema-id}/search endpoint is used to bind a SOML schema.
Example binding for swapi SOML schema using a cURL request:
curl --location -X PUT 'http://localhost:9980/soml/swapi/search'
Unbinding a schema
The DELETE /soml/{schema-id}/search endpoint is used to unbind a SOML schema.
Example unbinding for swapi SOML schema using a cURL request:
curl --location -X DELETE 'http://localhost:9980/soml/swapi/search'
Validating a schema
The POST /soml/validate endpoint is used to validate a SOML schema provided with the request body.
The response is returned in JSON-LD format. If there were errors during validation, they will be returned
with the response along with the original schema.
Example validation for SOML schema using a cURL request:
curl "http://localhost:9980/soml/validate" -X POST -H "Content-Type: text/yaml" -T "/path/to/schema.yaml"
Index information
The GET /soml/info endpoint is used to return information about existing indexes in Elasticsearch.
This endpoint works only if there is a bound schema.
Example cURL request:
curl --location -X GET 'http://localhost:9980/soml/info'
Service Configurations¶
search.storage.location- Description: Specifies the location where the service will store data related to the active schema. Usually, this is a configuration properties file.Default value:
data application.name- Description: Specifies the service name. It must be unique among the deployed Semantic Services. If two or more service instances have the same name (horizontal scaling), they will use the same bound schema. If not defined, the value of
spring.application.namewill be used if defined.Default value: noneNote: The configuration is required whensoml.storage.provideris set tordf4j(default). The provided Docker Compose files and Helm charts have example names. application.scheme- Description: Defines the access HTTP schema to the service. Used to build an access URL using the
application.addressor the default network address.Default value:httpPossible values:httporhttps application.address- Description: Specifies the service network address. Can be an IP address or a domain name. If the address does not include a port, the one configured in
application.portwill be added. If the address does not include an HTTP schema, the one defined inapplication.schemewill be used.Default value: none application.port- Description: Specifies the bind port of the application. If not defined, the
server.portwill be used. If it is not defined either, the Spring default8080will be used.Default value:8080 application.useNetworkAddressAsName- Description: Specifies if the network address should be used as
application.name.Default value:falsePossible values:trueorfalseNote: If enabled on an environment without stable network identifiers, some functionalities may not work properly, e.g., the service may lose its bound schema. task.default.retry.maxRetries- Description: Specifies the number of attempts the service should make to complete the startup procedures.This is valid only in case of network or dependency problems.Default value:
60 task.default.retry.initialDelay- Description: Specifies the initial delay (in milliseconds) that the service should make before retrying to execute the startup procedures.This is valid only in case of network or dependency problems. If the value is less than or equal to
0, the component will not wait.Default value:0 task.default.retry.delay- Description: Specifies the delay (in milliseconds) that the service should make before retrying to execute the startup procedures.This is valid only in case of network or dependency problems. If the value is less than or equal to
0, the component will not wait between retries.Default value:10000 sparql.endpoint.address- Description: Specifies the address of the GraphDB instance to be used by the Semantic Objects. If a cluster topology is used, multiple addresses can be configured to the corresponding nodes in the cluster deployment, comma- or semicolon-separated. See more about GraphDB Cluster Mode.See more information about the Semantic Objects configurations when deployed with GraphDB cluster installation here.Default value:
http://graphdb:7200Note
The official Semantic Services Helm Charts are properly configured, so you do not need to change anything.
sparql.endpoint.repository- Description: Specifies the name of the GraphDB repository to be used by the Semantic Objects.Default value:
soaas sparql.endpoint.repositoryWhitelist- Description: Specifies comma separated names of the allowed GraphDB repository to be used by the Semantic Objects. If empty then everything is allowed.
sparql.endpoint.username- Description: Specifies the username to be used for authentication in GraphDB.
sparql.endpoint.credentials- Description: Specifies the credentials to be used for authentication in GraphDB.
sparql.endpoint.httpHeadersPassthrough- Description: Specifies comma separated HTTP header names that should be copied from incoming request to the underlying GraphDB server.This could be used to pass the authentication and authorization information to the remove service ignoring the SO securityPossible values:: Authorization, WWW-Authenticate or GDB specific headers
sparql.endpoint.publicAddress- Description: Specifies the address of the GraphDB instance accessible by clients.Used to allow some functionality to return links to the GraphDB server with predefined queries.To disable the functionality leave the configuration without value.Default value: first value of
${sparql.endpoint.address} sparql.endpoint.executionMode- Description: Defines how SPARQL queries are generated.Default value:
subqueryPossible values:subquery: Generates a single SPARQL query with embedded sub-queries. GraphDB 9.1.x version is required to run this mode.split: Generates a separate query run against the SPARQL endpoint for each node that has any of the following arguments:LIMIT,OFFSET,ORDER BY. The generated queries are executed in parallel against the SPARQL endpoint and the results are combined before retrieval. sparql.endpoint.maxConcurrentRequests- Description: Specifies the maximum concurrent query requests to a single GraphDB instance. This defines the maximum size of the thread pool for concurrent connections.Default value:
0(no limit). sparql.endpoint.maxConcurrentConnections- Description: Specifies the maximum HTTP connections per route to a single GraphDB instance.Default value:
500 sparql.endpoint.connectionRequestTimeout- Description: Specifies the timeout (in milliseconds) used when requesting a connection from the connection manager. A timeout value of
0is interpreted as an infinite timeout.Default value:10000 sparql.endpoint.connectTimeout- Description: Specifies the timeout (in milliseconds) until a connection is established. A timeout value of
0is interpreted as an infinite timeout.Default value:10000 sparql.endpoint.socketTimeout- Description: Specifies the socket timeout (in milliseconds), which is the timeout for waiting for data.This also controls how long to wait for a query to retrieve results from the database.A timeout value of
0is interpreted as an infinite timeout.Default value:0 sparql.endpoint.retryHttpCodes- Description: Specifies on which HTTP codes to retry the request. Supports a list of HTTP codes or ranges separated by (,) or (;).The code range can be defined in the form of
5xx(500-599) or50x(500-509). Example:404, 5xxDefault value:503 sparql.endpoint.maxRetries- Description: Specifies the number of request retries in case of service unavailability. Setting this to
0will disable retries entirely.Retrying will occur only if the HTTP response code matches the one defined inretryHttpCodes.Default value:1 sparql.endpoint.retryInterval- Description: Specifies how long (in milliseconds) to wait before attempting another request in case of service unavailability.Default value:
2000 sparql.endpoint.maxTupleResults- Description: Specifies the maximum number of tuples that can be returned from GraphDB for one request. If the limit is exceeded, an error will be thrown and the request terminated.Default value:
5000000Possible values: from1000to50000000 sparql.endpoint.cartesianProductCheck- Description: Specifies whether the application should check if the model and the data received during query processing are compatible. The query will fail if a single-valued property in the model has multiple values.Default value:
falsePossible values:true,false sparql.endpoint.healthcheckSeverity- Description: Allows overriding of the failure severity for the SPARQL endpoint health check. This severity is returned if the endpoint is not configured or the Semantic Objects could not establish a connection to the repository.Default value:
HIGHPossible values:LOW,MEDIUM, orHIGH sparql.endpoint.healthCheckTimeout- Description: Allows overriding the
connectionRequestTimeout,connectTimeout, andsocketTimeoutconfigurations during the health check requests.Default value:5000 sparql.endpoint.enableStatistics- Description: Specifies whether Repository Statistics should be collected for the given endpoint. These statistics are used for SPARQL optimizations. Can be disabled if for some reason the statistics collection fails.Default value:
truePossible values:true,false sparql.endpoint.statisticsRefreshIntervalInHours- Description: Specifies how often (in hours) the Repository Statistics should be collected for the given endpoint.Default value:
1
sparql.endpoint.cluster.clusterStatusTimeout- Description: Specifies how long (in milliseconds) to wait for response from a cluster node when checking its cluster status.More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
15000Since: Semantic Objects 4.0 sparql.endpoint.cluster.clusterStatusConnectTimeout- Description: Specifies how long (in milliseconds) to wait to connect to a cluster node when checking its cluster status.More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
5000Since: Semantic Objects 4.0 sparql.endpoint.cluster.concurrentStatusCheck- Description: Specifies if the cluster’s nodes should be contacted for their status concurrently (all nodes at once) or sequentially (one by one).More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
trueSince: Semantic Objects 4.0 sparql.endpoint.cluster.leaderDiscoveryRetries- Description: Specifies how many times to try to resole the cluster leader before failing the operation.Default value:
2Since: Semantic Objects 4.0 sparql.endpoint.cluster.leaderDiscoveryRetryDelay- Description: Specifies how long (in milliseconds) to wait between unsuccessful leader discovery operation. Setting this configuration to zero will disable the retry.Default value:
5000Since: Semantic Objects 4.0 sparql.endpoint.cluster.leaderOperationRetries- Description: Specifies many times to retry a non transactional operation on failure. Cannot be less than 1.Default value:
1Since: Semantic Objects 4.0 sparql.endpoint.cluster.forceClusterClient- Description: Enables the use of the GraphDB Client API even with a single configured address.Default value:
false sparql.endpoint.cluster.forceConnection- Description: Specifies if a remote connection should be established even if the remote repository does not exist. Consequent requests will be retried until a repository is present or within the configured timeouts.If disabled, the requests will fail immediately until the configured repository is created.Default value:
false soml.storage.provider- Description: Specifies the storage provider to be used for SOML schema management.Default value:
rdf4jPossible values:rdf4j: RDF4J-compatible repository. Configurations applicable for this mode are prefixed withsoml.storage.rdf4j.mongodb: MongoDB-based repository. Configurations applicable for this mode are prefixed withsoml.storage.mongodb.in-memory: Transient, in-memory based repository. After service restart, the internal state is lost and needs to be reinitialized.
soml.storage.rdf4j.address- Description: Specifies the address of the RDF4J-compatible server to be used by Semantic Search to access the stored SOML schemas. If cluster topology is used, multiple addresses can be configured for the corresponding nodes in the cluster deployment, comma- or semicolon-separated. See more about GraphDB Cluster Mode.
soml.storage.rdf4j.repository- Description: The name of the repository to be used for schema management.Default value:
otp-systemNote
If the configured repository does not exist, the Semantic Objects will try to create it unless disabled by
soml.storage.rdf4j.autoCreateRepository.Also, note that the provided Helm charts include provisioning of the system repository with the default name.
soml.storage.rdf4j.username- Description: Specifies the username to be used for authentication in GraphDB.
soml.storage.rdf4j.credentials- Description: Specifies the credentials to be used for authentication in GraphDB.
soml.storage.rdf4j.maxConcurrentConnections- Description: Specifies the maximum HTTP connections per route to a single GraphDB instance.Default value:
500 soml.storage.rdf4j.connectionRequestTimeout- Description: Specifies the timeout (in milliseconds) used when requesting a connection from the connection manager. A timeout value of
0is interpreted as an infinite timeout.Default value:10000 soml.storage.rdf4j.connectTimeout- Description: Specifies the timeout (in milliseconds) until a connection is established. A timeout value of
0is interpreted as an infinite timeout.Default value:10000 soml.storage.rdf4j.socketTimeout- Description: Specifies the socket timeout (in milliseconds), which is the timeout for waiting for data.This also controls how long to wait for a query to retrieve results from the database.A timeout value of
0is interpreted as an infinite timeout.Default value:0 soml.storage.rdf4j.retryHttpCodes- Description: Specifies on which HTTP codes to retry the request. Supports a list of HTTP codes or ranges, comma- or semicolon-separated.The code range can be defined in the form of
5xx(500-599) or50x(500-509). Example:404, 5xxDefault value:503 soml.storage.rdf4j.maxRetries- Description: Specifies the number of request retries in case of service unavailability. Setting this to
0will disable retries entirely.Retrying will occur only if the HTTP response code matches the one defined inretryHttpCodes.Default value:1 soml.storage.rdf4j.retryInterval- Description: Specifies how long to wait before trying another request (in milliseconds) in case of service unavailability.Default value:
2000 soml.storage.rdf4j.healthCheckTimeout- Description: Allows overriding the
connectionRequestTimeout,connectTimeout, andsocketTimeoutconfigurations during the health check requests.Default value:5000
soml.storage.rdf4j.cluster.clusterStatusTimeout- Description: Specifies how long (in milliseconds) to wait for response from a cluster node when checking its cluster status.More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
${sparql.endpoint.cluster.clusterStatusTimeout:15000}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.clusterStatusConnectTimeout- Description: Specifies how long (in milliseconds) to wait to connect to a cluster node when checking its cluster status.More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
${sparql.endpoint.cluster.clusterStatusConnectTimeout:5000}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.concurrentStatusCheck- Description: Specifies if the cluster’s nodes should be contacted for their status concurrently (all nodes at once) or sequentially (one by one).More information about GraphDB 10 cluster topology could be found in Cluster Basics info page.Default value:
${sparql.endpoint.cluster.concurrentStatusCheck:true}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.leaderDiscoveryRetries- Description: Specifies how many times to try to resole the cluster leader before failing the operation.Default value:
${sparql.endpoint.cluster.leaderDiscoveryRetries:2}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.leaderDiscoveryRetryDelay- Description: Specifies how long (in milliseconds) to wait between unsuccessful leader discovery operation. Setting this configuration to zero will disable the retry.Default value:
${sparql.endpoint.cluster.leaderDiscoveryRetryDelay:5000}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.leaderOperationRetries- Description: Specifies many times to retry a non transactional operation on failure. Cannot be less than 1.Default value:
${sparql.endpoint.cluster.leaderOperationRetries:1}Since: Semantic Objects 4.0 soml.storage.rdf4j.cluster.forceClusterClient- Description: Enables the use of the GraphDB Client API even with a single configured address.Default value:
${sparql.endpoint.cluster.forceClusterClient:false} soml.storage.rdf4j.cluster.forceConnection- Description: Specifies if a remote connection should be established even if the remote repository does not exist. Consequent requests will be retried until a repository is present or within the configured timeouts.If disabled, the requests will fail immediately until the configured repository is created.Default value:
falseNote
Enabled by default if multiple addresses are defined in
soml.storage.rdf4j.address. soml.storage.rdf4j.autoCreateRepository- Description: Enables or disables the automatic repository creation. If the configured repository already exists, this configuration will not have any effect.Default value:
trueNote
The application will try the following steps in order to create a repository on the configured endpoint address:
- A repository with provided custom configuration via
soml.storage.rdf4j.repositoryConfig. - A GraphDB cluster worker repository (for GraphDB Standard and Enterprise deployments).
- A GraphDB Free repository instance (for GraphDB Free deployment).
- Generic Sail in-memory repository as a last option.
Note
Steps 2 to 4 are skipped if
soml.storage.rdf4j.repositoryConfigis set. They can be enabled by explicitly setting thesoml.storage.rdf4j.disableDefaulttofalse. - A repository with provided custom configuration via
soml.storage.rdf4j.repositoryConfig- Description: Allows а custom user-provided repository template from the local file system.The repository name must match the one defined in
soml.storage.rdf4j.repository, or can be defined as"%id%"and will be automatically filled during the create process. soml.storage.rdf4j.disableDefault- Description: Allows the disabling of the internal default templates. Will fail if the user-provided template does not succeed.Default value:
Falseifsoml.storage.rdf4j.repositoryConfigis not provided.Trueifsoml.storage.rdf4j.repositoryConfigis provided.Note
These defaults do not apply if this configuration has an explicitly set value.
Warning
In Ontotext Semantic Services version 3.5 MongoDB is deprecated and will be removed in a future version.
logging.level.com.ontotext.platform.search- Description: Specifies the console log level for the Semantic Search.Default value:
INFO graphdql.federation.enabled- Description: Specifies if the Semantic Search will be used in federation mode.Default value:
false security.enabled- Description: Specifies whether the security part of the Semantic Search should be enabled. In production, this configuration should be provided as an environment variable. In development mode, it is safe to pass and use it as an application property.Default value:
true security.secret- Description: Specifies the public signing key that can be used to decode JSON Web Tokens (JWT). Valid JWTs are required on all Search requests when
security.enabled=true. security.jwks-uri- Description: Specifies an endpoint returning the JSON Web Key Set used to verify JSON Web Tokens (JWT). Valid JWTs are required on all Semantic Objects requests when
security.enabled=true. security.claims.username- Description: Specifies the JWT claim to read in order to determine the user name.Default value:
preferred_username security.claims.roles- Description: Specifies the JWT claim to read in order to determine the user roles.Default value:
roles security.rbacManagementRole- Description: Specifies the default role used for schema management operations of the RBAC schema. The role must have access to all schemas or at least to
/soml/soml-rbacschema. This role is required in order for a change to be made to the/soml/soml-rbacschema.Default value:SchemaRBACAdmin
Health Checks Configurations¶
search.healthcheck.somlSeverity- Description: Allows overriding of the severity for the SOML check in the Semantic Search health check. The value from the configuration will be returned when there is no SOML schema in the schema store or when there is no schema bound to the service.Default value:
MEDIUMPossible values:LOW,MEDIUM, orHIGH search.healthcheck.elasticSeverity- Description: Allows overriding of the severity for the Elasticsearch check in the Semantic Search health check. The value from the configuration will be returned when the service is unable to connect to the Elasticsearch instance.Default value:
MEDIUMPossible values:LOW,MEDIUM, orHIGH search.healthcheck.unavailableSeverity- Description: Allows overriding of the severity for the Semantic Search health check. The value from the configuration will be returned when there is an internal problem with the service and the health check fails to execute successfully.Default value:
HIGHPossible values:LOW,MEDIUM, orHIGH indexing.healthcheck.somlSeverity- Description: Allows overriding of the severity for the SOML check in the Elasticsearch indexes service health check. The value from the configuration will be returned when there is no SOML in the schema store or when there is no schema bound to the service.Default value:
MEDIUMPossible values:LOW,MEDIUM, orHIGH indexing.healthcheck.indexesSeverity- Description: Allows overriding of the severity for the search indexes health check. The value from the configuration will be returned when there is a problem with some/all indexes in the Elasticsearch instance.Default value:
MEDIUMPossible values:LOW,MEDIUM, orHIGH indexing.healthcheck.unavailableSeverity- Description: Allows overriding of the severity for the Elasticsearch indexes service health check. The value from the configuration will be returned when the Semantic Search is unable to connect to the Elasticsearch instance or there is an internal problem with the service and the health check fails to execute successfully.Default value:
HIGHPossible values:LOW,MEDIUM, orHIGH
Elasticsearch Configuration¶
elasticsearch.host- Description: Specifies the address of the Elasticsearch instance for the GraphDB to connect to.Accepts multiple hosts, comma- or semicolon-separated.Default value:
n/aReplaces:spring.elasticsearch.urisspring.elasticsearch.rest.uris elasticsearch.externalHost- Description: Specifies the address of the Elasticsearch instance for the Search Service to connect to. If not specified, the value of
elasticsearch.hostwill be used. Useful only if the Search Service and GraphDB are in different networks.Accepts multiple hosts, comma- or semicolon-separated.Default value:elasticsearch.host elasticsearch.indexCreateSettings- Description: Index settings to be used directly when creating the Elasticsearch indexes.Default value:
n/a elasticsearch.connectorCreateSettings- Description: GraphDB Elasticsearch Connector creation parameters to be used for the Connector instances.Default value:
n/a elasticsearch.accessTimeout- Description: A timeout (in milliseconds) to try to connect to the Elasticsearch service. The configuration controls the time to acquire a connection from the connection pool and the time to try to connect to the remote service.Default value:
2000Possible values:-1or0: wait indefinitely.Positive integer value
elasticsearch.connectionTimeout- Description: Defines the connection timeout used when communicating with Elasticsearch. The configuration accepts duration definitions.Default value:
1sSince: Search Service 4.2Replaces:spring.elasticsearch.connectionTimeoutspring.elasticsearch.connection-timeoutspring.elasticsearch.rest.connectionTimeoutspring.elasticsearch.rest.connection-timeout elasticsearch.socketTimeout- Description: Defines the socket timeout used when communicating with Elasticsearch. The configuration accepts duration definitions.Default value:
30sSince: Search Service 4.2Replaces:spring.elasticsearch.socketTimeoutspring.elasticsearch.socket-timeoutspring.elasticsearch.rest.readTimeoutspring.elasticsearch.rest.read-timeout elasticsearch.pathPrefix- Description: Defines the prefix added to the path of every request sent to Elasticsearch.Since: Search Service 4.2Replaces:
spring.elasticsearch.pathPrefixspring.elasticsearch.path-prefix elasticsearch.username- Description: Defines the username to be used when communicating with Elasticsearch.Since: Search Service 4.2Replaces:
spring.elasticsearch.usernamespring.elasticsearch.rest.username elasticsearch.password- Description: Defines the password to be used when communicating with Elasticsearch.Since: Search Service 4.2Replaces:
spring.elasticsearch.passwordspring.elasticsearch.rest.password elasticsearch.certificate- Description: Defines a path to a custom certificate to be used when setting up SSL communication with Elasticsearch.Since: Search Service 4.2
elasticsearch.certificateBase64- Description: Defines a custom certificate to be used when setting up SSL communication with Elasticsearch encoded in Base64.Since: Search Service 4.2
elasticsearch.removePrevious- Description: Determines if all old
otp-*connectors should be removed when deploying a new schema. If disabled, connectors with the same names between schemas will be dropped only when their configurations are different from the one being deployed. This will effectively protect already existing indexes between schemas if they have identical structures. If enabled, the connector configurations will not be considered and connectors will always be recreated. Disabled by default.Default value:false elasticsearch.ignoreMalformed- Description: Allows ignoring of malformed data when indexing in Elasticsearch. If set to
false, invalid data will prevent a SOML schema from being bound. This option is passed to the GraphDB connectors when created.Default value:true search.maxNestingLevel- Description: Specifies the maximum allowed value defined in
search.type.nestingLevelconfigurations in SOML objects and property definitions.Default value:5Possible values: Positive integer value
With a complex SOML schema and a large amount of data, it is easy to start hitting the Elasticsearch default limits. So setting the following properties to larger values may be needed:
elasticsearch.indexCreateSettings.index.mapping.nested_objects.limit: 10000
elasticsearch.indexCreateSettings.index.mapping.nested_fields.limit: 50
elasticsearch.indexCreateSettings.index.mapping.total_fields.limit: 1000
Note
If your SOML schema creates indexes that are too big, increasing the Elasticsearch limits is not always a solution, as this will affect the performance. Reducing the index scope to only the mandatory data is always advisable.
Security¶
The security part of the Semantic Search works and is implemented in the same way as the security of the Semantic Objects. To enable the security of the service, you need to use the configurations:
security.enabled: enables/disables the functionalitysecurity.secret: provides a public signing key that can be used to decode JSON Web Tokens (JWT). Cannot be used withsecurity.jwks-uri.security.jwks-uri: provides an URL endpoint where JSON Web Key Set are located that can be used to decode JSON Web Tokens (JWT). Cannot be used withsecurity.secret.
Important
When configuring the secrets for the different services, make sure that the Semantic Objects and the Semantic Search have the same secret when the Workbench is included in the deployment.
When Search security is enabled, all requests that are made to it must include a valid JWT passed as Authorization: Bearer <token>
header. Requests that do not follow this rule will be rejected with response status Unauthorized 401.
A valid JWT can be acquired from FusionAuth after executing a request to the exposed REST endpoint /api/login with user credentials.
For more information about the authentication and authorization processes, see https://platform.ontotext.com/semantic-objects/auth/index.html.
Warning
The RBAC part of the security of the Semantic Search is not implemented for the 3.5 version of the Ontotext Semantic Services, which means that the results from the search queries will not be filtered based on the client roles. This functionality will be implemented in future releases.
The public resources that are accessible without providing a token are the /__health, /__gtg, /__trouble, and /__about endpoints.
Note
Elasticsearch security is not related to the Search Service security and could be configured independently.
Handling of dateTime Properties¶
Due to the way Elasticsearch handles dateTime properties, they are all returned in UTC.
The Semantic Search expects dates to be filtered as value: "2016-06-23T09:07:21Z".
Dates such as value: "2016-06-23T09:07:21" or value: "2016-06-23T09:07:21.000” are not accepted.
A date stored in GraphDB as "2001-10-26T21:32:52+02:00"^^xsd:dateTime will be returned as "2001-10-26T19:32:52.000Z".
Semantic Services Gateway¶
The Ontotext Semantic Services use Kong as an API gateway. It performs service routing, JWT token validation, throttling, and more. The goal is for all Semantic Services and applications, including the Semantic Search, to be placed behind an API gateway.
See how to use the Gateway in the Semantic Objects documentation.