Re: rdf inclusions (was Re: DAML Level of Effort for FY03-FY05)

   [me]
   >>Is it supposed to be the case that just mentioning an ontology's
   >>namespace means that the file uses that ontology? 
   >>
   [Sandro Hawke]
   > 
   > The namespace declaration is just syntactic sugar (it doesn't appear
   > in the N-Triples generated, etc), but if we phrase your question
   > differently, the point remains important:
   > 
   >    Does using a term defined by some ontology O in some
   >    RDF graph G mean that G is using O?
   > 
   > I think a "yes" answer would be convenient but wrong in the long run.

   [Frank Manola]
   I think a "yes" answer is right, but needs to be qualified.
   ...
   We do need to think more about what being "based on an 
   ontology" means.

Indeed we do.

I have had discussions with various people (notably Pat Hayes) about
this topic, and have emerged with my own opinions intact; everyone
else's pretty much survived as well.

Anyway, the following strikes me as the only reasonable point of view:
There is simply no way to import part of an ontology, as Sandro and
Frank both seem to want to do.  It's as if a Haskell program tried to
import part of a module (or, for C++ fans, as if a C++ program tried
to #include part of a set of declarations).  Modules are all tangled
up.  The chances are negligible that you could grab a concept or two
and pull it out without the whole ball of mucus coming with it.  What
you *can* do in Haskell (and in Lisp, more clumsily) is declare that
you want to import only certain *names*.  It's understood that when
you use a name from another module, e.g, when you call a function
defined in that module, it may well call many other subroutines
defined there, but you don't want to know about them.

The situation with ontologies seems exactly the same to me.  Not only
that, XML already provides us with a flexible namespace mechanism, so
we don't need to reimplement that part.  All we need to be able to do
is to say: I want to import that ontology, subject to previously
declared xlmns.

The import declaration is not redundant, because XML is used for more
low-level purposes than RDF/DAML.  In another file in the SONAT
library, example1.daml, we have (sorry for all the entities, but
they're used in the xlmns statements):

<!DOCTYPE uridef[
  <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns">
  <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema">
  <!ENTITY daml "http://www.daml.org/2001/03/daml+oil">
  <!ENTITY xsd "http://www.w3.org/2000/10/XMLSchema">

  <!ENTITY enp "http://www.daml.org/experiment/ontology/beta/elements-ont">
  <!ENTITY soci "http://www.daml.org/experiment/ontology/beta/social-elements-ont">
  <!ENTITY poli "http://www.daml.org/experiment/ontology/beta/political-elements-ont">
  <!ENTITY econ "http://www.daml.org/experiment/ontology/beta/economic-elements-ont">
  <!ENTITY infr "http://www.daml.org/experiment/ontology/beta/infrastructure-elements-ont">
  <!ENTITY info "http://www.daml.org/experiment/ontology/beta/information-elements-ont">
  <!ENTITY mil "http://www.daml.org/experiment/ontology/beta/military-elements-ont">

  <!ENTITY assess "http://www.daml.org/experiment/ontology/beta/assessment-ont">
  <!ENTITY obj "http://www.daml.org/experiment/ontology/beta/objectives-ont">
  <!ENTITY loc "http://www.daml.org/experiment/ontology/beta/location-ont">
  <!ENTITY dt  "http://www.daml.org/experiment/ontology/beta/ona.xsd">

  <!ENTITY fips "http://www.daml.org/2001/09/countries/fips">
]>


<rdf:RDF
  xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs ="&rdfs;#"
  xmlns:daml ="&daml;#"
  xmlns:xsd ="&xsd;#"
  xmlns:enp ="http://www.daml.org/experiment/ontology/beta/elements-ont#"
  xmlns:soci= "http://www.daml.org/experiment/ontology/beta/social-elements-ont#"
  xmlns:poli= "http://www.daml.org/experiment/ontology/beta/political-elements-ont#"
  xmlns:econ= "http://www.daml.org/experiment/ontology/beta/economic-elements-ont#"
  xmlns:infr= "http://www.daml.org/experiment/ontology/beta/infrastructure-elements-ont#"
  xmlns:info= "http://www.daml.org/experiment/ontology/beta/information-elements-ont#"
  xmlns:mil ="http://www.daml.org/experiment/ontology/beta/military-elements-ont#"
  xmlns:assess  ="&assess;#"
  xmlns:obj  ="&obj;#"
  xmlns:loc  ="&loc;#"
 >

Now we can all see that all but the first 4 of these are clearly
ontologies to import.  But the first certainly is not; the second and
fourth I'm not sure of (for fear of offending Ian Horrocks :); and the
third, good old &daml;#, is the grandaddy of all ontologies.

But how can a computer see all this?  Should it just assume that any
namespace that expands out to something ending in ".daml" somehow is
an ontology?  This strikes me as a silly tactic for avoiding an
"imports" declaration.

                                             -- Drew McDermott

Received on Sunday, 21 April 2002 18:50:25 UTC