- From: <jos.deroo@agfa.com>
- Date: Fri, 19 Aug 2005 13:59:08 +0200
- To: hans.teijgeler@quicknet.nl
- Cc: semantic-web@w3.org
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 11:59:30 UTC