W3C home > Mailing lists > Public > public-owl-dev@w3.org > October to December 2007

[OWLWG-COMMENT] Defining the universal property in OWL-1.1

From: Michael Schneider <schneid@fzi.de>
Date: Sat, 10 Nov 2007 15:54:57 +0100
Message-ID: <0EF30CAA69519C4CB91D01481AEA06A0531DA2@judith.fzi.de>
To: "Owl Dev" <public-owl-dev@w3.org>
Cc: <clu@tcs.inf.tu-dresden.de>, <gstoil@image.ece.ntua.gr>, <boris.motik@comlab.ox.ac.uk>

[public comment to OWL-WG discussion; cc'ed involved WG members]

Hi OWL-DEV list!

This week in the OWL-WG mailing list, there was some discussion about
introducing the "universial property" into OWL-1.1. 

    Re: ISSUE-3: REPORTED: Lack of anonymous individuals
    http://lists.w3.org/Archives/Public/public-owl-wg/2007Nov/0178.html

The universial property is the property which contains /every/ tuple (x,y)
in its extension, for x,y IN owl:Thing. Carsten Lutz explained that this
property is actually in SROIQ (the description logic behind OWL-1.1): 

    http://lists.w3.org/Archives/Public/public-owl-wg/2007Nov/0180.html

but that there are some restrictions on its usage in axioms:

    http://lists.w3.org/Archives/Public/public-owl-wg/2007Nov/0182.html

Anyway, Carsten opts for introducing the universal property into the OWL-1.1
vocabulary, because he believes that this would be useful.

Without reading the "SROIQ paper" cited by Carsten in his mails, I want to
say that it is even possible to specify the universal property by using the
constructs provided by the current OWL-1.1 draft. Such a definition is
possible based on my "general cross product" construction for specifying
cross products AXB of arbitrary classes A and B, which I presented in this
list a few weeks ago: 

    Defining cross products in OWL-1.1
    http://lists.w3.org/Archives/Public/public-owl-dev/2007OctDec/0074.html
    http://lists.w3.org/Archives/Public/public-owl-dev/2007OctDec/0077.html


The universal property can be seen as the cross product "owl:Thing X
owl:Thing", so my construction holds for this, too. But I see that I can
actually provide a simplified version of my construction for this special
case, so here is the set of OWL­-1.1 axioms for the universal property
called 'universal' (this time even including declarations :)):

    (A1) Declaration(Individual(w))
    (A2) Declaration(ObjectProperty(p))
    (A3) Declaration(ObjectProperty(q))
    (A4) Declaration(ObjectProperty(universal))
    (A5) SubClassOf(owl:Thing ObjectHasValue(p w))
    (A6) SubClassOf(owl:Thing ObjectHasValue(q w))
    (A7) InverseObjectProperty(q p)
    (A8) SubObjectPropertyOf(
             SubObjectPropertyChain(p p) 
             universal )

In order to show that 'univeral' is the universal property, we have to show
that for each pair of individuals x and y, universal(x,y) is true.

Let x, y be arbitrary individuals. Then x IN owl:Thing, and y IN owl:Thing.
Then, we get from (A5) that p(x,w) holds, and from (A6) we get that q(y,w)
holds. From this and (A7) we get that p(w,y) holds. So we have obtained the
following statement

    p(x,w) AND p(w,y)

from which follows

    EXISTS z: p(x,z) AND p(z,y)

And from this and (A8) we get that

    universal(x,y)

holds, qed.


>From the "Nonstructural Restrictions" chapter in the OWL-1.1 syntax document

 
http://www.w3.org/2007/OWL/wiki/Specification#Nonstructural_Restrictions_on_
Axioms

we can see that the property 'universal' cannot be used in a variaty of
axioms. But the list of nonstructural restrictions does /not/ disallow the
use of property value restrictions (allValuesFrom, someValueFrom). And
Carsten only demanded that the universal restriction should be usable within
property value restrictions:

    http://lists.w3.org/Archives/Public/public-owl-wg/2007Nov/0182.html

    "But *do* allow it in existential and universal restrictions."
    (Carsten Lutz)

So my set of axioms above actually meets Carsten's requirements.


Attached below you find the above ontology in RDF/XML syntax, together with
a test case in Jena/Pellet-1.5. In the test case, the ontology is first
loaded into an ontology model. Then two individuals ":x" and ":y" are
inserted. This whole OWL-1.1 knowledgebase is then queried for the following
triples:

  :x :universal :x .
  :x :universal :y .
  :y :universal :x .
  :y :universal :y .

The answer is "true" in all cases.

Cheers,
Michael

PS: So, finally, there is still some use for my curious cross product
construction. :)


===== ATTACHMENT: Ontology 'universalproperty.owl' =====

<?xml version="1.0"?>
<rdf:RDF
    xmlns="http://example.org/universalproperty.owl#"
    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:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xml:base="http://example.org/universalproperty.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="universal"/>
  <owl:ObjectProperty rdf:ID="q">
    <owl:inverseOf>
      <owl:ObjectProperty rdf:ID="p"/>
    </owl:inverseOf>
  </owl:ObjectProperty>
  <rdf:List rdf:ID="chain">
    <rdf:first rdf:resource="#p"/>
    <rdf:rest rdf:parseType="Collection">
      <owl:ObjectProperty rdf:about="#p"/>
    </rdf:rest>
    <rdfs:subPropertyOf rdf:resource="#universal"/>
  </rdf:List>
  <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Thing">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:hasValue>
          <owl:Thing rdf:ID="w"/>
        </owl:hasValue>
        <owl:onProperty rdf:resource="#q"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:hasValue rdf:resource="#w"/>
        <owl:onProperty rdf:resource="#p"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </rdf:Description>
</rdf:RDF>

<!-- Created with TopBraid Composer -->


===== ATTACHMENT: Test Code (Pellet >=1.5 needed) =====

import org.mindswap.pellet.jena.PelletReasonerFactory;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.vocabulary.OWL;

import java.io.FileInputStream;

/**
 * Demo code for the "universalproperty" ontology.
 * @author Michael Schneider (m_schnei@gmx.de)
 */
public class Owl11UniversalPropertyDemo {
    public static void main(String[] args) {
        String ONT_FILENAME = "universalproperty.owl"; // put in
project-toplevel
        String BASE_URI = "http://example.org/universalproperty.owl";
        try {
            OntModel ontModel =
ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC);
            ontModel.read(new FileInputStream(ONT_FILENAME), BASE_URI);
            
            // add individuals ':x' and ':y' to KB

            String x = BASE_URI+"#"+"x";
            String y = BASE_URI+"#"+"y"; 
            ontModel.createIndividual(x, OWL.Thing);
            ontModel.createIndividual(y, OWL.Thing);
            
            // check that all combinations of individuals 
            // are in extension of property 'universal'

            String[][] tuples = {
                    {x, x},
                    {x, y},
                    {y, x},
                    {y, y},
            };
            System.out.println("*** all tuples must occur in property
'universal' ***");
            for (String[] tuple : tuples) {
                System.out.println("Exists tuple ("+tuple[0]+",
"+tuple[1]+")? " +
                        ontModel.contains(
                                ResourceFactory.createResource(tuple[0]), 
                                ResourceFactory.createProperty(BASE_URI,
"#"+"universal"), 
                                ResourceFactory.createResource(tuple[1])
                        )
                );                 
            }
            
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

}

===== END =====

--
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@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
Received on Saturday, 10 November 2007 14:55:19 GMT

This archive was generated by hypermail 2.3.1 : Wednesday, 27 March 2013 09:32:55 GMT