- From: Holger Knublauch <holger@topquadrant.com>
- Date: Tue, 16 Aug 2022 20:59:22 +0200
- To: David Booth <david@dbooth.org>
- Cc: semantic-web@w3.org
- Message-Id: <862DA222-E1FD-4370-BE24-F65730FC681C@topquadrant.com>
> On 16 Aug 2022, at 8:20 pm, David Booth <david@dbooth.org> wrote:
>
> On 8/16/22 12:56, Holger Knublauch wrote:
>> A next generation of RDF(-star) can hopefully get rid of rdf:Lists through reification with an index property.
>
> That sounds surprising, given the widespread dislike of reification. Do you have a pointer to an explanation?
I mean RDF-star-type reification, which would allow values to be just normal triples, plus an index for the ordering.
ex:Parent
ex:child ex:Child1 {| rdf:index 0 |} ;
ex:child ex:Child2 {| rdf:index 1 |} ;
ex:child ex:Child3 {| rdf:index 2 |}
...
would be the RDF-star annotation syntax, see
https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#annotation-syntax <https://w3c.github.io/rdf-star/cg-spec/editors_draft.html#annotation-syntax>
While queries that don't care about the order can just be ex:Parent ex:child ?child.
We support something like that in TopBraid already, using a property called dash:index, e.g. when users run a GraphQL query.
Serializations like Turtle could provide a more user friendly syntax such as
ex:Parent
ex:child [[ ex:Child1, ex:Child2, ex:Child3 ]] ...
or whatever. Every approach has some downsides though.
Holger
>
> Incidentally, I personally think RDF should natively support lists, which David Wood and James Leigh proposed at the 2009 W3C RDF Next Steps workshop:
> https://www.w3.org/2009/12/rdf-ws/papers/ws14
>
> David Booth
>
>> Holger
>>> On 16 Aug 2022, at 6:45 pm, Enrico Daga <enricodaga@gmail.com <mailto:enricodaga@gmail.com>> wrote:
>>>
>>> Hi all,
>>>
>>> I just stumbled upon this thread. Last year I co-authored a paper that analysed the impact of alternative design patterns for lists on the efficiency of list-relevant operations in SPARQL. OWL was not a topic of the paper, although we also considered OWL-compliant solutions, in the analysis. One conclusion was that the rdf:List model was very inefficient for many of the operations, and managing indexing in properties or using container membership properties was generally preferable. I am aware this goes against the OWL requirements but drop the ball nevertheless, in case this is useful. The article is [1].
>>>
>>> Best wishes
>>>
>>> Enrico
>>>
>>>
>>> [1] Daga, Enrico, Albert Meroño-Peñuela, and Enrico Motta. "Sequential linked data: The state of affairs." /Semantic Web/ Preprint (2021): 1-36.
>>> --
>>> Enrico Daga
>>> http://about.me/enridaga <http://about.me/enridaga>
>>>
>>>
>>> On Mon, 15 Aug 2022 at 19:02, Balhoff, Jim <balhoff@renci.org <mailto:balhoff@renci.org>> wrote:
>>>
>>> I proposed a change to OWL API that would allow parsing certain
>>> lists into Abox axioms: https://github.com/owlcs/owlapi/pull/1074
>>> <https://github.com/owlcs/owlapi/pull/1074>
>>>
>>> This would only be active if the ontology is specifically using
>>> the RDF list predicates as object properties. That change would be
>>> helpful for loading the proposed FHIR data model into Protégé and
>>> then being able to access items in lists (assuming that OWL API
>>> version makes its way into Protégé).
>>>
>>> I think outside of Protégé/OWL API, dealing with list data might
>>> not be as much of a problem, like if using an RDF rule engine to
>>> make inferences.
>>>
>>>> On Aug 12, 2022, at 8:25 AM, Eric Prud'hommeaux <eric@w3.org
>>>> <mailto:eric@w3.org>> wrote:
>>>>
>>>> Molstly protégé, and other OWL-capable tools like StarDog. I'd
>>>> like to
>>>> figure out for FHIR whether to use RDF lists, but I think it's
>>>> important for the SemWeb as a whole to solve this. As it stands, it
>>>> looks like one should never use RDF lists.
>>>>
>>>> Given that way more RDF data processing happens with SPARQL than with
>>>> OWL, and SPARQL *can* access lists (albeit awkwardly), it sounds
>>>> crazy
>>>> to forgo using lists just because someone someday might want to
>>>> do OWL
>>>> inference over the entities in the list. Voilà the dilema.
>>>>
>>>> It would also be really nice to understand if there is a fundamental
>>>> reason for this limitation in OWL. I beleieve that Jim's research
>>>> shows that at least OWL-API can be updated to allow lists. If this is
>>>> the case, and this can be replicated in other OWL implementations,
>>>> then perhaps the answer is a period of civil disobedience where folks
>>>> violate the spec, use tools that support that violation, and
>>>> eventually update the OWL spec. This interim solution could be made
>>>> official with an OWL 1.1. errata stating that rdf:first/rest *can* be
>>>> used in axioms.
>>>>
>>>>
>>>> On Thu, Aug 11, 2022 at 08:47:27PM +0000, Mark Wallace wrote:
>>>>> Eric, are you looking for a solution that runs Within protege?
>>>>> Within a triple store?
>>>>>
>>>>> ________________________________
>>>>> From: Eric Prud'hommeaux <eric@w3.org <mailto:eric@w3.org>>
>>>>> Sent: Thursday, August 11, 2022 8:26 AM
>>>>> To: semantic-web@w3.org <mailto:semantic-web@w3.org>
>>>>> <semantic-web@w3.org <mailto:semantic-web@w3.org>>
>>>>> Cc: Jim Balhoff <balhoff@renci.org <mailto:balhoff@renci.org>>;
>>>>> dbooth@dbooth.org <mailto:dbooth@dbooth.org> <dbooth@dbooth.org
>>>>> <mailto:dbooth@dbooth.org>>
>>>>> Subject: OWL and RDF lists
>>>>>
>>>>> RDF lists (technically "collections" ¹) have terse abbreviations in
>>>>> Turtle/SPARQL and a "ladder" representation as triples.
>>>>>
>>>>> <https://en.wikipedia.org/wiki/Flag_of_France
>>>>> <https://en.wikipedia.org/wiki/Flag_of_France>> :orderedColors _:1 .
>>>>> _:1 rdf:first "blue" .
>>>>> _:1 rdf:rest _:2 .
>>>>> _:2 rdf:first "white" .
>>>>> _:2 rdf:rest _:3 .
>>>>> _:3 rdf:first "red" .
>>>>> _:3 rdf:rest rdf:nil .
>>>>>
>>>>> The SPARQL 1.2 WG is wrestling with lists ², and JSON-LD 1.1 has
>>>>> added
>>>>> support for them ³. OWL however, specifically disables them by
>>>>> prohibiting inferences across predicates in the rdf: namespace à la
>>>>> Jim Balhoff's example ⁴;
>>>>> [[
>>>>> :contains rdf:type owl:ObjectProperty ;
>>>>> owl:propertyChainAxiom ( rdf:rest :contains ) .
>>>>> ]]
>>>>>
>>>>> FHIR is a set of models for clinical record. It has
>>>>> representations in
>>>>> XML, JSON and RDF. There's a playground ⁵ to explore alternatives
>>>>> which illustrates alternatives, including whether to use
>>>>> rdf:Collections (see button at top-right). With collections turned
>>>>> off, we have to roll our own order (fhir:index 0, 1, 2...), which
>>>>> kinda goes against RDF standards.
>>>>>
>>>>> I put together a gist which illustrates three observations we might
>>>>> encounter in a patient's record. The codes for the first two
>>>>> appear in
>>>>> a SNOMED hieararchy you might query for evidence of bone density
>>>>> loss
>>>>> (clinical example, balancing corticosteroids against osteoporosis).
>>>>>
>>>>> https://fhircat.github.io/fhir-rdf-playground/?axes=rdvCh&manifestURL=https://gist.githubusercontent.com/ericprud/8e53eef196ccdc2c43f40238fdd06691/raw/224261f5055a3980acd79570fe5caeaf4a4b2d84/osteo-manifest.json
>>>>> <https://fhircat.github.io/fhir-rdf-playground/?axes=rdvCh&manifestURL=https://gist.githubusercontent.com/ericprud/8e53eef196ccdc2c43f40238fdd06691/raw/224261f5055a3980acd79570fe5caeaf4a4b2d84/osteo-manifest.json>
>>>>>
>>>>>
>>>>> Solbrig et al demonstrate how the SNOMED hierarchy can be used for
>>>>> valuable clinical insights ⁶ *iff* we can work write OWL axioms
>>>>> which
>>>>> simultaneously access the SNOEMD hierarchy and the codes in the
>>>>> paitent data. But as Jim demonstrated, that requires OWL axioms that
>>>>> reference the forbidden rdf: namespace.
>>>>>
>>>>> Thoughts? Advice?
>>>>>
>>>>>
>>>>> ¹ https://www.w3.org/TR/rdf-primer/#collections
>>>>> <https://www.w3.org/TR/rdf-primer/#collections>
>>>>> ² https://github.com/w3c/sparql-12/issues/46
>>>>> <https://github.com/w3c/sparql-12/issues/46>
>>>>> ³
>>>>> https://www.w3.org/TR/json-ld11/#example-82-specifying-that-a-collection-is-ordered-in-the-context
>>>>> <https://www.w3.org/TR/json-ld11/#example-82-specifying-that-a-collection-is-ordered-in-the-context>
>>>>> ⁴
>>>>> https://gist.github.com/balhoff/62fb8f2c1e29bc0d4d27c3df0d005154
>>>>> <https://gist.github.com/balhoff/62fb8f2c1e29bc0d4d27c3df0d005154>
>>>>> ⁵ https://fhircat.github.io/fhir-rdf-playground/
>>>>> <https://fhircat.github.io/fhir-rdf-playground/>
>>>>> ⁶ https://github.com/BD2KOnFHIR/BLENDINGFHIRandRDF
>>>>> <https://github.com/BD2KOnFHIR/BLENDINGFHIRandRDF>
>>>>>
>>>
>
Received on Tuesday, 16 August 2022 18:59:39 UTC