AW: voting against use of rdf:ReificationProperty

Hi all,

this example

_:a rdf:object <<( :s2 :p2 :o2 )>> .
_:b rdf:object “William” .

And what Pierre-Antoine during the Thursday call said about data types worried me. I understood that implementations MAY check if 42 is an integer in
ex:resource ex:property "42"^^xsd:integer .

From a user perspective, it would be much more useful if this is not left to the application but would be enforced by the technology itself.

The same is true for the above example: a user wants to assure the types of values allowed for rdf:object.

If this is not backed into RDF 1.2 itself, one could argue to have it in SHACL, extending value type constraint components like sh:nodeKind, e.g. adding to
sh:BlankNode, sh:IRI, sh:Literal sh:BlankNodeOrIRI, sh:BlankNodeOrLiteral, sh:IRIOrLiteral.
a category that would capture <<( :s2 :p2 :o2 )>>.

Best,

Felix


Von: Gregory Williams <greg@evilfunhouse.com>
Datum: Samstag, 31. August 2024 um 22:12
An: William Van Woensel <william.vanwoensel@gmail.com>
Cc: RDF-star WG <public-rdf-star-wg@w3.org>
Betreff: Re: voting against use of rdf:ReificationProperty
Hi William,


On Aug 29, 2024, at 11:30 AM, William Van Woensel <william.vanwoensel@gmail.com> wrote:

Hi Gregory,

Re your question on this during today's meeting. FWIW, my interpretation on the usefulness of ReificationProperty:

(1) Using any property (instead of just rdf:reifies/rdf:asserts) with a triple term object.
Souri mentioned in a prior message<https://lists.w3.org/Archives/Public/public-rdf-star-wg/2024Aug/0147.html> a need to distinguish between the "veracity" of the triples within triple terms; e.g., one is a hypothesis, another is truth; one is asserted, another is not; etc.

I understand the value of using any property. Apologies if my comments on the call suggested otherwise. My ambivalence is about what value is had by entailing `P rdf:type rdf:reificationProperty`. I don’t feel strongly one way or the other about this, but I don’t see much value in doing this, and think it leads in strange directions when you either want to have such use either restrict how P can be used, or alternately have that entailment on properties that are used with both triple- and non-triple-terms (more on this below).

[snip]

One can then have rules, queries, or application logic that assigns some custom semantics to these properties.

I appreciate the flexibility this brings, while still allowing a 1-triple description (e.g., for easy mapping to a DB table). Right now I don't see how it makes it harder to implement RDF-star; it does allow people to shoot themselves in the foot a bit more (well, a lot of things do; this is a typical trade-off) but for that we have ReificationProperty:

I’m hesitant to comment on difficulty of implementing the current RDF-star proposal in general. There are *many* ways RDF systems are implemented, and I think it’s risky to make assumptions about how easy or difficult integrating new features/expressivity is going to be in any given system.

I will say that this approach probably does make it harder for (some) systems that were hoping to implement many-to-one “statements about statements” which we’ve discussed in the past, and which I think was one of the primary motivating ideas in the inputs to this WG. However, it seems pretty clear we’ve moved on from that, so it’s probably not germane to the ongoing discussion.

- Inferring that a property with a triple term object has type ReificationProperty.
Looking at the inferences of your statements, rdf:hypothesis or rdf:truth (from the example above) will show up as instances of ReificationProperty. This may or may not be in line with your expectations. Someone may have wrongfully used foaf:name as a reification property; it will show up as such in your inferences, thus "flagging" the issue. You may even have explicit OWL constructs, rules, or application code in place to raise inconsistencies in those cases. As Enrico said, these inferences simply explicate what is already implicit in your data; but this explication can be quite useful.

I think an example using foaf:name is obvious that there’s a modeling issue. I wonder what you think of my example about trying to mix in use of RDF 1.0 reification, though? If you end up with two statements like:

_:a rdf:object <<( :s2 :p2 :o2 )>> .
_:b rdf:object “William” .

Would you agree that we can’t really say anything about whether there’s a modeling issue in the larger dataset? Or does this approach sort of force us to restricting RDF usage of triple terms and/or reification properties (the opposite of which is something I’ve heard as a reason to prefer arbitrary reification properties – Dominik’s response to your email says they are "very much in line with the spirit of RDF”!).

.greg

Received on Sunday, 1 September 2024 12:00:27 UTC