Opdracht 1 Kies een interessant domein Beantwoord een
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? – … • Kennisvoorstelling Bouw een kennisbank en een (aantal van) redeneermodule(s) (70%) OWL EOL Redeneren met EOL
Kennisvoorstelling en basisredeneren Kennisvoorstelling OWL EOL Redeneren met EOL
Vorige keer Kennisvoorstelling OWL Wat verwachten we van een representatieformalisme? Vandaag: twee representatieformalismen EOL Redeneren met EOL
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 Kennisvoorstelling OWL EOL Redeneren met EOL
Vandaag: Web Onthology Language en Eerste orde logica Kennisvoorstelling OWL EOL Redeneren met EOL
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? Kennisvoorstelling OWL EOL Redeneren met EOL
Representatieformalisme 1: OWL Web Ontology Language Kennisvoorstelling OWL EOL Redeneren met EOL
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 Kennisvoorstelling OWL EOL Redeneren met EOL
Is dat een ontologie? A. Ja B. Nee Carolus Linnaeus, “Systema Naturae” (1735) Kennisvoorstelling OWL EOL Redeneren met EOL
Internet Meer en meer semantische aspecten komen aan bod… Kennisvoorstelling OWL EOL Redeneren met EOL
OWL is de standaardmanier om Internet-kennis voor te stellen Kennisvoorstelling OWL EOL Redeneren met EOL
Internet kennisvoorstelling Toepassingen OWL Logica RDF Nomina schema (Individuen) RDF en RDF/XML en XMLS datatypes URI en naamruimtes Kennisvoorstelling OWL Implementatie EOL Basisontologie Relaties Syntaxis Verwijzingen en symbolen Redeneren met EOL
Internet kennisvoorstelling Toepassingen OWL RDF Nomina schema (Individuen) RDF en RDF/XML en XMLS datatypes Ontologieën Basis URI en naamruimtes Kennisvoorstelling OWL EOL Redeneren met EOL
URI • URI – unieke naam: – URI naam schema: schemaspecifiek deel • http: //www. google. com/ – hetzelfde + fragment • http: //www. win. tue. nl/~aserebre/2 IF 03/#md – een relatief URI (met of zonder fragment) • #md • op http: //www. win. tue. nl/~aserebre/2 IF 03/ is identiek met de vorige Kennisvoorstelling OWL EOL Redeneren met EOL
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. w 3. org/TR/xpath – Kijk ook naar een paper van Maarten Marx. • Hoe zou je XPath gebruiken bij het bouwen van een kennissysteem? Kennisvoorstelling OWL EOL Redeneren met EOL
Naamruimtes Kortschrift die aangeeft dat namen tov een URI worden begrepen: xmlns l=“http: //limburg. nl/” Kennisvoorstelling OWL EOL xmlns nh=“http: //noord-holland. nl/” Redeneren met EOL
XML – e. Xtensible Markup Language <? xml version="1. 0" encoding="ISO-8859 -1" ? > <!-- Voorbeeld --> Declaratie - <ontbijtkaart> - <gerecht> Element <naam>Belgische Wafels</naam> <prijs>5. 00 €</prijs> <calorieën>650</calorieën> Inhoud </gerecht> - <gerecht> <naam>Wentelteefjes</naam> <prijs>4. 50 €</prijs> <calorieën>600</calorieën> </gerecht> </ontbijtkaart> Kennisvoorstelling OWL EOL Redeneren met EOL
• XML is een XMLS datatypes veralgemening van URI en naamruimtes HTML A. Ja B. Nee Kennisvoorstelling OWL EOL Redeneren met EOL
XMLS Datatypes • 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: simple. Type name="Temperature"> <xsd: restriction base="xsd: double"> <xsd: min. Exclusive value="-273. 15"/> </xsd: restriction> </xsd: simple. Type> Kennisvoorstelling OWL EOL Redeneren met EOL
RDF – Resource Description Framework • RDF drietal – <Resource, Eigenschap, Resource> – <Resource, Eigenschap, Waarde> http: //www. literature. org/plays/Romeo. And. Juliet http: //www. literature. org/relations/author http: //www. literature. org/relations/first_published http: //www. literature. org/authors/Shakespeare 1597 Kennisvoorstelling OWL EOL Redeneren met EOL
RDF/XML– XML voorstelling van RDF <rdf: RDF xmlns: litrel=“http: //www. literature. org/relations/”> <rdf: Description rdf: about=“http: //www. literature. org/plays/Romeo. And. Juliet”> <litrel: first_published>1597</litrel: first_published> <litrel: author rdf: resource: =“http: //www. literature. org/authors/Shakespeare’’/> </rdf: Description> … </rdf: RDF> Kennisvoorstelling OWL EOL Redeneren met EOL
RDF/XML– Lidmaatschap <rdf: Description rdf: about=“http: //www. literature. org/plays/Romeo. A nd. Juliet”> <rdf: type Kortschrift rdf: resource: =“http: //www. literature. org/plays/tragedy’’/> </rdf: Description> …xmlns: plays = “http: //www. literature. org/plays/tragedy/” … <plays: tragedy rdf: about=“http: //www. literature. org/plays/Romeo. And. Juliet”> Kennisvoorstelling OWL EOL Redeneren met EOL
RDF/XML– Nieuwe resources <rdf: Description rdf: ID=“http: //www. literature. org/plays/Othello”> <rdf: type rdf: resource: =“http: //www. literature. org/plays/traged y’’/> </rdf: Description> Kennisvoorstelling OWL EOL Redeneren met EOL
• Welke deel van de RDF en RDF/XML kennis kan uitgedrukt worden met behulp XML en XMLS datatypes van RDF? URI en naamruimtes A. Algemene feiten over meerdere objecten B. Basisfeiten over de individuele objecten Kennisvoorstelling OWL EOL Redeneren met EOL
RDFS – RDF Schema – Klassen en Eigenschappen Klassen Eigenschappen = Binaire relaties <rdfs: Class rdf: ID="Motorvoertuig“/> <rdf: Property rdf: ID=“ingeschreven. In”/> Kennisvoorstelling OWL EOL Redeneren met EOL
RDFS – RDF Schema – v • Klassen: Vrachtwagen v Motorvoertuig – <rdfs: sub. Class. Of rdf: resource=“Motorvoertuig"/> • Eigenschappen: Is. Vader. Van v Is. Voorouder. Van – <rdfs: sub. Property. Of rdf: resource=“Is. Voorouder. Van"/> • Eigenschappen en klassen: – <rdf: Property rdf: ID=“ingeschreven. In"> <rdfs: domain rdf: resource="#Motorvoertuig"/> <rdfs: range rdf: resource="#Land"/> </rdf: Property> Kennisvoorstelling OWL EOL Redeneren met EOL
RDF <rdf: Property rdf: ID=“Eigenschap. E”> schema <rdf: sub. Property. Of RDF en RDF/XML rdf: resource=“#Eigenschap. F”> XML en XMLS datatypes </rdf: Property> URI en naamruimtes Dan A. het bereik van Eigenschap. E komt overeen met het bereik van Eigenschap. F. B. het domein van Eigenschap. E komt overeen met het domein van Eigenschap. F. C. A en B zijn waar. D. nog A nog B is waar. Kennisvoorstelling OWL EOL Redeneren met EOL
Jan, Piet, Joris en Corneel Objecten OWL Voorbeeld rdf: Description <rdf: Description rdf: ID=“http: //www. mensen. org/ Joris”> <rdfs: Class rdf: ID: =“man’’/> Typen rdfs: Class <rdf: Property rdf: ID=“heeft”/> Relaties rdf: Property Basisfeiten rdf: Description <man rdf: ID= “http: //www. mensen. org/Joris”> Kennisvoorstelling OWL EOL Redeneren met EOL
OWL <? xml version=“ 1. 0”? > <rdf: RDF naamruimtes> <owl: Ontology rdf: about = “”> – vroegere versies, opmerkingen, … </owl: Ontology> Stellingen over klassen, eigenschappen, … </rdf: RDF> Kennisvoorstelling OWL EOL Redeneren met EOL
OWL • rdf: Class wordt vervangen door owl: Class – <owl: Class rdf: ID=“Geschikt. Voor. Consuptie" /> – owl: equivalent. Class, owl: disjoint. With, … • rdf: Property – wordt vervangen door o. a. owl: Object. Property en owl: Datatype. Property – owl: Functional. Property, owl: inverse. Of, … Kennisvoorstelling OWL EOL Redeneren met EOL
OWL – Jan, Piet, Joris en Corneel <owl: Class rdf: ID=“man“/> <owl: Object. Property rdf: ID=“heeft"> <rdfs: domain rdf: resource=“#mens" /> <rdfs: range rdf: resource=“http: //www. w 3. org/2002/07/owl#Thing" /> </owl: Object. Property> <owl: Class rdf: ID=“meevaarder”> <rdfs: sub. Class. Of rdf: resource = “#man”> <rdfs: sub. Class. Of> <owl: Restriction> <owl: on. Property rdf: resource="#heeft" /> <owl: has. Value rdf: resource="#baard" /> </owl: Restriction> Kennis- </rdfs: sub. Class. Of> OWL EOL Redeneren met EOL voorstelling </owl: Class>
OWL – talen • Afhankelijk van de gebruikte elementen: Meer – Lite later. Kennisvoorstelling OWL EOL DL Redeneren met EOL Full
Welke stelling is juist? OWL-talen A. owl: max. Cardinality kan (Lite/DL/Full) uitgedrukt worden in eerste orde logica met RDF =. schema B. rdf: resource="&owl; Sy RDF en RDF/XML mmetric. Property“ kan niet uitgedrukt worden XMLS in eerste orde logica datatypes met =. URI en naamruimtes Kennisvoorstelling OWL EOL Redeneren met EOL
OWL talen zijn subtalen van de eerste orde logica Kennisvoorstelling OWL EOL Redeneren met EOL
Representatieformalisme 2: Eerste orde logica Kennisvoorstelling OWL EOL Redeneren met EOL
Hoe gaan we het in logica vertalen? • Objecten • Constanten • Typen • Predikaten • Relaties Kennisvoorstelling OWL EOL Redeneren met EOL
Jan, Piet, Joris en Corneel Categorieën Objecten Types Eigenschappen Logica Constanten Predikaten met één argument Relaties Predikaten met heeft(x, y) meerdere argumenten Atomen man(Jan) heeft(Jan, baard) Basisfeiten Algemene feiten Kennisvoorstelling OWL Formules EOL Voorbeeld Jan, Piet, Joris man(x) heeft_baard(x) x (meevaarder(x) (man(x) heeft(x, baard)) Redeneren met EOL
Samenvatting meevaarder(Jan). meevaarder(Piet). “zij varen meevaarder(Joris). mee” meevaarder(Corneel). man(Jan). man(Piet). Impliciete kennis man(Joris). man(Corneel). heeft(Jan, baard). heeft(Piet, baard). heeft(Joris, baard). heeft(Corneel, baard). Kennisvoorstelling OWL meevaarder(x) “al die man(x) “die hebben meevaarder(x) willen …” baarden” heeft(x, baard) EOL Redeneren met EOL
Kennisvoorstelling OWL EOL Redeneren met EOL
Samenvatting meevaarder(Jan). meevaarder(Piet). meevaarder(Joris). meevaarder(Corneel). man(Jan). man(Piet). man(Joris). man(Corneel). meevaarder(x) man(x) meevaarder(x) heeft(x, baard) heeft(Jan, baard). heeft(Piet, baard). heeft(Joris, baard). heeft(Corneel, baard). Kennisvoorstelling OWL EOL Redeneren met EOL
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” Kennisvoorstelling OWL EOL Redeneren met EOL
Structuur van de lessen OWL Voorstellen Uitbreidingen van OWL EOL Inleiding Verwerven Kennis. OWL voorstelling Redeneren Gebruiken EOL Basis LP Uitbreidingen Redeneren met EOL
Redeneren Verkrijgen van de nieuwe kennis vanuit de bestaande Kennisvoorstelling OWL EOL Redeneren met EOL
Logisch redeneren: ² en ` • ² volgt (semantic entailment) – ² als zodra de formules van waar zijn, is ook waar. – {x >1, x < 4, x 2 N} ² x is een priemgetal • ` bewijsbaar – ` : er is een (mechanische) procedure die kan bewijzen als gegeven is – Bewijsprocedure: • zeg “bewezen” voor ieder en Kennisvoorstelling OWL EOL Redeneren met EOL
² 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 ² Kennisvoorstelling OWL EOL Redeneren met EOL
Twee voorbeelden van ` Bottom Up a. k. a. Forward chaining Nieuwe kennis Bestaande kennis: feiten en regels Kennisvoorstelling OWL EOL Redeneren met EOL Top Down a. k. a. Backward chaining
` ? nee Bottom up µ ja nee Kennisvoorstelling OWL EOL 2 Redeneren met EOL ja `
` heeft(Jan, baard)? ` ? meevaarder(Jan). {meevaarder(Jan) } 1. meevaarder(Jan). meevaarder(x) man(x) meevaarder(x) heeft(x, baard) 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 Hoe komen we vantoe aan naar voeg heeft(Jan, baard) . ? Regel: meevaarder(x) man(x). meevaarder(Jan), dus. voeg man(Jan) toe aan 1. Begin met de 2. Gebruik een regel waarvan zijn lichaam deel uitmaakt 5. {heeft(Jan, baard), man(Jan)} µ {meevaarder(Jan), heeft(Jan, baard), van de. Ja!beschikbare kennis. man(Jan)}? 3. Voeg het hoofd van deze regel toe aan . Kennis. OWL Redeneren met EOL 4. Ga terug naar stap. EOL 2. 6. heeft(Jan, baard) 2 {heeft(Jan, baard), man(Jan)}? Ja! voorstelling 7. Dus {meevaarder(Jan) } ` heeft(Jan, baard)
Top-down 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) Top-down meevaarder(Piet) maakt deel uit van het doel 1. Begin met de te verkrijgen kennis (doel). voor x = Piet dus voeg 2. Gebruik een regel waarvan zijn hoofd meevaarder(Piet) deel uitmaakt van meevaarder(Piet) toe. de te verkrijgen kennis. 3. meevaarder(Piet) dus stop. toe en ga naar stap 2. 3. Voeg het lichaam van deze regel Kennisvoorstelling OWL EOL Redeneren met EOL
x. (vogel(x) vliegt(x)). vogel(victor) 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)? Kennisvoorstelling OWL EOL Redeneren met EOL
1. vogel(victor). 2. Regel: vogel(x) vliegt(x). vogel(victor), dus voeg vliegt(victor) toe. 3. Nieuwe kennis is dus: vliegt(victor) vliegt(X) : - vogel(X). vogel(victor). Kennisvoorstelling OWL EOL Redeneren met EOL
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! Kennisvoorstelling OWL EOL Redeneren met EOL
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) Kennisvoorstelling OWL vlinder(victor) vliegtuig(victor) varken(victor) EOL Redeneren met EOL
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? Kennisvoorstelling OWL EOL Redeneren met EOL
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: 2 IN 40 - Heuristic search Kennisvoorstelling OWL EOL Redeneren met EOL
Wat hebben we vandaag gedaan? Toepassingen • Kennisvoorstelling OWL – OWL (XML, RDFS, OWL) – Eerste-orde logica RDF schema Nomina RDF en RDF/XML en XMLS datatypes URI en naamruimtes • Basisredeneren – Top-down of bottom-up – Breedte eerst of diepte eerst Bottom Up a. k. a. Forward chaining Nieuwe kennis Bestaande kennis: feiten en regels Kennisvoorstelling OWL EOL Redeneren met EOL Top Down a. k. a. Backward chaining
- Slides: 56