SPARQL: extracting a subgraph is practically non-trivial, perhaps too hard

I've been trying to use SPARQL extract bits and pieces of OWL ontologies 
like this one:

http://www.loa-cnr.it/DOLCE.html

DOLCE is particularly interesting because the comments indicate it is 
"modular"
Modularity came up in the context of a recent discussion here:

http://ontolog.cim3.net/cgi-bin/wiki.pl?ConferenceCall_2005_04_28

With SPARQL, I tried to write queries that "chopped" DOLCE
along the lines of the structure the authors indicate:

The ontology graph in this version is the following: 
------Backbone:
http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/DOLCE-Lite#
 http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/TemporalRelations#
 http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/SpatialRelations#
 http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/DnS#
------Basic extensions:
  http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/InformationObjects#
  http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Actions#
   http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/SocialUnits#
    http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Plans#
     
http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/FunctionalParticipation#
     http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Collections#
      http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Collectives#
       
http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/CommonSenseMapping#
-----Experimental extensions:
  http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Systems#
  
http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/SemioticCommunicationTheory#
  http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/Causality#
  http://eis.jpl.nasa.gov/~rouquett/Ontologies/DOLCE/ModalDescriptions#

I thought it would be easy with SPARQL, but it is turning out into 
something practically difficult.

1) Extracting the list of the ontologies defined in DOLCE.

The list is mentioned in the comments. It is also included in the list 
of namespace prefixes
that a simple SPARQL query returns. Yet, it is surprisingly difficult to 
get just that list.

http://www.loa-cnr.it/ontologies/DOLCE-Lite#
http://www.loa-cnr.it/ontologies/TemporalRelations#
http://www.loa-cnr.it/ontologies/SpatialRelations#
http://www.loa-cnr.it/ontologies/DnS#
http://www.loa-cnr.it/ontologies/InformationObjects#
http://www.loa-cnr.it/ontologies/Actions#
http://www.loa-cnr.it/ontologies/SocialUnits#
http://www.loa-cnr.it/ontologies/Plans#
http://www.loa-cnr.it/ontologies/FunctionalParticipation#
http://www.loa-cnr.it/ontologies/Collections#
http://www.loa-cnr.it/ontologies/Collectives#
http://www.loa-cnr.it/ontologies/CommonSenseMapping#
http://www.loa-cnr.it/ontologies/Systems#
http://www.loa-cnr.it/ontologies/SemioticCommunicationTheory#
http://www.loa-cnr.it/ontologies/Causality#
http://www.loa-cnr.it/ontologies/ModalDescriptions#

2) Ok, assume we have the list somehow, now we want to go from: 
DOLCE3941.owl to, say, DnS.owl, the subset
of DOLCE limited to this graph: http://www.loa-cnr.it/ontologies/DnS#

I tried to slice it and dice it various ways but I didn't manage to get 
"just" DnS from SPARQL.

I managed to get the list of these ontologies relatively easily;
however, I haven't managed to get each ontology separately.
I've included a script that I wrote to play around with this idea.

The problem boils down to a context-sensitive graph query
to retrieve things like:

ns1:requisite
      rdf:type      owl:ObjectProperty ;
      rdfs:domain   [ rdf:type      owl:Class ;
                      owl:unionOf   (ns1:information-object ns1:course 
ns1:role ns1:figure)
                    ] ;
      rdfs:range    ns1:parameter ;
      rdfs:subPropertyOf  :immediate-relation-i ;
      owl:inverseOf  ns1:requisite-for .

In this case, there's a triple:

ns1:requisite rdfs:domain _:x

where _:x corresponds to this:

[ rdf:type      owl:Class ;
  owl:unionOf   (ns1:information-object ns1:course ns1:role ns1:figure)
]

I understand that SPARQL was specifically designed for context-free queries
that could be executed very efficiently and that extracting _:x in this 
example
requires tracking _:x and all of his "descendent" triples. Be as it may,
it does not change the fact that this type of "projection" or "extraction"
from an OWL ontology is  a reasonable thing to ask for. It is rather
disappointing that it is beyond the scope of what SPARQL can do.
IN practice, it means that for certain types of query, we might use
SPARQL and life will be wonderful and for other queries, we will
be in a quandary wondering which tool (if any) can actually solve
a conceptually simple problem in a practical simple manner.

Any suggestions?

-- Nicolas.

http://eis.jpl.nasa.gov/~rouquett

Received on Saturday, 7 May 2005 07:06:09 UTC