ISSUE-137 (including XML includes)

I take issue 137 to be concerned with the following problem.

Given an existing RDF document (which would be in RDF/XML) that isn't
valid OWL DL (probably because it doesn't appropriately declare
properties), how can use it in an OWL DL ontology.

For example, suppose the document at http://example.com/ex1/ is:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 	 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	 xmlns:ex="http://example.com/ex1/#" />

  <rdf:Property rdf:about="http://example.com/ex1/#p" />
  <rdfs:Class rdf:about="http://example.com/ex1/#c" />

  <ex:c rdf:about="http://example.com/ex1#i1" >
    <ex:p>
      <ex:c rdf:about=http://example.com/ex1#i2" />
    </ex:p>
  </ex:c>

</rdf:RDF>

In OWL 1, this could be done by having another RDF/XML document that
imported the above one and provided the missing declarations, perhaps
something like:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 	 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	 xmlns:owl="http://www.w3.org/2002/07/owl#"
	 xmlns:ex="http://example.com/ex1/#" />

  <owl:Ontology rdf:about="">
    <owl:imports>
      <owl:Ontology rdf:about="http://example.com/ex1/" />
    </owl:imports>
  </owl:Ontology>

  <owl:ObjectProperty rdf:about="http://example.com/ex1/#p" />
  <owl:Class rdf:about="http://example.com/ex1/#c" />

</rdf:RDF>

This worked in OWL 1 because the merge graph of the imports closure was
formed before recognition was attempted.  

Currently the latter document is OWL 2 DL, because there are no OWL
declarations in the first document to mess up parsing the second
document.  Determining the axiom closure of this ontology is currently
problematic, as this would require parsing the first document, and that
document is not OWL 2 DL.

A way to proceed is to instead use XML includes, i.e., to "fix up"
non-OWL DL documents, include them in another document, as in

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 	 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	 xmlns:owl="http://www.w3.org/2002/07/owl#"
 	 xmlns:xi="http://www.w3.org/2001/XInclude"
	 xmlns:ex="http://example.com/ex1/#" />

  <owl:Ontology rdf:about="" />

  <xi:include href="http://example.com/ex1/" 
     pointer="[[something that grabs all the children of the rdf:RDF element]]">

  <owl:ObjectProperty rdf:about="http://example.com/ex1/#p" />
  <owl:Class rdf:about="http://example.com/ex1/#c" />

</rdf:RDF>

This seems to me to clear up the vast majority of cases that are going
to appear in practice.


peter

Received on Wednesday, 10 September 2008 20:43:15 UTC