On Apr 17, 2007, at 10:54 AM, Chris Mungall wrote:


Looking at "Creating class level relations for easier querying of the GO"

The problem you are solving is the one of limited inferencing in RDF engines; in particular, queries such as:

SELECT *
WHERE
 {
   ?whole rdfs:subClassOf ?sub.
   ?sub rdf:type owl:Restriction.
   ?sub owl:onProperty <http://purl.org/obo/owl/part_of>.
   ?sub owl:someValuesFrom ?part.
 }

are (1) awkward to express and (2) do not take into account the declared transitivity of part_of, thus returning incomplete answers.

It seems that (1) is just the price you pay for the RDF-OWL combination. However (2) is a major problem with most existing triplestores.

Yes, though for small scale data sets one can try this now (for instance to understand and learn what to expect) using Pellet's SPARQL implementation.
I think we will try to fit that in to the demo.

Your solution is to insert relations at the class level, such that you can query:

select *
where
 {
   ?whole <http://purl.org/obo/owl/part_of> ?part.
   ?whole rdfs:label ?wlabel.
 }

This certainly helps with (1) - you don't explicitly say, but I am guessing that you get support for (2) through basic RDFS transitivity that comes for free with virtuoso?

They are implementing transitivity by adding entailed triples - same way that the other "closure" based triple stores with reasoning do. Hopefully I'll get to trying that later today.

I actually like your solution, but I would have thought the OWL purists would have disliked it, even with the punning caveat.

They should professionally dislike it, since what they strive is full sound and complete solutions, which this is not. On the other hand, I don't think they would argue with it, particularly since I have been in direct contact with a number of them asking for a viable alternative, which they have not, as yet, ponied up :) (you know who you are).

Anyways, they will have a chance to demonstrate their alternatives in the future, since the data from the demo will be openly available. With luck, subsequent work we do will be able to exercise some of these alternatives.

It is compatible with the OBO relations view of the world, in which relations can be said to hold between types by virtue of their corresponding instances; and you don't have to worry about the inforation loss re existential restrictions since this is essentially built in to the relation.

Yes. I had that in mind. In fact these class level relations are more correct, from a BFO/OBO point of view, than the current instance based definitions, since the instance based definitions ignore time.

It does seem like a limited trick unless you get some of the OWL semantics from this alternate layering onto RDF - for example, how would you handle instantiation?

Could you express this as a question to be answered, given some specific data? It will be easier to think about it if you do.

Regards,
Alan



On Apr 16, 2007, at 10:31 PM, Alan Ruttenberg wrote:


I've started a page where I and others can document some of the SPARQL queries and techniques that are being explored as we progress towards the demo. The intention is to have a place to record things that are learned for later reference.

http://esw.w3.org/topic/HCLS/HCLSIG_Demo_QueryScratch

Regards,
Alan






Reply via email to