RE: OWL Full reasoning

Hi Jos,
 
Thanks for the effort! It is VERY important to us, because it gives us hope
that we indeed can perform reasoning to information that is modelled in our
style. The alternative might have been to denormalize our data model (or
better said: cripple it) in order to make it suitable for DL.
 
I have two questions:  
1.       The W3C site qualifies cwm as: -- useful but incomplete OWL Full 
It looks like it is pretty capable. How "incomplete OWL Full" is it really,
and is work underway to make it less incomplete?
2.       Can we work, off-line or on-line (your choice), on what you
mentioned in the very last paragraph below?
 
Kind regards,
Hans
 
-----Original Message-----
From: semantic-web-request@w3.org [mailto:semantic-web-request@w3.org] On
Behalf Of jos.deroo@agfa.com
Sent: Friday, August 19, 2005 1:59 PM
To: hans.teijgeler@quicknet.nl
Cc: semantic-web@w3.org
Subject: Re: OWL Full reasoning
 
 
Hi, Hans
 
I looked a bit to your interesting case and did a simple test
The N3 [1] that follows can be automatically converted to RDF/XML using 
cwm [2]
and cwm is also used as reasoner as well as euler [3] (as Danny mentioned 
:))
 
The input of the test is the following
 
##########################################################
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix iso: <http://www.tc184-sc4.org/iso15926/part2/2003-12#> .
@prefix : <hans#>.
 
 
### input
 
:flange_on_pump_P-101 a iso:PhysicalObject.
:flange_on_pipe_A-265-h a iso:PhysicalObject.
 
:direct_connection a iso:DirectConnection, :R1, :R2;
    :side1 :flange_on_pump_P-101;
    :side2 :flange_on_pipe_A-265-h.
 
:R1 a owl:Restriction;
    owl:onProperty :side1;
    owl:allValuesFrom iso:PossibleIndividual.
 
:R2 a owl:Restriction;
    owl:onProperty :side2;
    owl:allValuesFrom iso:PossibleIndividual.
 
 
### RDF plus OWL rules
# extending http://eulersharp.sourceforge.net/2003/03swap/rpo-rules.n3
 
rdfs:subClassOf rdfs:domain rdfs:Class; rdfs:range rdfs:Class; a 
owl:TransitiveProperty.
rdfs:subPropertyOf rdfs:domain rdf:Property; rdfs:range rdf:Property; a 
owl:TransitiveProperty.
owl:inverseOf rdfs:domain owl:ObjectProperty; rdfs:range 
owl:ObjectProperty; a owl:SymmetricProperty.
owl:differentFrom rdfs:domain owl:Thing; rdfs:range owl:Thing; a 
owl:SymmetricProperty.
owl:distinctMembers rdfs:domain owl:AllDifferent; rdfs:range rdf:List.
rdf:first rdfs:domain rdf:List; rdfs:range rdfs:Resource; a 
owl:FunctionalProperty.
rdf:rest rdfs:domain rdf:List; rdfs:range rdf:List; a 
owl:FunctionalProperty.
 
{?P rdfs:domain ?C. ?S ?P ?O} => {?S a ?C}.
{?P rdfs:range ?C. ?S ?P ?O} => {?O a ?C}.
{?A rdfs:subClassOf ?B. ?S a ?A} => {?S a ?B}.
{?P rdfs:subPropertyOf ?R. ?S ?P ?O} => {?S ?R ?O}.
{?P owl:inverseOf ?Q. ?S ?P ?O} => {?O ?Q ?S}.
{?P a owl:SymmetricProperty. ?S ?P ?O} => {?O ?P ?S}.
{?P a owl:TransitiveProperty. ?X ?P ?O. ?S ?P ?X} => {?S ?P ?O}.
{?P a owl:FunctionalProperty. ?S ?P ?X. ?S ?P ?Y} => {?X = ?Y}.
{?P a owl:InverseFunctionalProperty. ?X ?P ?O. ?Y ?P ?O} => {?X = ?Y}.
{?L rdf:rest ?M. ?A owl:distinctMembers ?L} => {?A owl:distinctMembers 
?M}.
{?L rdf:first ?X; rdf:rest ?M. ?M :item ?Y. ?A owl:distinctMembers ?L} => 
{?X owl:differentFrom ?Y}.
{?C owl:oneOf ?L. ?L :item ?X} => {?X a ?C}.
{?R a owl:Restriction; owl:onProperty ?P; owl:allValuesFrom ?A. ?X ?P ?Y; 
a ?R} => {?Y a ?A}.
 
{?L rdf:first ?I; a rdf:List} => {?L :item ?I}.
{?L rdf:rest ?R; a rdf:List. ?R :item ?I} => {?L :item ?I}.
##########################################################
 
 
and then we ask
 
##########################################################
@prefix q: <http://www.w3.org/2004/ql#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix iso: <http://www.tc184-sc4.org/iso15926/part2/2003-12#> .
@prefix : <hans#>.
 
[]
q:select {?X :accordingTo iso:norm};
q:where  {?X a iso:DirectConnection;
             :side1 ?S1;
             :side2 ?S2.
          ?S1 a iso:PhysicalObject, iso:PossibleIndividual.
          ?S2 a iso:PhysicalObject, iso:PossibleIndividual}.
##########################################################
 
 
and get as answer
 
##########################################################
     @prefix : <hans#> .
     @prefix iso: <http://www.tc184-sc4.org/iso15926/part2/2003-12#> .
 
    :direct_connection     :accordingTo iso:norm .
##########################################################
 
of course, this could also be directly obtained when you take as input
iso:PhysicalObject rdfs:subClassOf iso:PossibleIndividual.
but we wanted to test that iso:PossibleIndividual followed from owl rules
as you can see in the following proof trace
 
##########################################################
{{:direct_connection a iso:DirectConnection} e:evidence 
<file:/temp/hans.n3#_14>. 
 {:direct_connection :side1 :flange_on_pump_P-101} e:evidence 
<file:/temp/hans.n3#_15>. 
 {:direct_connection :side2 :flange_on_pipe_A-265-h} e:evidence 
<file:/temp/hans.n3#_16>. 
 {:flange_on_pump_P-101 a iso:PhysicalObject} e:evidence 
<file:/temp/hans.n3#_11>. 
 {{:R1 a owl:Restriction} e:evidence <file:/temp/hans.n3#_18>. 
  {:R1 owl:onProperty :side1} e:evidence <file:/temp/hans.n3#_19>. 
  {:R1 owl:allValuesFrom iso:PossibleIndividual} e:evidence 
<file:/temp/hans.n3#_20>. 
  {:direct_connection :side1 :flange_on_pump_P-101} e:evidence 
<file:/temp/hans.n3#_15>. 
  {:direct_connection a :R1} e:evidence <file:/temp/hans.n3#_14>} 
e:sequent {
 {:flange_on_pump_P-101 a iso:PossibleIndividual} e:evidence 
<file:/temp/hans.n3#_50>}. 
 {:flange_on_pipe_A-265-h a iso:PhysicalObject} e:evidence 
<file:/temp/hans.n3#_12>. 
 {{:R2 a owl:Restriction} e:evidence <file:/temp/hans.n3#_22>. 
  {:R2 owl:onProperty :side2} e:evidence <file:/temp/hans.n3#_23>. 
  {:R2 owl:allValuesFrom iso:PossibleIndividual} e:evidence 
<file:/temp/hans.n3#_24>. 
  {:direct_connection :side2 :flange_on_pipe_A-265-h} e:evidence 
<file:/temp/hans.n3#_16>. 
  {:direct_connection a :R2} e:evidence <file:/temp/hans.n3#_14>} 
e:sequent {
 {:flange_on_pipe_A-265-h a iso:PossibleIndividual} e:evidence 
<file:/temp/hans.n3#_50>}} e:sequent {
{:direct_connection :accordingTo iso:norm} e:evidence 
<http://www.w3.org/2002/07/owl#kb>}. 
 
# Proof found for _:engine_1 in 5732 steps (139770 steps/sec) using 1 
engine (50 triples)
##########################################################
 
 
will need some more time to understand more details of your work..
also, when I converted your ontology-for-data-model.rdf into N3
I found a lot of typed literals clashes such as ""^^xsd:nonNegativeInteger
but is definitely interesting work :)
 
-- 
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
 
[1] http://www.w3.org/2000/10/swap/doc/
[2] http://www.w3.org/2000/10/swap/doc/cwm.html
[3] http://eulersharp.sourceforge.net/
 
 
 
 
 
"Hans Teijgeler" <hans.teijgeler@quicknet.nl>
Sent by: semantic-web-request@w3.org
18/08/2005 14:49
 
 
        To:     <semantic-web@w3.org>
        cc:     (bcc: Jos De_Roo/AMDUS/MOR/Agfa-NV/BE/BAYER)
        Subject:        OWL Full reasoning
 
 
Hi,
 
I have worked out an example of a reasoning problem that we have:
http://www.infowebml.ws/topics/RDF-OWL/85-reasoning/example.htm
 
I have the following questions to the OWL community:
1.      Given the fact that this is clearly an implementation of OWL Full,
can any 
OWL reasoner handle this at present? 
2.      If not yet, may we realistically expect such a capability to be
available 
by the year 2010? 
3.      And if not, why is there OWL Full?
 
Regards,
Hans
 
_______________________ 
Hans Teijgeler
ISO 15926 specialist
www.InfowebML.ws
hans.teijgeler@quicknet.nl
phone +31-72-509 2005 
 
 
 
 

Received on Friday, 19 August 2005 20:00:14 UTC