App for bibliography management

I am thinking of creating a software to manage bibliography and associated documents (especially, in academia). I discovered Solid recently and would like to make the software compatible. For this reason, I am turning to you to get advices on how to make a good start and what to keep in mind.

The main motivation for such a software is to make one’s bibliography more reusable. The only proper (= open source, open data format and a good set of features) bibliography management is Zotero. However, it has three main drawbacks: 1) the data is not stored in a convenient way (each document has its own folder, metadata are in a SQLite database with many foreign keys), 2) its does not scale well with large databases, 3) it is not modular. As an example, no mobile app has been designed for it (or only with short lifetime).

My first goal would be to get a desktop app with local storage. However, I want to make sure that it is possible to link the data to a pod later such that it can easily be reused by web or mobile apps (or even someone else’s desktop app). I am thinking to use Node.js and Electron.

Important points I see are:

  1. Choosing a good Vocabulary. For documents, I have found the DCMI vocabulary, which looks appropriate for my needs in order to store objective metadata. However, I don’t see how to include within subjective metadata (notes, tags, rating, read/unread status, etc.). What’s the best strategy to handle this case? I would say that it is to create a separate vocabulary including the subjective metadata and linking to the objective metadata.
  2. How to store the metadata locally? The FAQ says that Solid cannot be used offline yet, however, the module solid-node-client seems to allow it. I am not really familiar with non-SQL storage: it looks like RDF (using e.g. rdflib) is the preferred way, however, isn’t it possible to use more human-readable format like json, or some serialized form (which seems quite common in Electron apps), or is it a bad idea? Does a RDF database scales well with tens of thousands of data?
  3. Which aspects from Solid (acl, login…) should be implemented from the begin to avoid a painful integration later?

Any idea/comment/feedback is much appreciated!

2 Likes

Welcome, hope you get help with your questions :slight_smile:

While I might not be able to answer your question, I thought I could help you with showing the link you mentioned. Can you try posting it again, or send me via it via PM so I can share it?

1 Like

Thanks for your message! In fact, I could also not send PM. I checked what to do to get a higher trust level and just unlocked PM and adding more links to messages, so I have edited my first message to add the links. In any case, the links were not important for the discussion and mostly there to avoid people to search for it.

Oh, can’t even PM, yeah, that makes it more difficult =p There are other channels, so just let me know if you want me to share the URL :slight_smile:

Yes Solid-node-client can be used offline against a local file system and can also be used to transfer from the local file system to a pod and vice-versa. It can be used with other libraries such as rdflib. RDF is not just a side-product of Solid, it is very core to how Solid works. Coming from a database perspective, it may seem cumbersome but it is much more robust than a database in terms of what you can say with it. There is a JSON-LD serialization of it if that appeals to you more.

4 Likes

Sorry I had forgotten a sentence in my previous message: now I can put emails, so I have added all links back in the first message. Thanks again for your help proposition!

1 Like

@jeffz : Thanks for the advice, then I will have a serious look at RDF first.