# Bookmarking Application

**URL:** <https://forum.solidproject.org/t/bookmarking-application/192>\
**Category:** Ideas for Solid Apps\
**Created:** [October 24, 2018, 7:07pm UTC](https://forum.solidproject.org/t/bookmarking-application/192 "2018-10-24T19:07:56Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kidehen](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/kidehen/32/42_2.png) [@kidehen](https://forum.solidproject.org/u/kidehen)\
**Post date:** [October 24, 2018, 7:07pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/1 "2018-10-24T19:07:56Z")

</div>

[Markbook.org](https://markbook.org) by [Melvin Carvalho](https://melvincarvalho.com/#me) is a bookmarking app developed using the Solid Framework.

 ![01%20PM](https://europe1.discourse-cdn.com/flex017/uploads/solidproject/original/1X/a6e996faa37bfe9e03d50b21c8505096e9bbf9b9.jpeg)

**Usage Guide**

1. Goto [https://markbook.org](https://markbook.org)
2. Goto _Help_ – follow the setup guide regarding your publicTypeIndex setup
3. Go to _About_ → _Recent Bookmarks_ , and authenticate when prompted (using any service-icon, your WebID, etc.) – Live Refresh (hot cache – authenticated WebIDs only)
4. Login and Create your own bookmarks

**How it works**  
Fundamental to any Solid App is the ability to harness the data discovery and exploration prowess of a Semantic Web of Linked Data courtesy of your WebID-Profile document (de-referenced via your WebID) as the launch-point.

Here are the steps:

1. Login – this is where WebID authentication happens via identity claims (your credentials) lookup and verification
2. Preferences establishment – dynamically determining data storage preferences
3. Authorization – passing ACL tests as the first step to performing actua read-write operations

All of the above happens via a [Single Page Application (SPA)](http://dbpedia.org/resource/Single-page_application) that delivers and initializes Javascript code wthin the [Cross-Origin Resource Sharing (CORS)](https://fetch.spec.whatwg.org/#http-cors-protocol) sandbox imposed by your Web Browser.

**Data Generated**

1. [Bookmarks in my Pod](https://kidehen3.solid.openlinksw.com:8444/public/bookmarks.ttl)
2. Looking at [Bookmarks from my Pod via URIBurner Linked Data Browser](http://linkeddata.uriburner.com/about/html/https/kidehen3.solid.openlinksw.com:8444/public/bookmarks.ttl)
3. Looking at [Bookmarks from my Pod via URIBurner Faceted Browser](http://linkeddata.uriburner.com/describe/?uri=https%3A%2F%2Fkidehen3.solid.openlinksw.com%3A8444%2Fpublic%2Fbookmarks.ttl)
4. Looking at some basic [Bookmark Analytics via URIBurner Faceted Browser](http://linkeddata.uriburner.com/fct/facet.vsp?qxml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20%3F%3E%3Cquery%20inference%3D%22%22%20invfp%3D%22IFP_OFF%22%20same-as%3D%22SAME_AS_OFF%22%20view3%3D%22%22%20s-term%3D%22%22%20c-term%3D%22%22%20agg%3D%22%22%3E%3Cclass%20iri%3D%22http%3A%2F%2Fwww.w3.org%2F2002%2F01%2Fbookmark%23Bookmark%22%20%2F%3E%3Cproperty%20iri%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2Fcreated%22%20%2F%3E%3Cproperty%20iri%3D%22http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2Fmaker%22%3E%3Cview%20type%3D%22list-count%22%20limit%3D%2220%22%20offset%3D%220%22%20%2F%3E%3C%2Fproperty%3E%3C%2Fquery%3E)
5. [Bookmarks using a SPARQL Query scoped to RWWCrew Group Members](http://linkeddata.uriburner.com/sparql?default-graph-uri=&query=DEFINE+input%3Asame-as+%22yes%22%0D%0ADEFINE+input%3Agrab-all+%22yes%22%0D%0ADEFINE+get%3Arefresh+%221%22%0D%0A%0D%0APREFIX+solid%3A+%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fsolid%2Fterms%23%3E+%0D%0APREFIX+bookmark%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F01%2Fbookmark%23%3E%0D%0APREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E+%0D%0APREFIX+ldp%3A+%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fldp%23%3E+%0D%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E+%0D%0APREFIX+group%3A+%3Chttps%3A%2F%2Fkidehen3.solid.openlinksw.com%3A8444%2Fpublic%2Frww-crew-group.ttl%23%3E+%0D%0APREFIX+vcard%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2006%2Fvcard%2Fns%23%3E+%0D%0A%0D%0ASELECT+DISTINCT+%3Fdate+%3Ftitle+%3Furi+%3Fmaker%0D%0AWHERE+%7B%0D%0A%0D%0A%09%09+%0D%0A%09%09+%09%09group%3ARWWCrew+vcard%3AhasMember+%3Fmember+.%0D%0A%09%09%09%09%09%3Fmember%0D%0A%09%09+++%09%09solid%3ApublicTypeIndex+%3FtypeIndex+.%0D%0A%09%09%09%09%3FtypeIndex+dcterms%3Areferences+%3Fbookmark+.%0D%0A%09%09%09%09%3Fbookmark+solid%3Ainstance+%3FbookmarksCollection+.%0D%0A++++++++++++++++%3FbookmarksCollection+dcterms%3Areferences+%3FbookmarkedItem+.%0D%0A+++%09%09%09%09%3FbookmarkedItem+dcterms%3Atitle+%3Ftitle+%3B%0D%0A%09%09%09%09%09++%09%09%09dcterms%3Acreated+%3Fdate+%3B%0D%0A%09%09%09%09%09++%09%09++%09bookmark%3Arecalls+%3Furi+%3B%0D%0A%09%09%09%09%09%09%09%09foaf%3Amaker+%3Fmaker+.++%0D%0A%09%09%0D%0A%09%09+%0D%0A++%7D%0D%0AORDER+BY+DESC%28%3Fdate%29+&should-sponge=&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000000) – this is a more flexible query than the original what was scoped to only two WebIDs (privileged user query)
6. [Variant of Query for Public use](http://linkeddata.uriburner.com/sparql?default-graph-uri=&query=%23+DEFINE+input%3Asame-as+%22yes%22%0D%0A%23+DEFINE+input%3Agrab-all+%22yes%22%0D%0A%23+DEFINE+get%3Arefresh+%221%22%0D%0A%0D%0APREFIX+solid%3A+%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fsolid%2Fterms%23%3E+%0D%0APREFIX+bookmark%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F01%2Fbookmark%23%3E%0D%0APREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E+%0D%0APREFIX+ldp%3A+%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fldp%23%3E+%0D%0APREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E+%0D%0APREFIX+group%3A+%3Chttps%3A%2F%2Fkidehen3.solid.openlinksw.com%3A8444%2Fpublic%2Frww-crew-group.ttl%23%3E+%0D%0APREFIX+vcard%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2006%2Fvcard%2Fns%23%3E+%0D%0A%0D%0ASELECT+DISTINCT+%3Fdate+%3Ftitle+%3Furi+%3Fmaker%0D%0AWHERE+%7B%0D%0A%0D%0A%09%09+%0D%0A%09%09+%09%09group%3ARWWCrew+vcard%3AhasMember+%3Fmember+.%0D%0A%09%09%09%09%09%3Fmember%0D%0A%09%09+++%09%09solid%3ApublicTypeIndex+%3FtypeIndex+.%0D%0A%09%09%09%09%3FtypeIndex+dcterms%3Areferences+%3Fbookmark+.%0D%0A%09%09%09%09%3Fbookmark+solid%3Ainstance+%3FbookmarksCollection+.%0D%0A++++++++++++++++%3FbookmarksCollection+dcterms%3Areferences+%3FbookmarkedItem+.%0D%0A+++%09%09%09%09%3FbookmarkedItem+dcterms%3Atitle+%3Ftitle+%3B%0D%0A%09%09%09%09%09++%09%09%09dcterms%3Acreated+%3Fdate+%3B%0D%0A%09%09%09%09%09++%09%09++%09bookmark%3Arecalls+%3Furi+%3B%0D%0A%09%09%09%09%09%09%09%09foaf%3Amaker+%3Fmaker+.++%0D%0A%09%09%0D%0A%09%09+%0D%0A++%7D%0D%0AORDER+BY+DESC%28%3Fdate%29+&should-sponge=&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000000) – i.e., from cache
7. [Bookmarks dashboard seeded from the Social Network constructed from objects of a foaf:knows entity relationship type](http://tinyurl.com/ybv8cg85) (relation) i.e., bookmarkers known to a person identified by the seed WebID will have their bookmarks listed in the Markbook app’s dashboard (Privileged)
8. [Bookmarks dashboard seeded from the Social Network constructed from objects of a foaf:knows entity relationship type (relation)](http://tinyurl.com/y8eto5cv) i.e., bookmarkers known to a person identified by the seed WebID will have their bookmarks list ed in the Markbook app’s dashboard (Public)
9. [SPARQL Query Definition for Bookmarks dashboard seeded from the Social Network constructed from objects of a foaf:knows entity relationship type (relation)](http://tinyurl.com/y97qkqnc) i.e., bookmarkers known to a person identified by the seed WebID will have their bookmarks listed in the Markbook app’s dashboard

**Application Characteristics**

1. Identity, Identification, Authentication, Authorization, and Storage are loosely-coupled
2. Single-Page Application Deployment
3. Business Model Enforcement via WebACLs and SPARQL Query Page generated via [URIBurner Linked Data Transformation Service](http://linkeddata.uriburner.com) – cache refresh is a privilege only offered to authenticated users i.e., the public can only read from static cache

**Related**

1. [Tweet about Bookmark App](https://twitter.com/kidehen/status/1055097473729990658)
2. [Recent Bookmarks](http://tinyurl.com/y6v66ptk) – Includes Cache Refresh (for Authenticated User Identities)
3. [Recent Bookmarks Cache Only](http://tinyurl.com/y9me7kxj) – (for Public)
4. [Github Issue Tracking Page for MarkBook App](https://github.com/mark-book/markbook/issues) – place to register issues you encounter
5. [SPARQL Query that includes pragmas for owl:sameAs reasoning and inference](https://tinyurl.com/yatdzohc) (i.e., data smushing/merging based on multiple WebIDs that identify the same person) – this an ACL-protected URI that contrains functionality privileges to authenticated identities

---

<div class="post-metadata">

**Author:** ![TallTed](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/tallted/32/4426_2.png) [@TallTed](https://forum.solidproject.org/u/TallTed)\
**Post date:** [October 24, 2018, 7:44pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/2 "2018-10-24T19:44:21Z")

</div>

Note that [http://markbook.org](http://markbook.org) fails. Requires https – [https://markbook.org](https://markbook.org)

> 1. Look at Recent Bookmarks – Live Refresh (hot cache – authenticated WebIDs only)

– is very cryptic.

Maybe –

1. Go to _About_ → _Recent Bookmarks_, and authenticate when prompted (using any service-icon, your WebID, etc.)

---

<div class="post-metadata">

**Author:** ![kidehen](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/kidehen/32/42_2.png) [@kidehen](https://forum.solidproject.org/u/kidehen)\
**Post date:** [October 24, 2018, 7:51pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/3 "2018-10-24T19:51:39Z")

</div>

Fixed the https: issue.  
Applied step 2 reword tweak.

---

<div class="post-metadata">

**Author:** ![tmciver](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/tmciver/32/657_2.png) [@tmciver](https://forum.solidproject.org/u/tmciver)\
**Post date:** [January 31, 2019, 2:55pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/4 "2019-01-31T14:55:24Z")

</div>

It looks like there are no instructions about setting up a `publicTypeIndex` when going to _Help_. Can someone tell me where those instructions have gone?

---

<div class="post-metadata">

**Author:** ![aveltens](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/aveltens/32/3987_2.png) [@aveltens](https://forum.solidproject.org/u/aveltens)\
**Post date:** [January 31, 2019, 8:05pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/5 "2019-01-31T20:05:16Z")

</div>

The publicTypeIndex should be set up automatically by [markbook.org](http://markbook.org) if it is missing

---

<div class="post-metadata">

**Author:** ![markjspivey](https://avatars.discourse-cdn.com/v4/letter/m/82dd89/32.png) [@markjspivey](https://forum.solidproject.org/u/markjspivey)\
**Post date:** [August 25, 2020, 9:29pm UTC](https://forum.solidproject.org/t/bookmarking-application/192/6 "2020-08-25T21:29:42Z")

</div>

Is this still active anywhere, either the live demo app or the codebase ?

The links were broken for me …

---

<div class="post-metadata">

**Author:** ![happybeing](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/happybeing/32/59_2.png) [@happybeing](https://forum.solidproject.org/u/happybeing)\
**Post date:** [August 26, 2020, 9:05am UTC](https://forum.solidproject.org/t/bookmarking-application/192/7 "2020-08-26T09:05:44Z")

</div>

This appears to be the code repo:

> **[melvincarvalho/solid-bookmark](https://github.com/melvincarvalho/solid-bookmark)**
>
> solid bookmarks. Contribute to melvincarvalho/solid-bookmark development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![julien\_leicher](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/julien_leicher/32/1961_2.png) [@julien\_leicher](https://forum.solidproject.org/u/julien_leicher)\
**Post date:** [August 26, 2020, 10:14am UTC](https://forum.solidproject.org/t/bookmarking-application/192/8 "2020-08-26T10:14:20Z")

</div>

Or this one [https://github.com/mark-book/markbook](https://github.com/mark-book/markbook)? Which was mentionned for github issues.
