Re: LPG many-to-many

Hi Thomas,

> On Aug 9, 2024, at 2:37 AM, Thomas Lörtsch <tl@rat.io> wrote:
> 
> I’d like to flesh out the point I was making in yesterday’s WG meeting [0] about how many-to-many reifications can be interpreted in LPGs.
> 
> I see three variants of many-to-many reifications in RDF:
> 
> 
> 1) different statement co-denote
>   e.g.
> 
>    :r rdf:reifies <<( :Alice :likes :Bob )>> .
>    :r rdf:reifies <<( :Bob :likes :Alice )>> .
>    :r rdf:reifies <<( :Robert :likes <Alice@example.com> )>> .
>    :r :source :Carol .
> 
> 
> 2) different statements are grouped for easier annotation
>   e.g. by pfps in yesterday’s WG meeting
> 
>    :r rdf:reifies << :alice :age 53 >> .
>    :r rdf:reifies << :bob :age 54 >> .
>    :r rdf:reifies << :zeke :age 22 >> .
>    :r :source :census .
>    :r :retrieved "20 jun 2024"^^xsd:date .
> 
> 
> 3) different statements together describe an entity
>   e.g. by enrico in yesterday’s WG meeting
> 
>    << :w2 | :liz :married :richard >> a :Marriage ; :starts 1975 .
>    << :w2 | :richard :married-in :las-vegas >> :best-man :jim-benton .
> 
> 
> In cases 1 and 2 I see absolutely no problem, and no added burden on the LPG side, in converting each RDF reified term into an LPG edge and annotating each such LPG edge with the annotations attributed in RDF to their common reification identifier.

I agree that cases 1 and 2 are straightforward, and wouldn’t have any problem with this approach.

> 
> In case 3 such annotations might sometimes make not much sense on the individual triples that together make up the reification. However, that probably would not be harmful either, and in the example above it even does make sense. 
> 
> I’d like to see an example where such a simple conversion strategy is harmful. Maybe it would contain hints for less drastic ways to avoid meaningless or even harmful conversions of many-to-many reifications to LPG than the introduction of a hypothetical LPG-profile with a reduced set of supported features.

I see the harm as being one of cardinality. In the case of example 3 above, by annotating *each* LPG edge you’ll end up with more marriages than the data actually describes. If you try to query for “how many marriages has :jim-benton been the best man in?”, you’ll get the wrong answer. The harm is probably even more obvious in cases like Enrico’s running example where the reifier represents a financial transaction. Start duplicating the annotations and suddenly you’re recording too much money being transferred (and the amount to which you’ve over-represented the money flow is, perhaps surprisingly, proportional to how much detail you’ve annotated the transaction with).

thanks,
.greg

Received on Thursday, 22 August 2024 17:06:10 UTC