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