- From: <jos.deroo@agfa.com>
- Date: Tue, 26 Aug 2008 01:33:49 +0200
- To: jos.deroo@agfa.com
- Cc: www-archive@w3.org
- Message-ID: <OF34943D56.E65A9A37-ONC12574B0.00809DC0-C12574B0.008170EE@agfa.com>
Some more background as we should be as explicit as possible.. As engineers we all too often assume an "all knowledge is contained in here" which is of course never working out. By dropping this assumption for ever, the Semantic Web gives us a means to achieve a fresh "Socratic Completeness": To solve a problem, it would be broken down into a series of questions, the answers to which gradually distill the answer you seek -- Socrates Having running code and simple test cases is a practical way to tackle real world problems. This has to go hand in hand with a sharp theoretical foundation based on classical logic which is all we need because: The property of formal derivability is semidecidable: there is an algorithm by means of which, if a sentence S is in fact formally derivable from a sentence P, then this fact can be mechanically detected -- John Alan Robinson In our Semantic Web applications we actually use N3 as the "legislation" language, the JVM as an "execution" platform and Euler SEM as a "reasoning" engine which is open sourced at http://eulersharp.sourceforge.net/ Kind Regards, Jos De Roo | Agfa HealthCare Senior Researcher | HE/Advanced Clinical Applications Research T +32 3444 6256 Quadrat NV, Kortrijksesteenweg 157, 9830 Sint-Martens-Latem, Belgium http://www.agfa.com/healthcare/ R.O.: Septestraat 27, B-2640 Mortsel, Belgium | RLE Antwerp | VAT BE 0403.003.524 | IBAN BE03570124715584 | Citibank International PLC, B-1050 Brussels Click on link to read important disclaimer: http://www.agfa.com/healthcare/maildisclaimer Jos De Roo/AMDUS/AGFA 08/14/2008 11:43 PM To www-archive@w3.org cc Subject N3 SEM proof for simple test case using e:disjunction -- in 21 msec GIVEN -- http://eulersharp.sourceforge.net/2007/07test/socrates.n3 +++++ --8<-- :socrates a :Human. :socrates a :NonFemale. :NonFemale owl:disjointWith :Female. :Human rdfs:subClassOf :MaleOrFemale. :MaleOrFemale owl:unionOf (:Female :Male). :Female rdfs:subClassOf :Mortal. :Male rdfs:subClassOf :Mortal. ### RDF plus OWL support {?X a ?Y. ?Y rdfs:subClassOf ?Z} => {?X a ?Z}. {?X a ?Y. ?Y owl:disjointWith ?Z. ?X a ?Z} => false. {?I a ?X. ?X rdfs:subClassOf ?Y. ?Y owl:unionOf (?A ?B)} => ({?I a ?A} {?I a ?B})!e:disjunction. {?I a ?X. ?X rdfs:subClassOf ?Y. ?Y owl:unionOf (?A ?B ?C)} => ({?I a ?A} {?I a ?B} {?I a ?C})!e:disjunction. --8<-- QUERY -- http://eulersharp.sourceforge.net/2007/07test/socratesQ.n3 +++++ --8<-- {?X a ?Y} => {?X a ?Y}. --8<-- PROOF -- http://eulersharp.sourceforge.net/2007/07test/socratesE.n3 +++++ --8<-- [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :Human}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :Human.}]. [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :NonFemale}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :NonFemale}; r:because [ a r:Parsing; r:source nsp0:pos_384_line_9]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :NonFemale.}]. [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :MaleOrFemale}; r:evidence ( [ a r:Inference; r:gives {:socrates a :MaleOrFemale}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]] [ a r:Extraction; r:gives {:Human rdfs:subClassOf :MaleOrFemale}; r:because [ a r:Parsing; r:source nsp0:pos_443_line_12]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_611_line_20]]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :MaleOrFemale.}]. [ e:falseModel {:socrates a :Female} ; e:because [ e:integrityConstraint {{:socrates a :NonFemale. :NonFemale owl:disjointWith :Female. :socrates a :Female} => false} ; e:selected [ e:triple {:socrates a :NonFemale} ; e:falseAncestors {} ; e:falseDecendents {} ; e:consistentGives {:socrates a :Human. :NonFemale owl:disjointWith :Female. :Human rdfs:subClassOf :MaleOrFemale. :MaleOrFemale owl:unionOf (:Female :Male). :Female rdfs:subClassOf :Mortal. :Male rdfs:subClassOf :Mortal. :socrates a :MaleOrFemale. :socrates a :Female. :socrates a :Mortal} ] ; e:selected [ e:triple {:NonFemale owl:disjointWith :Female} ; e:falseAncestors {} ; e:falseDecendents {} ; e:consistentGives {:socrates a :Human. :socrates a :NonFemale. :Human rdfs:subClassOf :MaleOrFemale. :MaleOrFemale owl:unionOf (:Female :Male). :Female rdfs:subClassOf :Mortal. :Male rdfs:subClassOf :Mortal. :socrates a :MaleOrFemale. :socrates a :Female. :socrates a :Mortal} ] ; e:selected [ e:triple {:socrates a :Female} ; e:falseAncestors {} ; e:falseDecendents {} ; e:consistentGives {:socrates a :Human. :socrates a :NonFemale. :NonFemale owl:disjointWith :Female. :Human rdfs:subClassOf :MaleOrFemale. :MaleOrFemale owl:unionOf (:Female :Male). :Female rdfs:subClassOf :Mortal. :Male rdfs:subClassOf :Mortal. :socrates a :MaleOrFemale} ] ] ; r:gives { [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :Female}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Female}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]] [ a r:Extraction; r:gives {:Human rdfs:subClassOf :MaleOrFemale}; r:because [ a r:Parsing; r:source nsp0:pos_443_line_12]] [ a r:Extraction; r:gives {:MaleOrFemale owl:unionOf (:Female :Male)}; r:because [ a r:Parsing; r:source nsp0:pos_488_line_13]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_713_line_24]]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :Female.}]. [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :Mortal}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Mortal}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Female}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]] [ a r:Extraction; r:gives {:Human rdfs:subClassOf :MaleOrFemale}; r:because [ a r:Parsing; r:source nsp0:pos_443_line_12]] [ a r:Extraction; r:gives {:MaleOrFemale owl:unionOf (:Female :Male)}; r:because [ a r:Parsing; r:source nsp0:pos_488_line_13]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_713_line_24]]] [ a r:Extraction; r:gives {:Female rdfs:subClassOf :Mortal}; r:because [ a r:Parsing; r:source nsp0:pos_525_line_14]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_611_line_20]]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :Mortal.}]. }]. [ e:possibleModel {:socrates a :Male} ; r:gives { [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :Male}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Male}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]] [ a r:Extraction; r:gives {:Human rdfs:subClassOf :MaleOrFemale}; r:because [ a r:Parsing; r:source nsp0:pos_443_line_12]] [ a r:Extraction; r:gives {:MaleOrFemale owl:unionOf (:Female :Male)}; r:because [ a r:Parsing; r:source nsp0:pos_488_line_13]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_713_line_24]]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :Male.}]. [ a r:Proof, r:Conjunction; r:component [ a r:Inference; r:gives {:socrates a :Mortal}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Mortal}; r:evidence ( [ a r:Inference; r:gives {:socrates a :Male}; r:evidence ( [ a r:Extraction; r:gives {:socrates a :Human}; r:because [ a r:Parsing; r:source nsp0:pos_364_line_8]] [ a r:Extraction; r:gives {:Human rdfs:subClassOf :MaleOrFemale}; r:because [ a r:Parsing; r:source nsp0:pos_443_line_12]] [ a r:Extraction; r:gives {:MaleOrFemale owl:unionOf (:Female :Male)}; r:because [ a r:Parsing; r:source nsp0:pos_488_line_13]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_713_line_24]]] [ a r:Extraction; r:gives {:Male rdfs:subClassOf :Mortal}; r:because [ a r:Parsing; r:source nsp0:pos_556_line_15]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp0:pos_611_line_20]]]); r:rule [ a r:Extraction; r:because [ a r:Parsing; r:source nsp1:pos_728_line_11]]]; r:gives { :socrates a :Mortal.}]. }]. #ENDS 21 msec. --8<-- README -- http://eulersharp.sourceforge.net/README plus http://eulersharp.sourceforge.net/GUIDE Kind Regards, Jos De Roo | Agfa HealthCare Senior Researcher | HE/Advanced Clinical Applications Research T +32 3444 6256 Quadrat NV, Kortrijksesteenweg 157, 9830 Sint-Martens-Latem, Belgium http://www.agfa.com/healthcare/ R.O.: Septestraat 27, B-2640 Mortsel, Belgium | RLE Antwerp | VAT BE 0403.003.524 | IBAN BE03570124715584 | Citibank International PLC, B-1050 Brussels Click on link to read important disclaimer: http://www.agfa.com/healthcare/maildisclaimer
Received on Monday, 25 August 2008 23:34:34 UTC