Naive description of a first use-case
Available resources
- Based on Trial 8 mockups available here
- Detail of the associated "search" sequence diagram here
- Detail of the associated "contract negotiation" sequence diagram here
- Associated architecture diagram
Basic scenario
- The user (participant employee) accesses an application available at URL https://tems-dataspace.eu/pilot8/
- The user logs-in to its preferred identity provider (out of scope of the project)
- The user accesses a list of 3D Models from different providers
- He can search for specific 3D Models based on their names (or their description content)
- How to index by large text fields like description in our case ?
- He finds the short description of a model he likes
- He clicks to get access to the detail of the model
- He (transparently) negotiates access to the dataset associated with the model
- He sees the details
Additional use-case
- The user can propose a modification to the detail of the 3D Model description.
- The user can search by more advanced filters like numbers of polygons or xxx
Technical implications:
Federated index
We need a basic federated index which contains one entry pointing to https://api.tems-stg.startinblox.com/objects/trial8/ and stating that there are tems:3DObject there, this index could be deployed on htttps://cdn.startinblox.com/tems/indexes/index.jsonld as a first version
An example of federated index targetting entry points for tems:3DObject indexes is described here.
Local indexes
The endpoint of trial8 is returning a container of tems:3DObject, individually loooking as follows:
{
"@id": "https://api.tems-stg.startinblox.com/objects/trial8/3/",
"creation_date": "2024-11-11T12:25:32.883000Z",
"update_date": "2024-11-18T14:13:26.739204Z",
"title": "Title",
"description": "Lorem ipsum dolor sit amet consectetur. Et nulla lacus magna sagittis quam. Leo proin urna semper egestas. Nisl ut tincidunt massa nulla venenatis sem lacus quam duis. A etiam parturient nunc vel. Feugiat ultrices sed feugiat venenatis posuere. Enim eget nunc feugiat interdum. Justo scelerisque ornare ut egestas ullamcorper risus justo. Pellentesque facilisi aliquam tellus lacus non suspendisse.\r\n\r\nFacilisis nulla felis in est mauris magna dictum diam. Diam nulla eu duis arcu risus. Sed mi vulputate auctor vitae curabitur. Libero volutpat vestibulum consectetur rutrum tortor leo in ut. Id sem nam dignissim nec. Eu sollicitudin et sed sapien.",
"copyright": "https://startinblox.com",
"website": "https://startinblox.com",
"identifier": "XXX-000-XXX",
"historical_period": "XXX-000-XXX",
"polygons": 67342,
"summits": 34602,
"geometry": "Polygonal Géométrie",
"uv_layers": true,
"vertex_colors": true,
"rigged_geometry": false,
"file_size": 491700,
"vertives": 0,
"textures": 5,
"materials": 20
}
I voluntarily ignored the relationships to other objects set through containers, keeping simple properties. For demonstration purpose we should provide:
- static indexes examples of those models by titles and descriptions
- V1 only titles
- V2, think about descriptions indexing
An example of what those indexes could look like for title and descriptions, based on the data model of tems:3DObject can be found in this repository here
You can find:
- A meta index of 3D Models Objects which references available subindexes (title and description)
- Those sub meta-index for title and description, listing available sub-index entries:
- An example of two final indexes:
Associated questions
- Should we publish those indexes publicly ? Otherwise, how to trigger the contract negociation to have access to the indexes first ?
- Are the properties which we can index on each model statically or dynamically defined ?
- Should we index objects by their type or should all kind of object types be indexed together based on their existing properties ?
- When and how does the contract negotiation happen ?
- How do we reconcile the declaration of the dataset https://api.tems-stg.startinblox.com/objects/trial8/ as an available dataset from the Trial 8 connector having really basic policy rules and a public contract to another participant employee actually having access to the details of https://api.tems-stg.startinblox.com/objects/trial8/3/ in its browser ?
Associated technical requirements
- Having the capability to trigger search requests based on indexes: finalize and merge the associated MR
- Having a more generic store able to digest any type of RDF formats (based on RDFLib preferably)
- Having an ability to actually generate the indexes (see the associated MR in djangoldp and for instance in djangoldp-account for specific model indexing
- Having a crawler to feed the basic federated index (implemented as a django command for now