RE: OWL Full reasoning

Hi Jos,

 

Picking up the thread of what you said before:

QUOTE

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 :)

UNQUOTE

 

We have some places in the model where we have literals:

ExpressBinary

ExpressBoolean

ExpressInteger

ExpressLogical

ExpressReal

ExpressString.

MultidimensionalObject

ClassOfMultidimensionalObject

 

To start with the first six we have, for OWL, the unusual situation that
these are owl:Class'es that have a Property 'content', and that Property has
as range the applicable EXPRESS literal, mapped to the matching XML Schema
literal.

 

The reasons for that are:

- it allows us to type it with the applicable language and/or format;

- it allows us to easily model a translation into another language and/or
format;

- it allows us to stay generic as long as is possible, because these six are
subclasses of ClassOfInformationRepresentation.

 

-----------------------------------

 

Then we have the ClassOfMultidimensionalObject and the
MultidimensionalObject:

 

The ClassOfMultidimensionalObject has five Properties, each of them is a
List (I don't know how to model that in OWL):

 

    <owl:Class rdf:ID="ClassOfMultidimensionalObject">

        <rdfs:subClassOf rdf:resource="#ClassOfAbstractObject"/>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#cardinalities"/>

                <owl:allValuesFrom rdf:resource="#Cardinality"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#optionalElement"/>

                <owl:allValuesFrom
rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#parameters"/>

                <owl:allValuesFrom rdf:resource="#Thing"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#parameterPosition"/>

                <owl:allValuesFrom
rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#roles"/>

                <owl:allValuesFrom rdf:resource="#RoleAndDomain"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:comment
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">

            DEFINITION A ClassOfMultidimensionalObject is a
ClassOfAbstractObject whose

            members are instances of MultidimensionalObject . The role
played by each

            position in the classified MultidimensionalObject is specified
at the same

            position in the roles attribute. Constant values that apply to
any position

            in the roles attribute are specified in the same position in the
parameters

            attribute. The cardinalities for the roles attribute are
specified by the

            same position in the cardinalities attribute.

        </rdfs:comment>

        <rdfs:comment
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">

            EXAMPLE The definition of the input to a function y = a + bx to
convert

            Celsius to Fahrenheit with roles [a, b, x] defining the input

            MultidimensionalObject , and parameter list [32,1.8,] is an
example of a

            ClassOfMultidimensionalObject .

        </rdfs:comment>

    </owl:Class>

 

The MultidimensionalObject has two Properties, each of them is a List

 

    <owl:Class rdf:ID="MultidimensionalObject">

        <rdf:type rdf:resource="#ClassOfMultidimensionalObject"/>

        <rdfs:subClassOf rdf:resource="#AbstractObject"/>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#elements"/>

                <owl:allValuesFrom rdf:resource="#Thing"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Restriction>

                <owl:onProperty rdf:resource="#position"/>

                <owl:allValuesFrom
rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>

            </owl:Restriction>

        </rdfs:subClassOf>

        <rdfs:comment
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">

            DEFINITION A MultidimensionalObject is an AbstractObject that is
an

            ordered list of Thing . The significance of the
MultidimensionalObject is

            determined by being a member of a ClassOfMultidimensionalObject
that

            indicates the role played by each of its elements.

        </rdfs:comment>

        <rdfs:comment
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">

            NOTE The MultidimensionalObject [A,B,C] is different from
[B,C,A].

        </rdfs:comment>

        <rdfs:comment
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">

            EXAMPLE '[32, 1.8, 20]' is a MultidimensionalObject that may be
specified to

            be the input parameters for the function y=a+bx to convert 20
Celsius to

            Fahrenheit.

        </rdfs:comment>

    </owl:Class>

 

I know, it looks pretty crazy, but these are a necessary entity types in our
model. I would be much obliged to get a hint how to squeeze this in OWL.

 

Regards,

Hans

 

PS The above is taken from the Ontology for Data Model

http://www.infowebml.ws/links/ontology-for-data-model.rdf 

 

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


From: jos.deroo@agfa.com [mailto:jos.deroo@agfa.com] 
Sent: Friday, August 19, 2005 10:44 PM
To: hans.teijgeler@quicknet.nl
Cc: semantic-web@w3.org
Subject: RE: OWL Full reasoning

 

Hi, Hans

 

The OWL Full reasoning that engines like cwm and euler are

doing is via an explicit set of rules that you give them.

In the past years I did some such rules at

http://eulersharp.sourceforge.net/2003/03swap/rdfs-rules.n3

http://eulersharp.sourceforge.net/2003/03swap/owl-rules.n3

but I wouldn't really recommend those as it was mainly done

to check the RDF and OWL test cases.

 

Our practical experience (in healthcare domain) is that a few

rules are fine for many cases and one such set is at

http://eulersharp.sourceforge.net/2003/03swap/rpo-rules.n3

(but you will need more rules :))

 

 

I prefer to have public communcation where possible..

(and am still in vacation till end of next week :))

In order to see what we talk about I've copied the N3 file to

http://eulersharp.sourceforge.net/2004/04test/ontology-for-data-model.n3

(obtained via java -Xmx1200m jena.rdfcopy %1 RDF/XML N3)

and it are those ""^^xsd:nonNegativeInteger that are not fine

i.e. you should have something like "2"^^xsd:nonNegativeInteger

 

Have a very nice weekend :)

(een prettig weekend :))

 

-- 

Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/

 

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

 

 

"Hans Teijgeler" <hans.teijgeler@quicknet.nl>

19/08/2005 21:59

 

 

        To:     Jos De_Roo/AMDUS/MOR/Agfa-NV/BE/BAYER@AGFA

        cc:     <semantic-web@w3.org>

        Subject:        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

 

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

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 Wednesday, 24 August 2005 07:51:19 UTC