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
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:
- check your local graph on web url http://localhost:7777
- open http://localhost/ to use ipython notebooks.
N.B. localhost may be your server IP (e.g. if you use docker with virtualbox)