{"id":28403606,"url":"https://github.com/aarkue/oc-pg","last_synced_at":"2025-06-27T08:31:25.746Z","repository":{"id":296391782,"uuid":"993208080","full_name":"aarkue/oc-pg","owner":"aarkue","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-30T13:14:19.000Z","size":14925,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"oc-pg","last_synced_at":"2025-06-08T17:01:55.732Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aarkue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-05-30T11:56:15.000Z","updated_at":"2025-05-30T13:14:23.000Z","dependencies_parsed_at":"2025-05-30T17:03:25.296Z","dependency_job_id":null,"html_url":"https://github.com/aarkue/oc-pg","commit_stats":null,"previous_names":["aarkue/oc-pg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aarkue/oc-pg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aarkue%2Foc-pg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aarkue%2Foc-pg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aarkue%2Foc-pg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aarkue%2Foc-pg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aarkue","download_url":"https://codeload.github.com/aarkue/oc-pg/tar.gz/refs/heads/oc-pg","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aarkue%2Foc-pg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262222266,"owners_count":23277392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2025-06-01T18:37:53.825Z","updated_at":"2025-06-27T08:31:25.737Z","avatar_url":"https://github.com/aarkue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discovery of object-centric Petri nets with Synchronized Place Groups\n\nSee the `sync_group_discovery.rs` file.\nTo execute the evaluation run `cargo test sync_group_discovery_eval_table --release -- --nocapture`, remembering to update the file paths.\nThe used datasets are available from https://www.ocel-standard.org/event-logs/overview/.\nThe evaluation tests will produce part of a LaTeX table by printing the values, delimited by `\u0026` and `\\\\` in stdout.\n\n\n\n\n\n---\n\n\n\n---\n\n\n\n\n\n\n## Outdated\n\n\n\nThis repository was forked from the OC-DECLARE approach, as it uses similar condition and constraint checking techniques.\n\n\nSee below for the previous README.\n\nThis repository contains the following parts:\n\n1. Visual Editor for OC-DECLARE\n2. Backend for Conformance Checking and Discovery of OC-DECLARE\n3. Evaluation Setup used to evaluate OC-DECLARE\n4. Evaluation Dataset and Results for OC-DECLARE\n\nThere is an interactive **web demo** of OC-DECLARE available at [**https://oc-declare.vercel.app/**](https://oc-declare.vercel.app/).\nIt can be used directly in your browser and without installing anything. Note, that the web version is slower and less scalable than running the approach natively. However, it is great for experimenting or quickly trying out the OC-DECLARE implementation.\n\nIn the web version, OCEL 2.0 files in the XML and JSON format are supported. Discovery in the web version does not use object-to-object (O2O) relationships.\nSee [https://www.ocel-standard.org/event-logs/overview/](https://www.ocel-standard.org/event-logs/overview/) for a list of publicly available example datasets.\n\n\n## Screenshots\n![Image showing the basic user interface](1.png)\n\n![Image showing the available functions after importing an OCEL](2.png)\n\n![Image showing auto-discovered constraints](3.png)\n\n\n---\n\nFor the evaluation datasets and raw results see the `evaluation-results/` subfolder. It contains a `raw-results` folder containing all discovered results and execution times (see below for a description).\nAdditionally, the `evaluation-results/datasets/datasets.zip` can be extracted to get all the OCEL 2.0 files used for evaluation.\nThe `-results.json` files can also be imported and viewed in the frontend (Load Save -\u003e Select file).\n\n\n## Details\n\nThe backend of the OC-DECLARE approach is implemented in the Rust programming language.\nSee [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install) for instructions on how to install Rust on your machine.\n\n### Backend \u0026 Evaluation Setup\nConformance Checking and Discovery for OC-DECLARE is implemented in the `shared` crate (`crates/shared`).\nThe functions `get_for_all_evs_perf` (for conformance checking) and `discover` (for discovery) are probably the most interesting ones.\nThe shared backend code can be compiled by running `cargo build --release` in the `shared` directory.\n\nThe evaluation setup is available in the `evaluation` crate (at `crates/evaluation`).\nIt can be executed with `cargo run --release -- /path/to/ocel/folder/`, where the appropriate OCEL 2.0 JSON files are expected to be available (e.g., `ContainerLogistics.json`).\nThe evaluation pipeline will then run through all configurations and place the result files in the current directory (e.g., `crates/evaluation`).\nFor each configuration (OCEL file and O2O direction), two files are created ending in `-results.json` for JSON representation of all discovered constraints and `-summary.json`, containing only the durations (in seconds), mean duration, and number of results.\n\n\n### Frontend\nThe frontend is implemented using web technologies and requires Node.js and npm to be installed on your machine. See [https://docs.npmjs.com/downloading-and-installing-node-js-and-npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) for more information.\n\nTo also update and use the backend Rust implementation directly in the browser the crate `backend-wasm` (`crates/backend-wasm`) needs to be build and packaged first.\nFor that, `wasm-pack` is needed (installable from [https://rustwasm.github.io/wasm-pack/installer/](https://rustwasm.github.io/wasm-pack/installer/)). By running `wasm-pack build --target web --release` in the `crates/backend-wasm` folder, the WASM backend will be bundled to the `crates/backend-wasm/pkg` subfolder.\n\nThe frontend lives at the root directory and `src/`. \nFirst install the needed dependencies using `npm install` inside the root of this repository.\nNext, the frontend can be started in development mode using `npm run dev`.\nSimply open the printed URL in your browser to use it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faarkue%2Foc-pg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faarkue%2Foc-pg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faarkue%2Foc-pg/lists"}