All Projects → sylhare → family-tree

sylhare / family-tree

Licence: other
Family tree made with neo4j

Projects that are alternatives of or similar to family-tree

d3js-neo4j-example
Some of D3.js v5 example pages visualize the result from Neo4j
Stars: ✭ 37 (+5.71%)
Mutual labels:  neo4j, d3js, d3-visualization
flask-react-d3-celery
A full-stack dockerized web application to visualize Formula 1 race statistics from 2016 to present, with a Python Flask server and a React front-end with d3.js as data visualization tool.
Stars: ✭ 20 (-42.86%)
Mutual labels:  d3js, d3-visualization
Neo4jd3
Neo4j graph visualization using D3.js
Stars: ✭ 843 (+2308.57%)
Mutual labels:  neo4j, d3js
graphPlayground
Create graphs by adding your vertices and edges and see them react!! 🎨
Stars: ✭ 32 (-8.57%)
Mutual labels:  d3js, d3-visualization
billboard
🎤 Lyrics/associated NLP data for Billboard's Top 100, 1950-2015.
Stars: ✭ 53 (+51.43%)
Mutual labels:  d3js, d3-visualization
d3js
Experiments with D3.js
Stars: ✭ 17 (-51.43%)
Mutual labels:  d3js, d3-visualization
pheno4j
Pheno4j: a graph based HPO to NGS database
Stars: ✭ 31 (-11.43%)
Mutual labels:  neo4j
nuxt
Nuxt 3 and Vue 3 client for genealogy project. Family tree and genealogy data processing website software client.
Stars: ✭ 97 (+177.14%)
Mutual labels:  family-tree
d3js-threejs-integration
D3js - threejs examples
Stars: ✭ 17 (-51.43%)
Mutual labels:  d3js
InteractiveGraph-neo4j
a graph server serves backend neo4j, virtosuo as an InteractiveGraph
Stars: ✭ 102 (+191.43%)
Mutual labels:  neo4j
ged2site
Create a family tree website from a Gedcom file
Stars: ✭ 25 (-28.57%)
Mutual labels:  family-tree
d3-brush-multiple
This is an implementation of multiple brushes in D3js version 4.
Stars: ✭ 17 (-51.43%)
Mutual labels:  d3js
D3Fire
Power your D3 visualizations with data from Firebase
Stars: ✭ 31 (-11.43%)
Mutual labels:  d3js
spuf-314
a Web Application prototype for public transportation, serving a RESTful API to find Stations, Bus, Metro and Tramway's Lines, while also computing the best multimodal path between two stations or addresses
Stars: ✭ 22 (-37.14%)
Mutual labels:  neo4j
Vuesalize
Component library dedicated to simplifying interactive visualization building in Vue.js.
Stars: ✭ 24 (-31.43%)
Mutual labels:  d3js
tw-family-names
台灣姓氏分佈地圖 Taiwan Family Name Map
Stars: ✭ 36 (+2.86%)
Mutual labels:  d3js
django-test-addons
Testing support for different database system like Mongo, Redis, Neo4j, Memcache, Django Rest Framework for django
Stars: ✭ 20 (-42.86%)
Mutual labels:  neo4j
weltschmerz
Weltschmerz by age - "I am X years old and... [Google autocomplete]"
Stars: ✭ 23 (-34.29%)
Mutual labels:  d3js
neo4j.cr
Pure-Crystal implementation of Neo4j's Bolt protocol
Stars: ✭ 29 (-17.14%)
Mutual labels:  neo4j
datatheque.com
a data science blog
Stars: ✭ 12 (-65.71%)
Mutual labels:  neo4j

Family Tree

Model

Here is a simple graph model straight from the neo4j website

We'll start with something then make it evolve.

//Creates 2 Person type node Anna and Dany in a UNION type relationship with a Union node
CREATE p =(a:Person { name:'Anna' })-[:UNION]->(:Union { name:'Wedding' })<-[:UNION]-(b:Person { name: 'Dany' })
RETURN p

// Creates the WIFE and HUSBAND relationship between Anna and Danny
MATCH (a:Person),(b:Person)
WHERE a.name = 'Anna' AND b.name = 'Dany'
CREATE (a)-[:WIFE]->(b)
CREATE (b)-[:HUSBAND]->(a)
RETURN a, b

// Find the :Union node named Wedding or using any with its ID (81 in my case) and setting the new gedcom property at U11
MATCH (a:Union)
WHERE id(a)=81 OR a.name = 'Wedding'
SET a.gedcom = 'U11'
RETURN a

// Finding the :Union node with gedcom at U11 and create a new Person node named Tim related to it as a CHILD
MATCH (a:Union)
WHERE a.gedcom = 'U11'
CREATE (:Person {name:"Tim"})-[:CHILD]->(a)
RETURN a


// Find that created note with a CHILD relation, finds any UNION in the  relation and add a SON relationship from the node Tim to them.
MATCH (a:Person { name:'Tim' })-[:CHILD]->(:Union { gedcom:'U11' })
MATCH (b:Person)-[:UNION]->(:Union { gedcom:'U11' })
CREATE (a)-[:SON]->(b)
RETURN a

Neo4j

Presentation

Neo4j platform has a built-in graph database. SQL databases are like arrays, the graph database is based from node and relationships. Once installed it works similarly to any database.

Neo4j is based on 3 component:

  • Nodes identified by labels
  • Properties identified by property-names
  • Relations identified by relation-types

Neo4j's website is full of documentation to learn more about it.

You can try it in the neo4j sandbox directly from their site. (Can be a bit slow)

Installation

Neo4j is free and can be downloaded directly from their website.

Checkout neo4j's installation doc.

You might need to download a JVM (Open JDK or Oracle JDK).

  • Linux, the Open JDK v8
  sudo apt-get install openjdk-8-jre
  • On windows, you can donwload the Oracle JDK v8

Cypher

Cypher is the querie language for neo4j, it is an SQL-inspired language for describing patterns in graphs visually using an ascii-art syntax.

You can try the movie example by typing :play movie graph or you can follow this simple gist.

Nodes

Creating a node labeled Person with a property named name of value Joe.

CREATE (:Person {name:"Jerry"})

Nodes are surrounded by ( ) as a circle.

Relationships

Creating two different nodes like before but this time linking one to the other with a relation, typed as KNOW and with a property named date.

CREATE (:Person {name:'Rick'})-[:KNOW]->(:Morty {name: "Morty", dimension: "C-137"})
CREATE (:Person {name:'Rick'})-[:KNOW {date:'2015-06-23'}]->(:Person {name: "Beth"})

Relation are arrows -->. The relationship is only one-sided

Query sample

Queries can use a lot of special keywords and can be tweaked. Here is a simple one.

MATCH (:Person)-[:KNOW]->(n:Morty)
WHERE n.dimention = "C-137" 
RETURN n

The n here define the node in the query, it is optional, here creating advance functions to display nodes.

APOC

APOC "Awesome Procedures On Cypher" is a library of procedure to help with visualisation and data manipulation on Neo4j.

To install Apoc:

  • Download the latest release. And put it in the Neo4j plugin folder which place may differ:
    • C:\Users\username\AppData\Roaming\Neo4j Desktop\Application\neo4jDatabases\database-xxxx\installation-<version>\plugins
    • C:\Program Files\Neo4j CE <version>\plugins
  • Install the latest release from 'Neo4j Desktop' by going on a Database then [ 🔧 Manage ] then plugin > install.
  • Get the package with npm npm install apoc

Development

Neo4j Driver

There are multiple options to interac with Neo4j.

With python 3, you can use the pyhton driver with py2neo a client library and toolkit to communicate with neo4j.

To install py2neo

pip install py2neo

Web Framework

Neo4j works with a REST API, which can be used to send cypher queries and receive data.

Py2neo in the example works with bottle which is a micro web-framework to interac with the Neo4j database via its Rest API.

pip install bottle

The librairy is also stored under Bottle.py for the example.

Virtualenv

Virtualenv is a tool to create isolated Python environments. Virtualenv creates a folder which contains all the necessary executables to use the packages that a Python project would need.

pip install virtualenv

Checkout the example movie py2neo from neo4j. On windows to activate the cypher app rather than the (Linux) instruction from the example:

cypher-app\Scripts\activate

Visualisation

The default neo4j browser allows to display nicely the results of a Cypher query with the built-in D3.js librairy. However there are multiple options that can be used to display the graph database available on neo4j.

You can use the minified 3D.js library with:

 <script src="https://d3js.org/d3.v4.min.js"></script>

Gedcom

GEDCOM (an acronym standing for Genealogical Data Communication) is an open de facto specification for exchanging genealogical data between different genealogy software.

There are some gedcom parser in the resources folder.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].