Knowledge Graph to break the Ice ❄️
This repository contains a social knowledge graph (meetif.ai) for educational purposes. It fetches data from the social event platform Meetup.com and creates a graph containing events, groups, members, etc. This graph is utilized to generate "icebreaker"between people (available ones). It is noteworthy that the actual raw data is not contained in this repository. Please see meetup.com/meetup_api for more information how to communicate with the Meetup.com API.
The first icebreaker suggests events that both persons have been participated in.
What is happening in the background?
If there is no common event, there might be cultural differences that are interesting to talk about.
What is happening in the background?
Yet another option is to check, if you participated in an event with somebody who participated in another event, where also another person participated, who participated in another event, ..., until you reach the other person.
What is happening in the background?
If none of the aforementioned icebreakers can be applied, there are only facts left.
Those include statements like 1000000000000 is the number of bacteria on the surface of the human body
or
250 is the number of Pokémon originally available in Pokémon Gold and Silver before Celebi was added
.
What is happening in the background?
In order to start the Knowledge Graph run the following command:
docker-compose -f "docker-compose.yml" up -d --build
This will start the containerized structure of Meetif.ai which is depicted in the following figure.
- an HTTP request is sent to the backend
- a SPARQL query is raised against the RDF server
- the result of the SPARQL query is returned to the backend ...
- ... and to the frontend
- an HTTP request is sent to the backend
- a SPARQL query is raised against the RDF server which is federated to DBpedia
- the result of the SPARQL query is returned to the backend ...
- ... and to the frontend
- an HTTP request is sent to the backend
- a CYPHER query (including graph traversals) is raised against Neo4j
- the result of the CYPHER query is returned to the backend ...
- ... and to the frontend
- an HTTP request is sent to Numbers API
- the result of the CYPHER query is returned to the frontend
Frameworks | Purpose | Website |
---|---|---|
RDF4J | store RDF and handle RDF I/O | https://rdf4j.org/ |
Neo4j | enabling graph traversals | https://neo4j.com/ |
Spring Boot | Backend | https://spring.io/projects/spring-boot |
React | Frontend | https://reactjs.org/ |
Tool | Purpose | Website |
---|---|---|
Gradle | Build Tool | https://gradle.org/ |
Docker | Handling Infrastructure Components | https://www.docker.com/ |
Language | Purpose | Website |
---|---|---|
Kotlin | Backend | https://kotlinlang.org/ |
Typescript | Frontend | https://www.typescriptlang.org/ |
RML | JSON to RDF transformation | http://rml.io/ |
SPARQL | RDF Querying | https://www.w3.org/TR/sparql11-query/ |
CYPHER | Neo4j Querying | https://neo4j.com/developer/cypher-query-language/ |
Ontology | Mainly used for | Website |
---|---|---|
foaf | Persons | http://xmlns.com/foaf/spec/ |
schema | Events | http://schema.org/ |
dbr | DBPedia Resources | --- |
Yes, there are lot of options to further improve this repository. As it's main purpose is to show the possible combination of building blocks, general best practices of software engineering (e.g. TDD) have been neglected.
You are more than happy to raise issues, refactor, open pull requests and improve this repository 🙂