Description
It seems that public and private type indexes, instead of just indexing resources partition them.
I will describe it based on Type Registration using solid:instanceContainer
predicate.
Let's take snippets from the current draft, I will exchange Bookmark with Photo to work with something more straight forward.
first the public type index https://solid.github.io/type-indexes/#public-type-index
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
@prefix ex: <http://ns.example/#>.
<>
a solid:TypeIndex ;
a solid:ListedDocument.
<#ab09fd> a solid:TypeRegistration;
solid:forClass vcard:AddressBook;
solid:instance </public/contacts/myPublicAddressBook.ttl>.
<#bq1r5e> a solid:TypeRegistration;
solid:forClass ex:Photo;
solid:instanceContainer </public/myPhotos/>.
second the Private Type Index https://solid.github.io/type-indexes/#private-type-index
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
@prefix ex: <http://ns.example/#>.
<>
a solid:TypeIndex ;
a solid:UnlistedDocument.
<#ab09fd> a solid:TypeRegistration;
solid:forClass vcard:AddressBook;
solid:instance </private/contacts/myPrivateAddressBook.ttl>.
<#bq1r5e> a solid:TypeRegistration;
solid:forClass ex:Photo;
solid:instanceContainer </private/myPhotos/>.
Let's imagine adding a cat photo into the private type index (partition). We could get something like /private/myPhotos/garfield
At some point, the resource owner wants to make a public post and just that photo in it, so they decide to change ACL/ACR controlling access to that specific photo and make it public read.
Since type indexes effectively partition, not just index the resources. We would end up with Private Type Index leading to / indexing / containing a public read photo.
Exactly the same situation can happen the other way if the photo was initially made public and created at /public/myPhotos/garfield
. Once the resource owner changes that access policy to that photo, we end up with a mismatch where a Public Type Index leads to / indexes/ contains a private photo.
To avoid those mismatches, the resource owner would have to delete the original resource and create it under a different IRI, which goes against the permanence of IRIs. It also doesn't fit well with access control, which allows simply changing access to any given resource.