Basic Issue 1 - the document

Dear all,

I took on the quest to sort out some basic issues that I see with RDF 
(R=Resource) and Resources as defined by HTTP. This is an effort to 
remove serious limitations that I see with the current way of operating 
Linked Data. I am not saying that it's broken, just that it makes 
serious implementation decisions that cripple REST and HATEOAS. Mainly 
by typing URIs or HTTP resources as "Documents".

One of the basic issues is that HTTP and the Web stopped using a 
"document" model with the introduction of REST (should be between 1996 / 
2000). Resources are "interfaces". RFC 9110 should be the latest: 
https://www.rfc-editor.org/rfc/rfc9110.html

Clarification: this is not about 303 or HR14. It's solely about '#' URIs.

foaf:Document as a superclass of foaf:ProfileDocument  says this: We do 
not (currently) distinguish precisely between physical and electronic 
documents, or between copies of a work and the abstraction those copies 
embody. The relationship between documents and their byte-stream 
representation needs clarification (see |foaf:sha1 
<http://xmlns.com/foaf/0.1/#term_sha1>| for related issues).

Here is an honest question:

If I have http://example.com/res#me that behaves like this:

curl -H "Accept: text/turtle" http://examples.com/res
200 OK
Content-Type: text/turtle
<http://examples.com/res#me> a foaf:Person .

and

curl -H "Accept: application/n-triples" http://examples.com/res
200 OK
Content-Type: application/n-triples
<http://examples.com/res#me> 
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> 
<http://xmlns.com/foaf/0.1/Person> .

I would like to add an rdf:type statement describing 
http://examples.com/res and a statement describing the relation of 
http://examples.com/res to http://examples.com/res#me, so in turtle, I 
would like to add:
<http://examples.com/res> rdf:type ?
<http://examples.com/res> ? <http://examples.com/res#me>
or other direction
<http://examples.com/res#me> ? <http://examples.com/res>


As an extended question, I would again have content negotiation like 
above, but this time Content-Location is used in two different ways:

curl -H "Accept: text/turtle" http://examples.com/res
200 OK
Content-Type: text/turtle
Content-Location: http://examples.com/res.ttl
<http://examples.com/res#me> a foaf:Person .

as well as with a git commit hash.

curl -H "Accept: text/turtle" http://examples.com/res
200 OK
Content-Type: text/turtle
Content-Location: 
http://examples.com/f73dfab067d4b4462aa3a6e9b6075788c52fdd00/res.ttl
<http://examples.com/res#me> a foaf:Person .

The question would be analogous, but in addition clarifying the 
additional relations between res/#me and the Content-Location URI :

<http://examples.com/res> a ? .
<http://examples.com/res> ? <http://examples.com/res.ttl> .
<http://examples.com/res> ? <http://examples.com/res#me> .
<http://examples.com/res.ttl> a ?
<http://examples.com/res#me> ? <http://examples.com/res.ttl> .

and
<http://examples.com/res> a ? .
<http://examples.com/res> ? 
<http://examples.com/f73dfab067d4b4462aa3a6e9b6075788c52fdd00/res.ttl> .
<http://examples.com/res> ? <http://examples.com/res#me> .
<http://examples.com/f73dfab067d4b4462aa3a6e9b6075788c52fdd00/res.ttl> a ?
<http://examples.com/res#me> ? 
<http://examples.com/f73dfab067d4b4462aa3a6e9b6075788c52fdd00/res.ttl> .

It is an honest question as I really don't know where I would actually 
put the foaf:profileDocument. There are several ways to implement it due 
to HTTP Semantics and REST. Many, many more ways than these three in 
fact. HATEAOS should allow to evolve/switch implementations naturally, 
with clients adapting in a generic manner to change, but I also do 
currently not know how this would work in detail.

More issue here:

1. RDF Statements about representations: 
http://examples.com/f73dfab067d4b4462aa3a6e9b6075788c52fdd00/res.ttl is 
also a URI, i.e. an interface with the special case that it is designed 
only to deliver exactly one representation, i.e. the state of the 
resource after the commit. The question would be how to describe the 
representation in RDF, because URI != representation, right?  How would 
I make an RDF Statement referring to the representation not the URI 
delivering the representation?

2. RDF statements about the graph. There seems to be an abstract graph 
and serialized graphs. What would be the URI to use in the subject of an 
RDF statement? Might be http://examples.com/res as the HTTP resource 
here is the graph, right?

3. [solved] Fragment Identifiers: RFC 9110 copied from the URI Generic 
Syntax RFC 3986: "Fragment identifiers allow for indirect identification 
of a secondary resource, independent of the URI scheme, as defined in 
Section 3.5 <https://www.rfc-editor.org/rfc/rfc3986#section-3.5> of [URI 
<https://www.rfc-editor.org/rfc/rfc9110.html#URI>]."  Actually this part 
is crystal clear. The URI minter assigns social meaning to the "#" URI. 
RDF can pick that up to describe it.

A note: I am reading Linked Data Plattform again 
https://www.w3.org/TR/ldp/  However, I really take issue with this 
standard as it introduces yet again more unclear terminology that I can 
neither map well to HTTP Semantics nor to RDF.  I think they are mixing 
everything together:

Link
    A relationship between two resources when one resource
    (representation) refers to the other resource by means of a URI
    [WEBARCH <https://www.w3.org/TR/ldp/#bib-WEBARCH>]. 

Linked Data Platform Resource (LDPR)
    A HTTP resource whose state is represented in any way that conforms
    to the simple lifecycle patterns and conventions in section 4.
    Linked Data Platform Resources <https://www.w3.org/TR/ldp/#ldpr>.

Linked Data Platform RDF Source (LDP-RS)
    An LDPR
    <https://www.w3.org/TR/ldp/#dfn-linked-data-platform-resource> whose
    state is fully represented in RDF, corresponding to an RDF graph.
    See also the term RDF Source
    <http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source> from
    [rdf11-concepts <https://www.w3.org/TR/ldp/#bib-rdf11-concepts>]. 

Linked Data Platform Container (LDPC)
    A LDP-RS representing a collection of linked documents (RDF Document
    <http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-document>
    [rdf11-concepts <https://www.w3.org/TR/ldp/#bib-rdf11-concepts>] or
    information resources [WEBARCH
    <https://www.w3.org/TR/ldp/#bib-WEBARCH>]) that responds to client
    requests for creation, modification, and/or enumeration of its
    linked members and documents, and that conforms to the simple
    lifecycle patterns and conventions in section 5. Linked Data
    Platform Containers <https://www.w3.org/TR/ldp/#ldpc>. 

Where as RDF Document is defined as sth. that would be considered a 
"representation" in HTTP, see 
https://www.w3.org/TR/rdf11-concepts/#rdf-documents

An RDF document is a document that encodes an RDF graph 
<https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph> or RDF dataset 
<https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset> in a concrete 
RDF syntax, such as Turtle [TURTLE 
<https://www.w3.org/TR/rdf11-concepts/#bib-TURTLE>], RDFa [RDFA-PRIMER 
<https://www.w3.org/TR/rdf11-concepts/#bib-RDFA-PRIMER>], JSON-LD 
[JSON-LD <https://www.w3.org/TR/rdf11-concepts/#bib-JSON-LD>], or TriG 
[TRIG <https://www.w3.org/TR/rdf11-concepts/#bib-TRIG>]. RDF documents 
enable the exchange of RDF graphs and RDF datasets between systems.

If you unfold LDPC it becomes an LDP-RS, which is an LDP-R, which is a 
resource in HTTP.  Thus becoming a "Resource in HTTP that represents a 
collection of linked RDF representations or other information resources. 
"  However, information resources in WebArch is congruent to HTTP and 
defines "The distinguishing characteristic of these resources is that 
all of their essential characteristics can be conveyed in a message. We 
identify this set as “information resources.”

I understand how you can build a collection of URIs or a collection of 
messages/representations, but I don't get how you can use a Resource to 
represent a collection of resources. I also wouldn't know how you would 
link RDF Documents (the representation) without URIs.

I really feel like William of Baskerville from the Name of the Rose, 
when reading LDP, which seems to have had the intention to clarify my 
issues above.

Sorry for the long email. I just feel that we really need to solve this 
(practically and with good terminology), then break it down into correct 
ways of implementing WebID for everybody.

All the best,

Sebastian

Received on Monday, 13 November 2023 11:16:00 UTC