Match is a monorepo showcasing a collection of Erlang applications built around the SERESYE (Swarm oriented ERlang Expert SYstem Engine). It demonstrates the capabilities of using a Rete-based rules engine in Erlang for various tasks, including semantic data processing and job matching.
This project is built using on
.
The match repository serves as a central hub for several interconnected Erlang applications:
-
SERESYE (
apps/seresye): The core of the project, SERESYE is a Rete-based rules engine written in Erlang. It allows users to define a knowledge base (facts) and production rules to infer new knowledge and trigger actions. For detailed information, refer to the SERESYE README. -
Semantic Relatives (
apps/semantic_relatives): This application demonstrates the use of SERESYE in conjunction with a Semantic Web Toolkit. It processes semantic web data (ontologies) to understand relationships (e.g., family trees) and stores this information in a Mnesia database. See the Semantic Relatives README for more. -
Job Match (
apps/job_match): A practical application showcasing SERESYE's capabilities. It decodes job posting and applicant ontologies, builds a knowledge base, and uses a rule engine to match suitable applicants to job openings, evaluating them based on various criteria. Explore the Job Match README for specifics. -
Match (
apps/match): This application appears to be the umbrella application for the release, tying together the other components.
Ensure you have Erlang/OTP installed (developed with OTP 23). You will also need Rebar3 to build the project.
- Erlang/OTP: Installation Guide
- Rebar3: Installation Guide
To compile the entire project and all its applications:
rebar3 compileTo open an Erlang shell with the project's applications loaded:
rebar3 shellEach application within the apps/ directory has its own specific usage instructions and examples in its respective README.md file.
A primary example to explore is the Job Match application:
- Build and start the shell:
rebar3 compile rebar3 shell
- From the Erlang shell, start the
job_matchapplication:1> job_match:start(). ok
- You can then query the
job_matchengine. For example, to retrieve all facts in its knowledge base:Refer to the Job Match README for more detailed query examples.2> seresye_srv:get_kb(job_match). [{match,<<"JPosting22">>,<<"JSeeker126">>,... % and many more
Similarly, you can explore the semantic_relatives application by following the instructions in its README.
(The original README mentioned a diagram. If a diagram exists or can be generated, it would be beneficial to include it here, perhaps as an image or a link to a generated document.)
[//]: # (Consider adding a project architecture diagram if available)
Contributions are welcome! Please feel free to fork the repository, make changes, and submit pull requests. If you find any issues or have suggestions for improvements, please open an issue on GitHub.
Distributed under the Apache License 2.0. See LICENSE for more information.
Miloud Eloumri - LinkedIn - [email protected]
Project Link: https://github.com/MiloudEloumri/match
- ERESYE project (inspiration for SERESYE)
- Semantic Web ToolKit for Erlang
- Rebar3
- Erlang/OTP