- From: Michael Schneider <schneid@fzi.de>
- Date: Sat, 10 Nov 2007 15:54:57 +0100
- 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 UTC