Re: voting against use of rdf:ReificationProperty

> On Sep 3, 2024, at 4:37 AM, William Van Woensel <william.vanwoensel@gmail.com> wrote:
> 
> Hi Greg,
> 
>> If we only allowed triple terms in statements with rdf:reifies as the predicate, then I think the reifier could probably be used in the way you describe (though the SPIN case might require some changes), but with arbitrary predicates, these triples *themselves* become important subjects of further annotation.
> 
> 
> You make a good point: IIUC, in case of reificationProperty, there is a need to break up _reification statements_ themselves, since the property then provides extra information. And, that currently leads to unintended consequences, such as the "meta-property" rdf:object / sp:object / ... being inferred as a reificationProperty; and the statement's resource being treated as a reifier/identifier for its triple term component.
> 
> My only solution at this point would be to further break up the triple term as well (which I believe you propose as well):
> 
>> <statement> a my:Statement ;
>>   my:reifies <<( <s> <p> <o> )>> ;
>>   my:subject <s> ;
>>   my:predicate <p> ;
>>   my:object <o> .
> 
> To cope with the fact that <o> may be a nested triple term, this breaking down would have to be applied recursively.
> 
> At least personally, I wouldn't see this as a major problem, since it also allows one to more easily introspect the triple term, i.e., using its individual components. This meta-modelling aspect could be a note in the recommendation.

I think you’d have to pursue something like that in the SPIN case, but I don’t think it fully resolves the problem. In the example above, if we replace <o> with another triple term, so that in part it would be:

<statement> rdf:reifies <<( <s> <p> <<( <x> <y> <z> )>> )>> .

Then I think you’re suggesting the recursive breaking down of the my:object property, so that instead of:

<statement> my:object <<( <x> <y> <z> )>> .

You would have:

<statement> my:object <statement2> .
<statement2> a my:Statement ; my:subject <x> ; … .

But that is different from what was said. <statement> is meant to reify a triple whose object is a triple term, but now it’s actually reifying a triple whose object is another reifier. That felt like it made more sense a long time ago before we went in the direction of reifiers that could reify multiple triples. If you had a 1:1 correspondence between a reifier and reified triple, I think I could understand making a substitution like this, because you’d just follow the reifier to its reified triple. But now it just feels like an entirely different statement (reification of a Wedding, for example, instead of a single fact about the wedding like `<<( :liz :married :Richard )>>` ).

thanks,
.greg

Received on Wednesday, 4 September 2024 19:11:33 UTC