{"id":46578395,"url":"https://github.com/reactodia/reactodia-workspace","last_synced_at":"2026-04-02T18:29:47.817Z","repository":{"id":206694643,"uuid":"717054241","full_name":"reactodia/reactodia-workspace","owner":"reactodia","description":"Reactodia Workspace -- library for visual interaction with graph data in a form of a diagram.","archived":false,"fork":false,"pushed_at":"2026-03-29T16:34:44.000Z","size":5405,"stargazers_count":21,"open_issues_count":5,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-29T18:56:09.023Z","etag":null,"topics":["diagram","graph","ontodia","rdf","reactodia","sparql","typescript"],"latest_commit_sha":null,"homepage":"https://reactodia.github.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"metaphacts/ontodia","license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactodia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-10T13:02:35.000Z","updated_at":"2026-03-29T16:34:45.000Z","dependencies_parsed_at":"2024-03-31T23:20:08.577Z","dependency_job_id":"1bd579be-09c5-4cf6-a0be-4e9735a7568c","html_url":"https://github.com/reactodia/reactodia-workspace","commit_stats":{"total_commits":524,"total_committers":12,"mean_commits":"43.666666666666664","dds":"0.41793893129770987","last_synced_commit":"d0132492f42cb82a0bdfd43fe963d410cf5a6143"},"previous_names":["alexeymz/reactodia-workspace"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/reactodia/reactodia-workspace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactodia%2Freactodia-workspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactodia%2Freactodia-workspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactodia%2Freactodia-workspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactodia%2Freactodia-workspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactodia","download_url":"https://codeload.github.com/reactodia/reactodia-workspace/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactodia%2Freactodia-workspace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31312907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"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":["diagram","graph","ontodia","rdf","reactodia","sparql","typescript"],"created_at":"2026-03-07T10:31:58.068Z","updated_at":"2026-04-02T18:29:47.810Z","avatar_url":"https://github.com/reactodia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reactodia Workspace [![npm version](https://badge.fury.io/js/@reactodia%2Fworkspace.svg)](https://badge.fury.io/js/@reactodia%2Fworkspace)\n\n[Documentation](https://reactodia.github.io/) | [Changelog](https://github.com/reactodia/reactodia-workspace/blob/master/CHANGELOG.md) | [Playground](https://reactodia.github.io/playground/basic)\n\n`@reactodia/workspace` is a TypeScript library that allows to explore, visualize and make changes to the data in the form of an interactive graph based on underlying data sources.\n\n`@reactodia/workspace` is an open-source fork of [Ontodia](https://github.com/metaphacts/ontodia) project.\n\n![reactodia_oceanus_light_bordered](https://github.com/user-attachments/assets/040fc7c0-96d3-4079-8fee-873d5206f187#gh-light-mode-only)\n![reactodia_oceanus_dark_bordered](https://github.com/user-attachments/assets/e5ced6dd-3d3e-4e7d-aa2d-33677c58d292#gh-dark-mode-only)\n\n## Installation\n\nInstall with:\n```sh\nnpm install --save @reactodia/workspace\n```\n\n## Quick example\n\n```ts\nimport * as React from 'react';\nimport * as Reactodia from '@reactodia/workspace';\nimport * as N3 from 'n3';\n\nconst GRAPH_DATA = 'https://reactodia.github.io/resources/orgOntology.ttl';\n\n// Use background Web Worker to compute graph layout\nconst Layouts = Reactodia.defineLayoutWorker(() =\u003e new Worker(\n  new URL('@reactodia/workspace/layout.worker', import.meta.url)\n));\n\nfunction BasicExample() {\n    const {defaultLayout} = Reactodia.useWorker(Layouts);\n\n    const {onMount} = Reactodia.useLoadedWorkspace(async ({context, signal}) =\u003e {\n        const {model, performLayout} = context;\n        // Fetch graph data to use as underlying data source\n        const response = await fetch(GRAPH_DATA, {signal});\n        const graphData = new N3.Parser().parse(await response.text());\n        const dataProvider = new Reactodia.RdfDataProvider({acceptBlankNodes: false});\n        dataProvider.addGraph(graphData);\n\n        // Create empty diagram and put owl:Class entities with links between them\n        await model.createNewDiagram({dataProvider, signal});\n        const elementTypeId = 'http://www.w3.org/2002/07/owl#Class';\n        for (const {element} of await dataProvider.lookup({elementTypeId})) {\n            model.createElement(element);\n        }\n        await model.requestData();\n\n        // Layout elements on canvas\n        await performLayout({signal});\n    }, []);\n\n    return (\n        \u003cReactodia.Workspace ref={onMount}\n            defaultLayout={defaultLayout}\u003e\n            \u003cReactodia.DefaultWorkspace /\u003e\n        \u003c/Reactodia.Workspace\u003e\n    );\n}\n```\nLook for more examples in the [documentation](https://reactodia.github.io/docs/category/examples).\n\n## Development\n\n### Build\n\nThe library uses [Vite](https://vite.dev/) for local development and to build the output bundles:\n\n* Run `npm run start` to serve examples locally.\n* Run `npm run build \u0026\u0026 npm run typings` to build the `dist` folder with output bundles and library TypeScript typings.\n\n### Tests\n\nThe library uses [Vitest](https://vitest.dev/) as a testing framework: run `npm run test` to execute all tests.\n\nThe tests use [Vitest Browser Mode](https://vitest.dev/guide/browser/) so the following command should be executed first to download browser binaries for the [Playwright]: `npx playwright install chromium`.\n\nSee [Vitest Debugging](https://vitest.dev/guide/debugging) documentation page for an integrated debugger setup for the tests (e.g. VSCode debugger).\n\n## License\n\nThe library is distributed under LGPL-2.1 or (at your option) any later version, see [NOTICE.md](./NOTICE.md). \n\n## Scientific citations\n\nIf you use the library in your scientific projects, it would be great if you provide a link to this repository in your publication and a citation reference to the following paper:\n\nMouromtsev, D., Pavlov, D., Emelyanov, Y., Morozov, A., Razdyakonov, D. and Galkin, M., 2015. The Simple Web-based Tool for Visualization and Sharing of Semantic Data and Ontologies. In International Semantic Web Conference (Posters \u0026 Demos).\n\n```\n@inproceedings{Mouromtsev2015,\n    author = {Mouromtsev, Dmitry and Pavlov, Dmitry and Emelyanov, Yury and\n        Morozov, Alexey and Razdyakonov, Daniil and Galkin, Mikhail},\n    year = {2015},\n    month = {10},\n    title = {The Simple Web-based Tool for Visualization and Sharing of Semantic Data and Ontologies},\n    booktitle = {International Semantic Web Conference (Posters \u0026 Demos)}\n}\n```\n\nIt really helps our team to gain publicity and acknowledgment for our efforts.\nThank you for being considerate!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactodia%2Freactodia-workspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactodia%2Freactodia-workspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactodia%2Freactodia-workspace/lists"}