/meetif.ai

🥶👫🕸Social Knowledge Graph based on data from meetup.com to generate conversation opening iceabreakers (based on RDF(S), RML, Neo4j & other Technologies)

Primary LanguageTypeScript

Meetif.ai

Knowledge Graph to break the Ice ❄️

What is Meetif.ai about?

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.

What "Icebreaker" are available?

Icebreaker 1 - Common Events 🎫

The first icebreaker suggests events that both persons have been participated in.

What is happening in the background?

Icebreaker 2 - Cultural Differences 👽

If there is no common event, there might be cultural differences that are interesting to talk about.

What is happening in the background?

Icebreaker 3 - friend of a friend of a friend ... 👫👫👫

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?

Icebreaker 4 - Facts! 🧠

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?

Technical Background

How to start Meetif.ai?

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.

Icebreker - behind the scenes

Icebreaker I

  1. an HTTP request is sent to the backend
  2. a SPARQL query is raised against the RDF server
  3. the result of the SPARQL query is returned to the backend ...
  4. ... and to the frontend

Icebreaker II

  1. an HTTP request is sent to the backend
  2. a SPARQL query is raised against the RDF server which is federated to DBpedia
  3. the result of the SPARQL query is returned to the backend ...
  4. ... and to the frontend

Icebreaker III

  1. an HTTP request is sent to the backend
  2. a CYPHER query (including graph traversals) is raised against Neo4j
  3. the result of the CYPHER query is returned to the backend ...
  4. ... and to the frontend

Icebreaker IV

  1. an HTTP request is sent to Numbers API
  2. the result of the CYPHER query is returned to the frontend

Knowledge Graphs

Frameworks

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/

Infrastructure

Tool Purpose Website
Gradle Build Tool https://gradle.org/
Docker Handling Infrastructure Components https://www.docker.com/

(Programming) Languages

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/

Utilized Vocabularies

Ontology Mainly used for Website
foaf Persons http://xmlns.com/foaf/spec/
schema Events http://schema.org/
dbr DBPedia Resources ---

How to contribute

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 🙂