Post on 31-Dec-2015
description
Redeneren met EOLEOLOWLKennis-voorstelling
Opdracht 1
• Kies een interessant domein.• Beantwoord een aantal vragen (30%):
– Geef 3-5 voorbeelden van objecten, types en relaties in het domein.
– Welk kennisvoorstellingformalisme ga je gebruiken om kennis uit het domein voor te stellen? Waarom?
– …
• Bouw een kennisbank en een (aantal van) redeneermodule(s) (70%)
Redeneren met EOLEOLOWLKennis-voorstelling
Vorige keer
Wat verwachten
we van een
representatie-
formalisme?Vandaag: twee
representatie-
formalismen
Redeneren met EOLEOLOWLKennis-voorstelling
Vragen van de kennisingenieur (herhaling)
• Woordenschat– Wat zijn de belangrijke objecten?– Wat zijn de typen en de eigenschappen van
deze objecten?– Wat zijn de relaties tussen verschillende
objecten?• Expliciete kennis
– Basisfeiten over de individuele objecten– Algemene feiten over meerdere objecten
• Impliciete kennis
Redeneren met EOLEOLOWLKennis-voorstelling
Huiswerk 0
• Andere kennisvoorstellingformalismen!
• Kies en bespreek één van de volgende: semantic networks, frames and scripts, UML, production rules
• Wat zijn de sterke en de zwakke kanten?
Redeneren met EOLEOLOWLKennis-voorstelling
Ontologie?
• leer van de algemene eigenschappen van de dingen
• Wiki: een datamodel die een verzameling begrippen binnen een bepaald domein en relaties tussen deze begrippen voorstelt
Redeneren met EOLEOLOWLKennis-voorstelling
Is dat een ontologie?
A. JaB. Nee
Carolus Linnaeus, “Systema Naturae” (1735)
Redeneren met EOLEOLOWLKennis-voorstelling
Internet
Meer en meer semantische aspecten komen aan bod…
Redeneren met EOLEOLOWLKennis-voorstelling
OWL is de standaardmanier om Internet-kennis
voor te stellen
Redeneren met EOLEOLOWLKennis-voorstelling
Internet kennisvoorstelling
Toepassingen Implementatie
OWL Logica
RDF schema
Nomina (Individuen)
Basisontologie
RDF en RDF/XML Relaties
XML en XMLS datatypes Syntaxis
URI en naamruimtes Verwijzingen en symbolen
Redeneren met EOLEOLOWLKennis-voorstelling
Internet kennisvoorstelling
Toepassingen
OWL
RDF schema
Nomina (Individuen)
RDF en RDF/XML
XML en XMLS datatypes
URI en naamruimtes
Ontologieën
Basis
Redeneren met EOLEOLOWLKennis-voorstelling
URI
• URI – unieke naam:– URI naam schema:schemaspecifiek deel
• http://www.google.com/
– hetzelfde + fragment• http://www.win.tue.nl/~aserebre/2IF03/#md
– een relatief URI (met of zonder fragment)• #md • op http://www.win.tue.nl/~aserebre/2IF03/ is
identiek met de vorige
Redeneren met EOLEOLOWLKennis-voorstelling
Huiswerk 1
• XPath is een andere manier om naar delen van een XML document te verwijzen.
• Schrijf een rapportje over XPath.– Begin hier: http://www.w3.org/TR/xpath– Kijk ook naar een paper van Maarten Marx.
• Hoe zou je XPath gebruiken bij het bouwen van een kennissysteem?
Redeneren met EOLEOLOWLKennis-voorstelling
Naamruimtes
Kortschrift die aangeeft dat namen tov een URI worden begrepen:
xmlns l=“http://limburg.nl/” xmlns nh=“http://noord-holland.nl/”
Redeneren met EOLEOLOWLKennis-voorstelling
XML – eXtensible Markup Language
<?xml version="1.0" encoding="ISO-8859-1" ?> <!-- Voorbeeld --> - <ontbijtkaart>
- <gerecht> <naam>Belgische Wafels</naam> <prijs>5.00 €</prijs> <calorieën>650</calorieën>
</gerecht>- <gerecht>
<naam>Wentelteefjes</naam> <prijs>4.50 €</prijs> <calorieën>600</calorieën>
</gerecht>
</ontbijtkaart>
Inhoud
DeclaratieElement
Redeneren met EOLEOLOWLKennis-voorstelling
• XML is een veralgemening van HTML
A. Ja
B. Nee
XML en XMLS datatypes
URI en naamruimtes
Redeneren met EOLEOLOWLKennis-voorstelling
• XMLS – XML schema– XMLS levert concrete datatypes
• Ingebouwde types:– xsd:int, xsd:date, xsd:string, xsd:boolean, …
• Manieren om nieuwe types aan te maken:<xsd:simpleType name="Temperature"> <xsd:restriction base="xsd:double">
<xsd:minExclusive value="-273.15"/> </xsd:restriction> </xsd:simpleType>
XMLS Datatypes
Redeneren met EOLEOLOWLKennis-voorstelling
• RDF drietal– <Resource,Eigenschap,Resource> – <Resource,Eigenschap,Waarde>
RDF – Resource Description Framework
http://www.literature.org/plays/RomeoAndJuliet
http://www.literature.org/authors/Shakespeare
http://www.literature.org/relations/author
1597
http://www.literature.org/relations/first_published
Redeneren met EOLEOLOWLKennis-voorstelling
<rdf:RDF xmlns:litrel=“http://www.literature.org/relations/”><rdf:Description
rdf:about=“http://www.literature.org/plays/RomeoAndJuliet”> <litrel:first_published>1597</litrel:first_published>
<litrel:author rdf:resource:=“http://www.literature.org/authors/Shakespeare’’/>
</rdf:Description>
…
</rdf:RDF>
RDF/XML– XML voorstelling van RDF
Redeneren met EOLEOLOWLKennis-voorstelling
<rdf:Description rdf:about=“http://www.literature.org/plays/RomeoAndJuliet”> <rdf:type
rdf:resource:=“http://www.literature.org/plays/tragedy’’/> </rdf:Description>
RDF/XML– Lidmaatschap
Kortschrift
…xmlns:plays = “http://www.literature.org/plays/tragedy/” …
<plays:tragedy rdf:about=“http://www.literature.org/plays/RomeoAndJuliet”>
Redeneren met EOLEOLOWLKennis-voorstelling
<rdf:Description rdf:ID=“http://www.literature.org/plays/Othello”> <rdf:type
rdf:resource:=“http://www.literature.org/plays/tragedy’’/>
</rdf:Description>
RDF/XML– Nieuwe resources
Redeneren met EOLEOLOWLKennis-voorstelling
• Welke deel van de kennis kan uitgedrukt worden met behulp van RDF?
A. Algemene feiten over meerdere objecten
B. Basisfeiten over de individuele objecten
RDF en RDF/XML
XML en XMLS datatypes
URI en naamruimtes
Redeneren met EOLEOLOWLKennis-voorstelling
Klassen
Eigenschappen = Binaire relaties
RDFS – RDF Schema – Klassen en Eigenschappen
<rdfs:Class rdf:ID="Motorvoertuig“/>
<rdf:Property rdf:ID=“ingeschrevenIn”/>
Redeneren met EOLEOLOWLKennis-voorstelling
• Klassen: Vrachtwagen v Motorvoertuig– <rdfs:subClassOf rdf:resource=“Motorvoertuig"/>
• Eigenschappen: IsVaderVan v IsVoorouderVan – <rdfs:subPropertyOf rdf:resource=“IsVoorouderVan"/>
• Eigenschappen en klassen:– <rdf:Property rdf:ID=“ingeschrevenIn">
<rdfs:domain rdf:resource="#Motorvoertuig"/>
<rdfs:range rdf:resource="#Land"/>
</rdf:Property>
RDFS – RDF Schema – v
Redeneren met EOLEOLOWLKennis-voorstelling
<rdf:Property rdf:ID=“EigenschapE”><rdf:subPropertyOf rdf:resource=“#EigenschapF”>
</rdf:Property>Dan
A. het bereik van EigenschapE komt overeen met het bereik van EigenschapF.
B. het domein van EigenschapE komt overeen met het domein van EigenschapF.
C. A en B zijn waar.D. nog A nog B is waar.
RDF schema
RDF en RDF/XML
XML en XMLS datatypes
URI en naamruimtes
Redeneren met EOLEOLOWLKennis-voorstelling
Jan, Piet, Joris en Corneel
OWL Voorbeeld
Objecten rdf:Description <rdf:Description rdf:ID=“http://www.mensen.org/Joris”>
Typen rdfs:Class <rdfs:Class rdf:ID:=“man’’/>
Relaties rdf:Property <rdf:Property rdf:ID=“heeft”/>
Basisfeiten rdf:Description <man rdf:ID= “http://www.mensen.org/Joris”>
Redeneren met EOLEOLOWLKennis-voorstelling
OWL
<?xml version=“1.0”?><rdf:RDF naamruimtes><owl:Ontology rdf:about = “”>
– vroegere versies, opmerkingen, …
</owl:Ontology>Stellingen over klassen, eigenschappen, …
</rdf:RDF>
Redeneren met EOLEOLOWLKennis-voorstelling
• rdf:Class wordt vervangen door owl:Class – <owl:Class rdf:ID=“GeschiktVoorConsuptie" />– owl:equivalentClass, owl:disjointWith, …
• rdf:Property – wordt vervangen door o.a.
owl:ObjectProperty en owl:DatatypeProperty– owl:FunctionalProperty, owl:inverseOf, …
OWL
Redeneren met EOLEOLOWLKennis-voorstelling
<owl:Class rdf:ID=“man“/>
<owl:ObjectProperty rdf:ID=“heeft"> <rdfs:domain rdf:resource=“#mens" /> <rdfs:range
rdf:resource=“http://www.w3.org/2002/07/owl#Thing" /></owl:ObjectProperty>
<owl:Class rdf:ID=“meevaarder”> <rdfs:subClassOf rdf:resource = “#man”>
<rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#heeft" /> <owl:hasValue rdf:resource="#baard" /> </owl:Restriction>
</rdfs:subClassOf></owl:Class>
OWL – Jan, Piet, Joris en Corneel
Redeneren met EOLEOLOWLKennis-voorstelling
• Afhankelijk van de gebruikte elementen:
OWL – talen
Lite DL Full
Meer – later.
Redeneren met EOLEOLOWLKennis-voorstelling
Welke stelling is juist?A. owl:maxCardinality kan
uitgedrukt worden in eerste orde logica met = .
B. rdf:resource="&owl;SymmetricProperty“ kan niet uitgedrukt worden in eerste orde logica met =.
OWL-talen (Lite/DL/Full)
RDF schema
RDF en RDF/XML
XML en XMLS datatypes
URI en naamruimtes
Redeneren met EOLEOLOWLKennis-voorstelling
• Objecten
• Typen
• Relaties
• Constanten
• Predikaten
Hoe gaan we het in logica vertalen?
Redeneren met EOLEOLOWLKennis-voorstelling
Jan, Piet, Joris en Corneel
Categorieën Logica Voorbeeld
Objecten Constanten Jan, Piet, Joris
TypesEigenschappen
Predikaten met één argument
man(x)heeft_baard(x)
Relaties Predikaten met meerdere argumenten
heeft(x,y)
Basisfeiten Atomen man(Jan) heeft(Jan,baard)
Algemene feiten
Formules x (meevaarder(x) (man(x) heeft(x,baard))
Redeneren met EOLEOLOWLKennis-voorstelling
Samenvatting
man(Jan).man(Piet).man(Joris). man(Corneel).
heeft(Jan,baard).heeft(Piet,baard).heeft(Joris,baard).heeft(Corneel,baard).
meevaarder(Jan).meevaarder(Piet).meevaarder(Joris). meevaarder(Corneel).
Impliciete kennis
“die hebben baarden”
“zij varen mee”
meevaarder(x) man(x)meevaarder(x) heeft(x,baard)
“al die willen…”
Redeneren met EOLEOLOWLKennis-voorstelling
Samenvatting
man(Jan).man(Piet).man(Joris). man(Corneel).
heeft(Jan,baard).heeft(Piet,baard).heeft(Joris,baard).heeft(Corneel,baard).
meevaarder(Jan).meevaarder(Piet).meevaarder(Joris). meevaarder(Corneel).
meevaarder(x) man(x)meevaarder(x) heeft(x,baard)
Redeneren met EOLEOLOWLKennis-voorstelling
Feiten en regels
• Feiten – Gaan meestal over individuele objecten en
eigenschappen• “Jan is een man”
• Regels– Gaan meestal over types en relaties
• “Ieder meevaarder is een man”
Redeneren met EOLEOLOWLKennis-voorstelling
Structuur van de lessen
Inleiding
Voorstellen
GebruikenVerwerven
Redeneren
OWL
EOL LP
Basis Uitbreidingen
Uitbreidingen van OWL
Redeneren met EOLEOLOWLKennis-voorstelling
Redeneren
Verkrijgen van de nieuwe kennis
vanuit de bestaande
Redeneren met EOLEOLOWLKennis-voorstelling
Logisch redeneren: ² en `• ² volgt (semantic entailment)
– ² als zodra de formules van waar zijn, is ook waar.
– {x >1, x < 4, x2N} ² x is een priemgetal
• ` bewijsbaar– ` : er is een (mechanische) procedure die
kan bewijzen als gegeven is– Bewijsprocedure:
• zeg “bewezen” voor ieder en
Redeneren met EOLEOLOWLKennis-voorstelling
² en `
• Voor de meeste systemen– Als ` dan ² – Controleren of ² vereist na te gaan alle
situaties dat waar is• Er zijn soms oneindig veel!
– Daarom controleer of `
• Voor logisch programmeren:– .` dan en slechts dan als ²
Redeneren met EOLEOLOWLKennis-voorstelling
Twee voorbeelden van `
TopDown a.k.a.
Backwardchaining
BottomUp
a.k.a. Forward chaining
Bestaande kennis:
feiten en regels
Nieuwe kennis
Redeneren met EOLEOLOWLKennis-voorstelling
`
Hoe komen we van naar ?1. Begin met de .
2. Gebruik een regel waarvan zijn lichaam deel uitmaakt van de beschikbare kennis.
3. Voeg het hoofd van deze regel toe aan 4. Ga terug naar stap 2.
meevaarder(Jan).meevaarder(x) man(x)meevaarder(x) heeft(x,baard)
1. meevaarder(Jan).
2. Iteratie 1. Regel: meevaarder(x) heeft(x,baard). meevaarder(Jan), dus voeg heeft(Jan,baard) toe aan . Regel: meevaarder(x) man(x). meevaarder(Jan), dus voeg man(Jan) toe aan
3. {heeft(Jan,baard), man(Jan)} µ {meevaarder(Jan) } ? Nee!
4. Iteratie 2. Regel: meevaarder(x) heeft(x,baard). meevaarder(Jan), dus voeg heeft(Jan,baard) toe aan . Regel: meevaarder(x) man(x). meevaarder(Jan), dus voeg man(Jan) toe aan
5. {heeft(Jan,baard), man(Jan)} µ {meevaarder(Jan), heeft(Jan,baard), man(Jan)}? Ja!
6. heeft(Jan,baard) 2 {heeft(Jan,baard), man(Jan)}? Ja!
7. Dus {meevaarder(Jan) }` heeft(Jan,baard)
{meevaarder(Jan) }` heeft(Jan,baard)?
Redeneren met EOLEOLOWLKennis-voorstelling
Top-down
Top-down1. Begin met de te verkrijgen kennis (doel).
2. Gebruik een regel waarvan zijn hoofd deel uitmaakt van de te verkrijgen kennis.
3. Voeg het lichaam van deze regel toe en ga naar stap 2.
meevaarder(Jan).meevaarder(Piet).
meevaarder(x) man(x)meevaarder(x) heeft(x,baard)
1. Doel: heeft(Piet,baard).2. Regel:
meevaarder(x) heeft(x,baard). heeft(x,baard) maakt deel uit van het doel voor x = Piet dus voeg meevaarder(Piet) toe.
3. meevaarder(Piet) dus stop.
heeft(Piet,baard)
meevaarder(Piet)
meevaarder(x) heeft(x,baard)
meevaarder(Piet)
Redeneren met EOLEOLOWLKennis-voorstelling
Groep A: Bottom-up.
Hoeveel iteraties hebben jullie nodig om te bewijzen dat Victor vliegt?
Groep B: Top-down
Hoeveel stappen hebben jullie nodig om tot te komen vanuit vliegt(victor)?
x.(vogel(x) vliegt(x)).vogel(victor)
Redeneren met EOLEOLOWLKennis-voorstelling
vliegt(victor)
vogel(victor)
vliegt(X) :- vogel(X).
vogel(victor).
1. vogel(victor).2. Regel: vogel(x) vliegt(x).
vogel(victor), dus voeg vliegt(victor) toe.
3. Nieuwe kennis is dus: vliegt(victor).
Redeneren met EOLEOLOWLKennis-voorstelling
Bottom-up vs. Top-down
• Top-down– Doelgericht, efficient– Weinig mogelijke conclusies zijn relevant
• Bottom-up– Weinig basiskennis is nodig– Veel mogelijke conclusies zijn relevant
• Aantal stappen is gelijk!
Redeneren met EOLEOLOWLKennis-voorstelling
Top-down: Meerdere regels van toepassing?
vliegt(x) :- vogel(x).vliegt(x) :- vliegtuig(x).vliegt(x) :- vlinder(x).vliegt(x) :- varken(x).
vliegt(victor)
vogel(victor) varken(victor)vlinder(victor) vliegtuig(victor)
Redeneren met EOLEOLOWLKennis-voorstelling
Ter herinnering: breedte eerst of diepte eerst?
• Breedte eerst– De goede oplossingen liggen niet te diep– Geheugen is geen probleem
• Diepte eerst– Efficiënter qua geheugengebruik– Maar wat als we de verkeerde pad kiezen?
Redeneren met EOLEOLOWLKennis-voorstelling
Huiswerk 2
• Kunnen we niet beter doen dan breedte eerst of diepte eerst?– Ja, als we meer weten over onze boom…
• Schrijf een rapportje over de heuristische zoekalgoritmen.– Wat is een heuristisch zoekalgoritme?– Wat zijn de aannames om die toe te passen?– Hoe kunnen we dat op de SLD-bomen toepassen?
• Sleutelwoorden: informed search, heuristic search, iterative diepening, A*, Hill Climbing
• Vervolgvak: 2IN40 - Heuristic search
Redeneren met EOLEOLOWLKennis-voorstelling
Wat hebben we vandaag gedaan?
• Kennisvoorstelling– OWL (XML, RDF, RDFS, OWL)– Eerste-orde logica
• Basisredeneren– Top-down of bottom-up– Breedte eerst of diepte eerst
Toepassingen
OWL
RDF schema
Nomina
RDF en RDF/XML
XML en XMLS datatypes
URI en naamruimtes
TopDown a.k.a.
Backwardchaining
BottomUp
a.k.a. Forward chaining Bestaande
kennis:
feiten en regels
Nieuwe kennis