HEmile / juggl

An interactive, stylable and expandable graph view for Obsidian. Juggl is designed as an advanced 'local' graph view, where you can juggle all your thoughts with ease.
https://juggl.io/
GNU General Public License v3.0
643 stars 40 forks source link

Feature to define the neo4j Database #23

Closed StoltHD closed 2 years ago

StoltHD commented 3 years ago

Can you add a feature to type in what database to connect to and port number for the connections?

As it is now the plugin try to connect to the default database, but I have multiple databases on my system, and the default one is not the one I wish to use for this...

That way it would also be possible to use different neo4j databases for different vaults

Second thing, that's more of a question in regard to your comment in your roadmap about the installation of nei4j desktop...

HEmile commented 3 years ago

Hi! These are good questions. I'll definitely add the ability to customize at least the port at which bolt listens. Note though that it can already be used for multiple vaults (there is a property on each node that categorizes it).

As for your second question: I think that's only possible for Java? The plan is to let people choose between a Neo4j datastore for advanced usage and querying, and a data store from within Obsidian that doesn't implement advanced functionality. That way, people won't have to install anything but the plugin. I already removed the Python dependency as well.

StoltHD commented 3 years ago

That would be great...

I hope you also can figure out how to use cytoscape.js and hope it is more responsive than vis.js (maybe it's the Obsidian GUI that's make the graph little responsive when rendering a few thousand Nodes...

Also hope you can implement using cluster on properties i.e a YAML key like "Country:" or "Type:" Also hope that it will be possible to use a YAML key like "Title:" or "Name:" as the Node Label...

But first and second impression is extremely positive... thanks :-)

HEmile commented 3 years ago

Thanks for the feedback!

rendering a few thousand Nodes...

I'm using cytoscape now and haven't tested it for graphs that large, but the goal of this plugin isn't to render a huge amount of nodes, which is also why there is no global graph view like in Obsidian. Rather, it's to provide a view to navigate your knowledge base through. Honestly it's impressive how performant Obsidians graph view is! We'll see how it'll run for larger graphs :)

Also hope you can implement using cluster on properties i.e a YAML key like "Country:" or "Type:"

YAML is already parsed! However, you cannot yet style based on it (will be possible in the next version). Do you mean that Country: would be like a category, on which you could style?

Also hope that it will be possible to use a YAML key like "Title:" or "Name:" as the Node Label...

This will also be possible in the next version!

StoltHD commented 3 years ago

I know it's not for graphs that large, but I am testing Obsidian and your plugin for a historical research project where the goal is to consolidate/merge duplicate notes into one, and nest related notes into a combination of a directed network and a hierarchical... And its fun to see what it can be used for... that no one thought about...

the reason it get to a few thousand notes is because some of my notes contain hundreds of links, and breaking those notes down generate a lot of notes in the view when you expand all the notes...

Most of this research have been done in multiple software, some in Freeplane, some notes has been made in Twine, and others are rows in excel/csv... and some data comes from network graphs software... and some from genealogy software... every single one has it's different formats and "styles", so I am hoping to be able to use markdown, your plugin and some vba and python to get all of it into one neo4j database... and also be able to manipulate the information by writing markdown instead of editing in 3-4-5 different software...

I know this is way out of the scope for both obsidian and your plugin, but at the moment it seems to be just the tool for this... I always think out of the box when I need to get something done... :-)


Clustering is not an important feature, it can be done in other software with a graph export from neo4j, but clustering nodes is a way of creating visual collections, a set of nodes within a "cluster node", where the cluster nodes (in vis.js) could be styled as a normal node...

Don't think to much about it, I'm sure you have a lot of other features on your mind, but it would be a "nice to have" feature if you find an easy way to solve it...

StoltHD commented 3 years ago

You write something about embedded storage...

Have you looked at GunDB, it's a javascript graph database. Here is an article I found: https://medium.com/@ajmeyghani/gundb-a-graph-database-in-javascript-3860a08d873c and here is the repository: https://github.com/amark/gun

I don't know anything about it... but it seems to have a lot of downloads in a month...

Just wanted to give a tips, you can close this now if you like...