Opdracht 1

56
Redeneren met EOL EOL OWL Kennis- 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%)

description

22 mei. 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? … - PowerPoint PPT Presentation

Transcript of Opdracht 1

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

Kennisvoorstellingen basisredeneren

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

Vandaag:

Web Onthology Language

en

Eerste orde logica

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

Representatieformalisme 1:

OWLWeb Ontology Language

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

OWL talenzijn subtalen van

de eerste orde logica

Redeneren met EOLEOLOWLKennis-voorstelling

Representatieformalisme 2:

Eerste orde logica

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

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

`

2µnee

ja

nee

`

ja

Bottom

up

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