Hi there! I’m a french software developer for almost 8 years and I’ve been trying to get my head around Linked Data and SOLID recently. I’ve read a lot of specs and think it’s time to write some apps to get a feel of how it works.
So, here I am, trying to build a simple bookmark app (something like https://github.com/shaarli/Shaarli/) which should store links in my pod. I guess the first step is to define what vocab I should use for my simple needs :
Store a bookmark URL
Add a description
Add some tags to categorize a bookmark
And this is where I’m stuck. I found some bookmark related vocab at https://lov.linkeddata.es/dataset/lov/terms?q=bookmark but don’t really know where to start from here… How I should attach some tags to a bookmark for example.
Can someone give me a help? I’m not very familiar with the semantic web but I guess this step is really important when developping a new software in the SOLID ecosystem.
Both Poddit and Markbook use the same data model, primarily based on the Bookmark vocabulary, and a dc:title for the description. Neither app supports tags, I think, so you can pick an appropriate vocab for that yourself
Looks like I can represent a bookmark with the class nfo:Bookmark, a description with nie:title and tags as nie:keyword so it makes sense to me, am I right?
I’m pretty confident there is not a single correct vocab to use but this one looks really good to me.
When you use it, your app won’t be interoperable with Markbook and Poddit, but if it is actually a better fit, one might argue for it. Those things are still in motion and there is no “Solid Bookmarking Spec” yet.
Yep, I totally understand this. But can I use multiple class to describe a thing therefore making it interoperable?
I know I can use multiple predicates on the same subject to represent the same property to make it more useful for other apps but don’t know if the same applies for classes yet.
You can do this, but it will lead to one-way interoperability - bookmarks created by you will be visible in Poddit and Markbook, but not vice versa (depending on which ontology you use as your source of truth). So it’s not exactly clear what the advantage is, compared to consolidating on a single ontology.
That said, interoperability is a voluntary action from the app’s point of view, so if you feel that a different ontology suits your needs better, you can just choose to mark interoperability as a non-goal.
I would just choose one that you think best suits your use case. If Markbook or Poddit ever get updated to also support tags, they can just choose to use what you’re using.
As you can see you got a relative freedom and things can move… the best way I think is choose one (or more for compatibility) and to communicate your choice in the help section of your app…
That’s right! I think I get a better understanding now. As a side question, does SOLID supports the LDP-PAGING specs? Because if I’ve got a lot of bookmarks, how should I paginate them? Looking at some github issues, it looks like it doesn’t say it requires the server to implement it but I’m a bit confused.