GivenSharesIndexRDF

RDF wrapper for {podRoot}/solidshare/shares/given_shares.ttl.

Each share is a reified record node so it can carry a creation timestamp:

<#share-…>
rdf:type solidshare:Share ;
solidshare:resource <resourceUri> ;
solidshare:receiver <receiver> ;
acl:mode acl:Read , acl:Append ;
dcterms:created "2026-06-04T12:00:00Z"^^xsd:dateTime .

One record holds every mode granted to a (receiver, resourceUri) pair, so the pair carries a single timestamp. Group receivers keep the marker triple <receiver> rdf:type vcard:Group (shared with the legacy format) to disambiguate a group URI from a WebID.

Legacy reads. Files written by earlier versions stored a share as a bare <receiver> <acl:Read|Append|Write> <resourceUri> triple with no node and no time. getShares still surfaces those (with createdAt = null) so old indexes and ACL-rebuilt indexes keep working; the writer migrates a pair to node form the next time it is touched.

The reflective constructor required by the Solid resource parser is provided.

Constructors

Link copied to clipboard
constructor(identifier: String, contentType: String? = null, quads: List<RdfQuad>? = null, headers: SolidHeaders? = null)

Types

Link copied to clipboard
data class Node(val subject: String, val receiver: ShareReceiver, val resourceUri: String, val modes: Set<ShareMode>, val createdAt: String?, val resourceType: String? = null, val resourceName: String? = null)

One reified solidshare:Share record. subject is the node IRI (the writer targets patch deletes at it); modes are every acl:mode asserted on it; createdAt is the record's dcterms:created, or null if absent. resourceType / resourceName are the record's solidshare:resourceType IRI and dcterms:title, both null on untyped (file/folder) records.

Functions

Link copied to clipboard
fun addQuad(subject: String, predicate: String, obj: String, maxNumber: Int = 1)

Adds a triple whose object is an IRI (or blank node).

Link copied to clipboard
fun addQuadLiteral(subject: String, predicate: String, value: String, datatype: String? = XSD.STRING, language: String? = null, maxNumber: Int = 1)

Adds a triple whose object is a literal.

Link copied to clipboard
fun clearProperties(predicate: String, subject: String = itselfSubject)

Removes every triple with the given predicate for subject.

Link copied to clipboard
open override fun close()
Link copied to clipboard
open override fun describeContents(): Int
Link copied to clipboard
fun ensureType(subject: String, typeIri: String)

Ensures subject carries an rdf:type triple with typeIri, preserving any other type triples already present.

Link copied to clipboard

Returns the object values of every triple with the given predicate, across all subjects.

Link copied to clipboard

Returns the object values of every triple matching the given subject and predicate.

Link copied to clipboard
fun findProperty(predicate: String): String?

Returns the object value of the first triple with the given predicate, or null if none.

Link copied to clipboard
fun findPropertyForSubject(subject: String, predicate: String): String?

Returns the object value of the first triple matching subject and predicate, or null.

Link copied to clipboard

Returns a snapshot copy of all triples held by this resource.

Link copied to clipboard
open override fun getContentType(): String

The media type of the resource representation (the value of its Content-Type).

Link copied to clipboard

The creation time in epoch milliseconds, from this resource's own dcterms:created (then stat:ctime) triple, or null when neither is present.

Link copied to clipboard
open override fun getEntity(): InputStream

Returns the resource representation as a byte stream.

Link copied to clipboard
open override fun getHeaders(): SolidHeaders

The HTTP headers associated with this resource (empty when constructed locally).

Link copied to clipboard
open override fun getIdentifier(): String

The URI that identifies this resource on the pod.

Link copied to clipboard

The last-modified time in epoch milliseconds. Prefers this resource's own dcterms:modified (then stat:mtime) triple and falls back to the Last-Modified header. null when none is present.

Link copied to clipboard

Shares stored in the legacy bare-triple form <receiver> <acl:mode> <resourceUri> (no record node, createdAt = null).

Link copied to clipboard
open override fun getMetadata(): SolidMetadata
Link copied to clipboard
fun getShareNodes(vocab: ShareVocabulary = SolidShareVocabulary): List<GivenSharesIndexRDF.Node>

The reified share records (node form only — excludes any legacy flat rows).

Link copied to clipboard
fun getShares(vocab: ShareVocabulary = SolidShareVocabulary): List<GivenShare>

Every share, one row per (receiver, resourceUri) at the strongest mode: reified records first, then any legacy rows for pairs they don't cover. The several implied acl:modes a grant writes (e.g. Read+Append for "Add") are folded into the single logical level via collapseByReceiver, so a receiver never appears more than once per resource.

Link copied to clipboard
fun getSize(): Long

The size of this resource in bytes (its Content-Length), or 0 when the server did not report one.

Link copied to clipboard
open override fun writeToParcel(dest: Parcel, flags: Int)