Skip to content

EUDAT (http://eudat.eu/) Work Package 9.2: experimenting with graph database on entities across the various services

License

Notifications You must be signed in to change notification settings

pdonorio/irods2graph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data objects mapped to Graph DB

Project for EUDAT (http://eudat.eu/) - Work Package 9.2. Experimenting with graph databases on connecting entities across the different services.

### Models Instance related to B2Safe service

DataObject{Location:'irods://host:port/ZONE/path'} - [:IS_LOCATED_IN] -> Zone
DataObject - [:STORED_IN] -> Resource - [:IS_AVAILABLE_IN] -> Zone
DataObject - [:IS_OWNED_BY] -> Person

DataObject - [:BELONGS_TO] -> Collection [:INSIDE] -> Collection [:IS_PLACED_IN] -> Zone
    Note: Path is computable from Collections walking

DataObject - [:DESCRIBED_BY] -> MetaData
Collection - [:DESCRIBED_BY] -> MetaData
Resource - [:DESCRIBED_BY] -> MetaData

DataObject - [:UNIQUELY_IDENTIFIED_BY] -> PID{EudatChecksum:'xyz'}
    Note: PID is also a Metadata attribute (PID: x/y-z-w)
    but since Checksum is its property it is better handled as a node

DataObject - [:IS_REPLICA_OF{PPID, ROR}] -> DataObject
    Note: PPID = PID of replicated object, computable by query
    Note: ROR is the ancestor, the first element. Should be computable.
    Note: Replica relation is preferable a node instead of property { Replica: 0/1 }

# To be added as model/properties:
# - checksum timestamp (integrity)
# - ACL

These models are mapped as objects inside the python project using the neomodel OGM library

Get started

Initial setup to launch docker containers

cd containers
./restart
# A working client shell will open
./app.py -h
# Show usage of the main app

Now you can choose between a local connection or remote.

Local environment (irods + graphdb + client on the same test machine, e.g. laptop)

bash bootstrap.sh
# You will be prompted for irods password. It's 'mytest'

There will be a first random data creation and insert. It will be followed by conversion to graph. At this point you may open http://localhost/ to use ipython notebooks.

Remote environment (irods server is with real data in production)

Edit 'irodsgraph/bootstrap.sh' to verify if irods data are correct. Then:

bash bootstrap.sh remote
# You will be prompted for your real irods password.
./app.py convert --elements=10
# Port 10 elements from your irods server to the local graph db.

At this point you may:

N.B. localhost may be your server IP (e.g. if you use docker with virtualbox)

About

EUDAT (http://eudat.eu/) Work Package 9.2: experimenting with graph database on entities across the various services

Resources

License

Stars

Watchers

Forks

Packages

No packages published