¶ Rdf inference and validation API
This API will be added in ThingIn version 2.6.0.
This API is experimental and does not represent a novel way to access/manage data in ThingIn. Any operation performed with this API is isolated and does not affect data in ThingIn.
¶ Main interest
The API is aimed towards semantic web practitioners who are used to manage rdf data and ontologies, and thus to use well-known semantic tools and algorithms on ThingIn data. Since all avatars and data can be converted to semantic formats, the only exception is avatars described through generic (non-semantic) labels and relationships.
¶ API and functionnalities
The functionnalities are the following :
- Rdf model upload : since all operations in the API are isolated from ThingIn's database, to perform operations users have to first upload a RDF dataset. This dataset may for example come from ThingIn's avatar API. This operation returns a UUID for this dataset that can be used to perform further tasks on this dataset (see below). Additionnaly, instead of uploading raw rdf files/data, it is possible to upload the content of a ThingIn domain directly using the domain IRI. In that case a hard size limit on the number of avatars (1000) is set.
- Consistency checking : this functionnality allows to validate rdf data along with associated ontologies
- SHACL validation : this functionnalities allows to perform a SHACL validation on rdf data using a user-provided SHACL shapes file
- Inference : this functionnalities allows to perform inference on rdf data using reasoners. The reasoner is chosen by the user among a set of predefined reasoners. The reasoners include Jena's general RuleReasoner. To perform inference, one can just like with SPARQL querying
- SPARQL : this functionnalities stems from the inference functionnality. Simply put, one can choose to create an inferable rdf dataset but choose to not use a reasoner, and use the API as a basic SPARQL endpoint for his dataset. This is however a very slow process compared to using ThingIn's avatar API to filter data, and should not be viewed as a way to query ThingIn.
This implementation is experimental and may change at any time in the future.
It is currently based on Jena TDB as a backend RDF Store.
Data has to be uploaded through the API and copied to the RDF store which is deployed in a container with limited resources. Thus, these functionnalities are not aimed towards big datasets, and efficiency/speed is not a priority.