I’m looking for either free/open source software, file format, or other lightweight solution, that allows me to express dependencies between arbitrary things. It should then let me see who is dependent on what.

For instance, I want to start recording which accounts I have with different providers. I would like to map out which knows my different email addresses, phone numbers etc. If I change my phone number or email, or move house, this would let me keep track of what to update.

But that’s just an example, ideally I want to support arbitrary dependencies between anything.

I’m currently inclined to use graphviz. However, that’s very visualisation-centric. I would like a way to map out these dependencies in an arbitrary way and then generate graphs as one out of many byproducts.

Example of how this could work in my head:

phone1: +447123456789
phone2: +447987654321
email1: [email protected]
email2: [email protected]
address: 1 Example Street, UK, EX4 4PL

bank:
 - email1
 - phone2
 - address

electricity-provider:
 - address
 - email2

credit-card-company:
 - address
 - phone1
 - email1

Then, I could generate graphs with graph-dependencies email1 or graph-dependencies bank. Or, I could say find-dependencies email and that would print bank, credit-card-company.

Is anyone aware of such a tool, or solved this problem in a different way? Bonus points if it’s packaged already for Debian.

    • ambitiousslab@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      11 days ago

      Thank you! I do not have any experience with graph databases or RDF, so you’ve introduced me to a very fun rabbit hole :)

      On reflection, I think the route I was going down was overkill. I only need to graph small numbers of dependencies (tens or hundreds of objects). Graphviz is probably still best for my use case, moving onto a graph database or similar if I ended up needing to represent thousands of very complex dependencies.

      The main motivation for this was wanting to keep track of all my accounts and the information they have about me in a structured way. I made the mistake of using a few different email providers and phone numbers and trying to segregate everything. That wasn’t worth it and I want to move all of my accounts back to pointing to a single email and phone number. But, I never made complete records of which accounts I have, so I wanted to come up with a good way of documenting that, so that I can be sure when I can stop monitoring / delete old accounts.

      • tomatolung@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        11 days ago

        Glad that helped the decision.

        As someone who does this for privacy, I just end up using a password database to make notes on each provider. It holds the relevant authentication, payment, address, etc data in the notes. I religiously update it when I create something new or have to change. Categories make tracking easier, I.e. payment method = category, same for addresses, etc.

  • expr
    link
    fedilink
    arrow-up
    3
    ·
    11 days ago

    dot is the file for.at used by graphviz, and tbh it seems pretty close to what you’re describing. There’s a number of tools that can consume (and produce) the file format.

    It’s the format I’ve worked with on occasion (though admittedly it was because it was what was produced by other tools).

  • owenfromcanada@lemmy.ca
    link
    fedilink
    arrow-up
    2
    ·
    11 days ago

    Graphviz would have been my first suggestion. What other types of outputs are you looking for?

    My second thought would be some sort of database software. LibreOffice has a MS Access equivalent (Base) where you could keep a table for each type of data, then express relationships. If you’re already comfortable with SQL it might work well, but otherwise might be overkill (though you could get just about any output you’d like from it).

    • ambitiousslab@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      11 days ago

      What other types of outputs are you looking for?

      I think the main outputs I’d like are:

      • Given a “thing”, show me what is dependent on that thing (find-dependers email1 - printing bank, credit-card-company)
      • Given a service provider, show me what things it is dependent on (find-dependencies electricity-provider - printing address, email2)
      • Graph the dependencies of a thing or service provider (graph-dependencies email1 - outputting a graph with bank and credit-card-company pointing to it)

      My second thought would be some sort of database software.

      I agree, a database would be a good fit for these relationships. A bit of investment up front, but the schema should be very simple.

      Graphviz would have been my first suggestion.

      My main worry with graphviz was that I thought I would be stuck with a big graph of everything and unable to filter.

      But, now I’ve found gvpr, and I can see that arbitrarily complex filtering is supported.

      I’m thinking for this use case at least, I should be able to build a big dot file and then have some gvpr scripts that generate graphs just for the dependencies I’m interested in. I should be able to hook into gvpr to do the terminal output too.

      So, long story short, I think I’ll give graphviz a go, and if that fails, a database with some scripts to generate the dot files on the fly. Thank you!

      • owenfromcanada@lemmy.ca
        link
        fedilink
        arrow-up
        2
        ·
        11 days ago

        Awesome!

        For what it’s worth, I got “fancy” with graphviz a while ago. One of the things it can output is SVGs, which can be used in a web browser for interactivity. For example, I set up one graph to highlight all the branches that are connected to a selected node, and I put links to navigate between different graphs. So there’s quite a bit possible there.