{"id":28966482,"url":"https://github.com/dice-group/evolearner","last_synced_at":"2026-02-04T03:38:59.122Z","repository":{"id":40998648,"uuid":"425834982","full_name":"dice-group/EvoLearner","owner":"dice-group","description":"EvoLearner: Learning Description Logics with Evolutionary Algorithms","archived":false,"fork":false,"pushed_at":"2023-07-07T21:16:15.000Z","size":47423,"stargazers_count":3,"open_issues_count":11,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-24T07:37:53.002Z","etag":null,"topics":["concept-learning","description-logics","owl","web-ontology-language"],"latest_commit_sha":null,"homepage":"","language":"Prolog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dice-group.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-08T12:48:24.000Z","updated_at":"2024-09-18T18:09:11.000Z","dependencies_parsed_at":"2023-01-21T13:45:37.481Z","dependency_job_id":null,"html_url":"https://github.com/dice-group/EvoLearner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dice-group/EvoLearner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dice-group%2FEvoLearner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dice-group%2FEvoLearner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dice-group%2FEvoLearner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dice-group%2FEvoLearner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dice-group","download_url":"https://codeload.github.com/dice-group/EvoLearner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dice-group%2FEvoLearner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264777823,"owners_count":23662555,"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":["concept-learning","description-logics","owl","web-ontology-language"],"created_at":"2025-06-24T07:32:31.252Z","updated_at":"2026-02-04T03:38:54.068Z","avatar_url":"https://github.com/dice-group.png","language":"Prolog","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Note: Use this repository to reproduce the exact numbers from the paper, otherwise try out the new implementation of EvoLearner that is part of [Ontolearn](https://github.com/dice-group/Ontolearn)\n# EvoLearner: Learning Description Logics with Evolutionary Algorithms\n\nThis repository contains code to reproduce the results of our paper ```EvoLearner: Learning Description Logics with Evolutionary Algorithms```.\n\nIn order to run all experiments, this repository contains [SML-Bench](https://github.com/SmartDataAnalytics/SML-Bench).\n\nThe code of `EvoLearner` can be found in this [folder](https://github.com/dice-group/EvoLearner/tree/master/learningsystems/evolearner/EvoLearner).\n\n## Installation\n\n### Requirements\n\n* Ubuntu 18.04 LTS\n* Python 3.6.9+ as `python`\n* Java 8/11\n* Apache Maven 3.6.0+\n* 32GB RAM\n\nClone the repository:\n```\ngit clone https://github.com/EvoLearnerOnto/EvoLearner.git\n```\nThen run:\n```\n./setup.sh\n```\nAlternatively, use the provided ```Dockerfile```: \n```\ndocker build -t evolearner .\ndocker run -it --rm --name=evolearner evolearner\n```\n\nWhen running the experiments below in the container, they will be written to the\n```results``` folder in the container. \n\nTo make them available outside the container, you can mount a local directory:\n```\ndocker run -it -v /path-to-local-directory:/sml-bench/results --rm --name=evolearner evolearner\n```\n\n### Install Aleph (optional, already installed in the ```Dockerfile```)\n\nTo install Aleph follow the instructions [here](https://github.com/EvoLearnerOnto/EvoLearner/tree/master/learningsystems/aleph_swipl).\n\nThis is not required, so if Aleph is not installed the results of Aleph will just be missing.\n\n## Reproduce results\n\nTo reproduce the results of EvoLearner, CELOE, OCEL, SPaCEL, Aleph (Table 3) run:\n```\n./reproduce_systems.sh\n```\nTo reproduce the results of the ablation analysis of EvoLearner (Table 4) run:\n```\n./reproduce_ablation.sh\n```\nTo reproduce the results of different variants of the random walk init (Table 5) run:\n```\n./reproduce_random_walk_variants.sh\n```\nTo reproduce the results of the initialization methods (Table 7) run:\n```\n./reproduce_init_methods.sh\n```\nTo reproduce the results of different `mutation` operators (Table 8) run:\n```\n./reproduce_mutation.sh\n```\nTo reproduce the results of different settings for the `maxT` parameter (Table 9) run:\n```\n./reproduce_maxT.sh\n```\nTo reproduce the results of different settings for the fitness function run:\n```\n./reproduce_fitness.sh\n```\nTo reproduce the results of the F-measure over runtime experiment (Figure 3) run:\n```\n./reproduce_plot.sh\n```\nAfterward, the results can be found in the ```results``` folder.\n\n## Examples\n\nSome solutions that were found by the systems for the `Uncle` learning problem:\n\n**EvoLearner**\n\n`Male ⊓ ((∃ hasSibling.Parent) ⊔ (∃ married.(∃ hasSibling.Parent)))`\n\n- Perfect solution both on training and test data, short length\n\n**CELOE**\n\n`(Son ⊓ (∃ hasSibling.Parent))  ⊔ ∃ married.Sister`\n\n- Short length, not 100% correct (Son vs. Male, Sister vs. hasSibling.Parent)\n\n**OCEL**\n\n`Male ⊓ ((∃ hasSibling.Parent) ⊔ (∃ married.(Daughter ⊓ ∃ hasSibling.Parent)))`\n\n- Perfect solution on training and test data but a bit longer than necessary (one atomic concept too much: Daughter)\n \n**SPaCEL**\n\n`(¬Female ⊓ (∃ hasSibling.Parent)) ⊔ (¬Female ⊓ ∃ married.(∃ hasSibling.Parent)))`\n\n- Perfect solution on training and test data but a bit longer than necessary (Male expressed as ¬Female, and ¬Female expressed two times)\n\n## Results Directly After Initialization\n\nThe following table compares the final F1-measure of EvoLearner when running the complete algorithm with the F1-measure\n\ndirectly after the initialization, so directly after the random-walk initialization without running the evolutionary algorithm afterward.\n\n|   | After Initialization (Directly After Random Walk) | After Evolution (Complete Algorithm) |\n|:--|:--:|:--:|\n| Carcinogenesis   | 0.59 | 0.70 |\n| Uncle   | 0.90 | 1.00 |\n| Hepatitis  | 0.31 | 0.79 |\n| Lymphography  | 0.81 | 0.84 |\n| Mammographic  | 0.81 | 0.81  |\n| Mutagenesis  | 0.93 | 1.00  |\n| NCTRER  | 0.98 | 1.00  |\n| Premier League | 0.96 | 1.00 |\n| Pyrimidine  | 0.73  | 0.91 |\n\n## Fitness Function\n\nShowing the influence of different settings of the weight parameter of the fitness function.\n\n(by how much the quality of an individual, i.e. concept, is weighted compared to its length)\n\n### F1-measure\n|   | 8092 | 4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32  |\n|:--|:--:|:--:|:--:|:--:|:---:|:---:|:---:|:---:|:---:|\n| Carcinogenesis   | 0.68 | 0.67 | 0.70 | 0.69 | 0.67  | 0.64 | 0.61  | 0.60  | 0.60  |\n| Uncle   | 0.99 | 0.99 | 1.00 | 1.00 | 1.00  | 0.98 | 0.93  | 0.88  | 0.87  |\n| Hepatitis  | 0.79 | 0.80 | 0.79 | 0.78 | 0.76 | 0.71 | 0.70  | 0.61  | 0.59  |\n| Lymphography  | 0.84 | 0.85 | 0.84 | 0.83 | 0.83 | 0.84 | 0.87  | 0.87  | 0.87  |\n| Mammographic  | 0.81 | 0.81  | 0.81  | 0.81  | 0.80  | 0.78  | 0.78  | 0.78  | 0.78  |\n| Mutagenesis  | 1.00 | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  |\n| NCTRER  | 1.00 | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  |\n| Premier League  | 1.00 | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  | 1.00  |\n| Pyrimidine  | 0.91  | 0.91  | 0.91  | 0.91  | 0.92  | 0.92  | 0.88  | 0.89  | 0.78  |\n\n### Length\n|   | 8092 | 4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32  |\n|:--|:--:|:--:|:--:|:--:|:---:|:---:|:---:|:---:|:---:|\n| Carcinogenesis   | 27.43 | 28.60 | 23.41 | 22.20 | 17.10  | 10.00 | 5.40  | 3.13  | 3.00  |\n| Uncle   | 10.90 | 10.90 | 10.87 | 10.60 | 11.40  | 9.20 | 6.50  | 4.23  | 3.33  |\n| Hepatitis  | 25.33 | 24.30 | 19.77 | 14.97 | 11.17 | 9.77 | 7.33  | 5.63  | 5.43  |\n| Lymphography  | 22.20 | 21.27 | 17.10 | 12.53 | 7.67 | 3.77 | 3.07  | 3.00  | 3.00  |\n| Mammographic  | 27.17 | 23.30  | 20.43  | 14.67  | 11.20  | 3.00  | 3.00  | 3.00  | 3.00  |\n| Mutagenesis  | 3.00 | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  |\n| NCTRER  | 3.00 | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  | 3.00  |\n| Premier League  | 6.93  | 6.93  | 6.93  | 6.93  | 6.87  | 6.93  | 7.13  | 6.87  | 7.00  |\n| Pyrimidine  | 11.40  | 11.40  | 11.40  | 11.40  | 11.27  | 12.20  | 10.87  | 7.13  | 5.13  |\n\n## Involved systems and frameworks\n\n* SML-Bench (used to run all experiments): https://github.com/SmartDataAnalytics/SML-Bench\n* DL-Learner (CELOE and OCEL): https://github.com/SmartDataAnalytics/DL-Learner\n* SParCEL: https://github.com/tcanvn/SParCEL\n* DEAP: https://github.com/DEAP/deap\n* Aleph: https://www.cs.ox.ac.uk/activities/programinduction/Aleph/aleph.html\n* Owlready2: https://github.com/pwin/owlready2 \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdice-group%2Fevolearner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdice-group%2Fevolearner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdice-group%2Fevolearner/lists"}