{"id":20631188,"url":"https://github.com/solidlabresearch/decentralized-stream-aggregator","last_synced_at":"2026-01-18T13:50:03.683Z","repository":{"id":106974569,"uuid":"599514776","full_name":"SolidLabResearch/decentralized-stream-aggregator","owner":"SolidLabResearch","description":"A service running on top of Solid Pod(s) to perform aggregation.","archived":false,"fork":false,"pushed_at":"2025-02-06T13:12:06.000Z","size":2559,"stargazers_count":1,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-15T18:47:06.043Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolidLabResearch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-09T09:54:25.000Z","updated_at":"2025-02-06T13:12:11.000Z","dependencies_parsed_at":"2024-01-17T16:40:28.828Z","dependency_job_id":"6f0813db-c70f-4995-98a5-bcde1f21f369","html_url":"https://github.com/SolidLabResearch/decentralized-stream-aggregator","commit_stats":null,"previous_names":["solidlabresearch/solid-stream-aggregator","solidlabresearch/decentralized-stream-aggregator"],"tags_count":2,"template":false,"template_full_name":"argahsuknesib/TS-Template","purl":"pkg:github/SolidLabResearch/decentralized-stream-aggregator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fdecentralized-stream-aggregator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fdecentralized-stream-aggregator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fdecentralized-stream-aggregator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fdecentralized-stream-aggregator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolidLabResearch","download_url":"https://codeload.github.com/SolidLabResearch/decentralized-stream-aggregator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolidLabResearch%2Fdecentralized-stream-aggregator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28537016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T14:11:27.090Z","updated_at":"2026-01-18T13:50:03.623Z","avatar_url":"https://github.com/SolidLabResearch.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solid Stream Aggregator\n\n\u003cimg src=\"./solid-stream-aggregator.webp\" alt=\"Logo\" width=\"150\"\u003e\n\nThe Solid Stream Aggregator is a service which can be used on top of one or multiple Solid Pods and constructs a materialized view on top of the stream measurements stored in the Solid Pod. The Solid Stream Aggregator currently functions under the assumptions that the Solid Pod uses the [LDES in LDP](https://woutslabbinck.github.io/LDESinLDP/) specification to store the stream measrements. The aggregated results are sent to the client requesting the data, as well as the materialized view was published to the Solid Stream Aggregator's Solid Pod for further re-use by other clients, and processes which have similar requirements of the aggregated results.\n\n## Requirements \n\n- One or Multiple Solid Pods which use the [LDES in LDP](https://woutslabbinck.github.io/LDESinLDP/) specification to store the stream measurements.\n- The sensor events should be stored in the Solid Pod in the form of an LDES stream and a file containing the sensor events in RDF can be replayed to the Solid Pod with the help of [LDES in Solid Semantic Observation Replayer](https://github.com/argahsuknesib/LDES-in-SOLID-Semantic-Observations-Replay) library.\n- A sample of the sensor events which can be replayed is available [here](https://github.com/argahsuknesib/dahcc-heartrate).\n\n## Configuration of the Solid Pod\n\n- We are under the assumption that the client queries the solid pod using the solid stream aggregator, however the client does not know the location of the LDES Stream by default. \nWe employ [Type Indexes](https://solid.github.io/type-indexes/) to store the location of one or more LDES streams. When querying the Solid Pod, the aggregator first queries the Type Index to get the location of the LDES stream and then retrieves the LDES stream to get the sensor events.\n\n## Installation\n\n- Clone the repository\n- Install the dependencies using `npm install`\n- Start the Solid Stream Aggregator's Solid Pod with the command\n```bash\nnpm run start-solid-server\n``` \nThe command will start a Solid Server on the port 3000 with a Solid Pod named `aggregation_pod` which can be accessed at `http://localhost:3000/aggregation_pod/`. The aggregation results are stored in the aggregator's Solid Pod in form of the LDES stream using the [LDES in LDP](https://woutslabbinck.github.io/LDESinLDP/) specification.\n- Create a folder and a file named `logs/aggregation.log` in the root directory of the project. The logs of the Solid Stream Aggregator are stored in this file.\n- Now, start the Solid Stream Aggregator with the command\n```bash\nnpm run start aggregation \n```\nThe command will start the Solid Stream Aggregator on the port 8080. The Solid Stream Aggregator exposes a HTTP as well as a WebSocket server at the port 8080 where the client can send a request for aggregated results from a Solid Pod.\n\n- The protocol to communicate to the Solid Stream Aggregator is by sending a RSP-QL query to the Aggregator.\n```ts\nlet message = {\n    // The query to be sent to the Solid Stream Aggregator (RSP-QL query)\n    query: `INSERT YOUR QUERY HERE`,\n    // The type of mointoring query can be either, `historical+live` or `live`\n    type: `INSERT YOUR TYPE HERE`\n}\n```\nand send this message object to the aggregator using the WebSocket connection.\n\n## Tests\n\nThe tests for the Solid Stream Aggregator are written using the Jest framework. The coverage isn't 100% yet, but will be done in the recent future.\n\n## Linting\n\nYou run the linter via \n```shell\nnpm run lint:ts\n```\n\nYou can automatically fix some issues via\n```shell\nnpm run lint:ts:fix\n```\n\n## License\n\nThis code is copyrighted by [Ghent University - imec](https://www.ugent.be/ea/idlab/en) and released under the [MIT Licence](./LICENCE) \n\n## Contact\n\nFor any questions, please contact [Kush](mailto:kushagrasingh.bisen@ugent.be) or create an issue in the repository [here](https://github.com/SolidLabResearch/solid-stream-aggregator/issues) .\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fdecentralized-stream-aggregator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidlabresearch%2Fdecentralized-stream-aggregator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidlabresearch%2Fdecentralized-stream-aggregator/lists"}