[Pellet-users] SubPropertyChains in Pellet: owns/part works, uncle doesn't

Michael Schneider schneid at fzi.de
Sun Sep 30 20:09:25 UTC 2007


Hi!

I am playing around with Pellet's support for sub role chains. I have used
Topbraid Composer (TBC) [1], which uses a pretty current version of Pellet,
to create and test two different sub role chains:

    * owns/part:	isOwnerOf o hasPart --> isOwnerOf

    * uncle:	hasParent o hasBrother --> hasUncle

Both should be allowed, according to the current OWL-1.1 draft [2]. But only
the first one seems to work with Pellet. (This is the reason why I ask here
and not in the TBC list: Because one of the two sub role chains actually
works, so this is probably *not* a TBC problem.) 

In the first case, I have added three instances of 'owl:Thing': 'alice',
'car', and 'cardoor', and the following triples:

    * alice isOwnerOf car
    * car hasPart cardoor

Building the Pellet based inference graph (with TBC as a frontend), I get
the expected additional triple

    * alice isOwnerOf cardoor

So this works.

In the case of the uncle sub role chain, I have added three instances of
owl:Thing, 'alice', 'bob', and 'charly', and the following triples:

    * alice hasParent bob
    * bob hasBrother charly

Trying again to build the Pellet based inference graph gave *no* result!

I have learnt a few weeks ago [3] that the general case, where the super
role ('hasUncle' here) may differ from the chained roles ('hasParent' and
'hasBrother' here), has just recently been researched to be allowed as a
feature of OWL-1.1. So I suppose that Pellet does not yet have support for
this general case. Is this correct?

Anyway, I have attached the two ontologies for you to check yourself. Maybe
it is another problem.

Cheers,
Michael

[1] Topbraid Composer Homepage: 
    http://www.topbraidcomposer.com/
[2] OWL-1.1 Semantics: 
    http://www.webont.org/owl/1.1/semantics.html#2
[3] Ian Horrocks about the "uncle" sub role chain:
    http://lists.w3.org/Archives/Public/public-owl-dev/2007JulSep/0165.html

========================= owns/part Ontology =====================

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns="http://example.org/ownspart.owl#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://example.org/ownspart.owl">
  <owl:Ontology rdf:about="">
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
  </owl:Ontology>
  <owl:ObjectProperty rdf:ID="isOwnerOf"/>
  <owl:ObjectProperty rdf:ID="hasPart"/>
  <owl:Thing rdf:ID="cardoor"/>
  <owl:Thing rdf:ID="car">
    <hasPart rdf:resource="#cardoor"/>
  </owl:Thing>
  <rdf:List rdf:ID="subrolechain">
    <rdfs:subPropertyOf rdf:resource="#isOwnerOf"/>
    <rdf:first rdf:resource="#isOwnerOf"/>
    <rdf:rest rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="#hasPart"/>
    </rdf:rest>
  </rdf:List>
  <owl:Thing rdf:ID="alice">
    <isOwnerOf rdf:resource="#car"/>
  </owl:Thing>
</rdf:RDF>

<!-- Created with TopBraid Composer -->

========================= uncle Ontology =========================

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:owl11="http://www.w3.org/2006/12/owl11#"
    xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns="http://example.org/uncle.owl#"
  xml:base="http://example.org/uncle.owl">
  <owl:Ontology rdf:about="">
    <owl:versionInfo rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Created with TopBraid Composer</owl:versionInfo>
  </owl:Ontology>
  <owl:ObjectProperty rdf:ID="hasParent"/>
  <owl:ObjectProperty rdf:ID="hasUncle"/>
  <owl:ObjectProperty rdf:ID="hasBrother"/>
  <owl:Thing rdf:ID="alice">
    <hasParent>
      <owl:Thing rdf:ID="bob">
        <hasBrother>
          <owl:Thing rdf:ID="charly"/>
        </hasBrother>
      </owl:Thing>
    </hasParent>
  </owl:Thing>
  <rdf:List rdf:ID="subrolechain">
    <rdfs:subPropertyOf rdf:resource="#hasUncle"/>
    <rdf:rest rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="#hasBrother"/>
    </rdf:rest>
    <rdf:first rdf:resource="#hasParent"/>
  </rdf:List>
</rdf:RDF>

<!-- Created with TopBraid Composer -->

==================================================================

--
Dipl.-Inform. Michael Schneider
FZI Forschungszentrum Informatik Karlsruhe
Abtl. Information Process Engineering (IPE)
Tel  : +49-721-9654-726
Fax  : +49-721-9654-727
Email: Michael.Schneider at fzi.de
Web  : http://www.fzi.de/ipe/eng/mitarbeiter.php?id=555

FZI Forschungszentrum Informatik an der Universität Karlsruhe
Haid-und-Neu-Str. 10-14, D-76131 Karlsruhe
Tel.: +49-721-9654-0, Fax: +49-721-9654-959
Stiftung des bürgerlichen Rechts
Az: 14-0563.1 Regierungspräsidium Karlsruhe
Vorstand: Rüdiger Dillmann, Michael Flor, Jivka Ovtcharova, Rudi Studer
Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus


More information about the Pellet-users mailing list