Skip to content

Conversation

@niklasl
Copy link

@niklasl niklasl commented Dec 2, 2025

This adds definitions of the terms used for basic-encoded RDF 1.2 graphs, as defined in rdf-interop; specifically the class of triple forms and their component subject, predicate, and object properties. These terms are not supposed to be used outside of basic-encoding. Of course, they may be used in axioms and/or queries operating on basic-encoded descriptions.

(TripleForm is proposed as a neutral name suitable for basic encoding without conflicting with propositions in full RDF 1.2 (see w3c/rdf-interop#2). Alternative names might be TripleInterpretation, TripleSense, TripleMeaning.)

Instances of this class are the abstract, atomic entities which have an injective mapping (IT) from triple terms (that denote them), under all interpretations. This includes simple interpretations (even interpretations where triple terms denote themselves), RDFS interpretations (where triple terms denote instances of the class rdfs:Proposition), and extensions thereof.

The added axiom rdfs:Proposition rdfs:subClassOf rdf:TripleForm reflects this, and reflects that RDF 1.2 Basic, while semantically weaker, is compatible with RDF 1.2 specifically when basic-encoded graphs conform to the constraints of basic encoding/decoding. With this axiom, only graphs without materialized RDFS entailments about propositions can be encoded according to the encoding algorithm in rdf-interop. (And the decoding algorithm should be defined with similar conditions.)


Preview | Diff

@niklasl
Copy link
Author

niklasl commented Dec 2, 2025

Note that it is already the case, and should be made clear in rdf-interop, that RDF 1.2 basic graphs can only be cleanly encoded and decoded from/to full RDF 1.2 under simple entailment. This is because if basic-decoding a graph interpreted under RDFS entailment (in some finite manner), "dangling" blank nodes would remain in the result, since rdf:reifies has an rdfs:range of rdfs:Proposition, so the blank nodes denoting triple forms that are reified (the common case) are already entailed to be of type rdfs:Proposition. (Conversely, for basic-encoding graphs, the rdfs14 entailment pattern would present a similar problem, since all triple terms denote entities of type rdfs:Proposition under RDFS entailment.)

Copy link
Member

@ektrah ektrah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The terms should also be added to the Vocabulary Registry so that readers have a single place where they can find the full list of all rdf: and rdfs: terms (with references to the defining specifications).

ns/rdf.ttl Outdated
rdfs:isDefinedBy <http://www.w3.org/1999/02/22-rdf-syntax-ns#> ;
rdfs:seeAlso <https://www.w3.org/TR/json-ld11/#the-rdf-compoundliteral-class-and-the-rdf-language-and-rdf-direction-properties> .

rdf:TripleForm a rdfs:Class ;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Triple form" isn't terminology in RDF concepts (Should it be?)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should probably not be? We're seeking a name to use for the entity described in a basic encoding (under simple entailment). See w3c/rdf-interop#2 for details.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then rdfs:isDefinedBy <https://www.w3.org/TR/rdf-interop/> because that defines the encoding.

RDF Concepts only says "RDF 1.2 basic is RDF 1.2 without triple terms".

At least, the comment (or maybe :description due to length) should say this is for interop.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These additions follow the pattern above in this file, for rdf:CompoundLiteral etc., where rdfs:isDefinedBy references the namespace and rdfs:seeAlso the relevant spec or section thereof. Extending the comments or adding dc:description too all of these sounds useful.

(This is similar to the discussion for versions added to sparql-ns.ttl. I suggested dc:conformsTo for the versions; does that appear more correct here too, for the terms themselves?)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's the lack of indication of the intended use that concerns me.

<<( :s :p :o )>> a rdf:TripleForm .

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afs I understand; that is very important! I'll wait for some more feedback (on the description of this PR and/or w3c/rdf-interop#2) and can work more detail into the definitions based on that. Meanwhile, I'll convert this PR to draft state.

@niklasl
Copy link
Author

niklasl commented Dec 2, 2025

The terms should also be added to the Vocabulary Registry so that readers have a single place where they can find the full list of all rdf: and rdfs: terms (with references to the defining specifications).

Definitely; good point! Once we have settled on the terms (and perhaps have references in rdf-interop to point to), I'll update this PR accordingly.

and clarify that the terms defined for proposition forms are reserved
for basic encoding of propositions.
to what is in the RDF document (ns/rdfs.ttl)
@niklasl
Copy link
Author

niklasl commented Dec 5, 2025

I've made modifications to track the the emerging consensus in w3c/rdf-interop#2, and added the terms to the vocabulary registry (they need an RDF-INTEROP to reference, which I think is part of publishing that document). I also updated the description of rdfs:Proposition in the HTML to reflect what's in ns/rdfs.ttl.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants