350 likes | 534 Views
OWL: Ontology Web Language. Pierluigi D’Amadio a.a.2003/2004. OWL. Semantics. RDF(S). RDF. XML. Syntax. Web Semantico: una visione?. Estensione del WWW: Macchine capaci di processare e di “capire” il significato dei dati Linguaggi proposti dal W3C. Ontologie: definizioni a confronto.
E N D
OWL: Ontology Web Language Pierluigi D’Amadio a.a.2003/2004
OWL Semantics RDF(S) RDF XML Syntax Web Semantico: una visione? • Estensione del WWW: • Macchine capaci di processare e di “capire” il significato dei dati • Linguaggi proposti dal W3C
Ontologie: definizioni a confronto • “a systematic explanation of being” (Philosophy) • “… defines the basic terms and relations including the vocabulary of a topic area as well as the rules for combining terms and relations to define extensions to the vocabulary.” (Neches) • “… an explicit specification of a conceptualization.” (Gruber) • “An ontology is a formal and explicit specification of a shared conceptualization.” (Borst) • “… a logical theory which gives an explicit, partial account of a conceptualization.” (Guarino)
XML • Vantaggi: • estendibilità del linguaggio: ciascuno ha la possibilità di scrivere un proprio schema • fornisce uno standard per rappresentare le informazioni tramite alberi etichettati • Svantaggi: • La semantica non è specificata formalmente
RDF versus XML • In XML è importante l’ordine con cui sono fatte le asserzioni, in RDF no. • La semantica in RDF è specificata formalmente, in XML è immersa nelle etichette che si associano ai tag e nella sintassi del DTD. • La specifica formale di RDF è raggiungibile a: • http://www.w3.org/TR/REC-rdf-syntax/
RDF: Modello • Soggetto: La risorsa che si vuole descrivere • Predicato: Una proprietà della risorsa • Oggetto: Il valore della proprietà • Una combinazione dei precedenti elementi è detta statement (o regola) emptiesInto River BodyOfWater Il valore della proprietà [Oggetto] Una proprietà della risorsa [Predicato] La risorsa che si vuole descrivere [Soggetto]
RDF: Esempio RDF fornisce l’attributo ID per identificare la risorsa che viene descritta. 1 L’attributo ID vive nel namespace RDF. 2 <?xml version="1.0"?> <River rdf:ID="Yangtze" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.geodesy.org/river#"> <length>6300 kilometers</length> <startingLocation>western China's Qinghai-Tibet Plateau</startingLocation> <endingLocation>East China Sea</endingLocation> </River> L’identificatore "fragment” indica la fine del namespace. 3
emptiesInto BodyOfWater River range domain RDF Schema • RDF Schema fornisce nozioni di modellazione per: • esprimere classi (Class) e le interrelazioni tra classi (subClassOf). • definire proprietà (Property,subPropertyOf) e associarle alle classi. • domain, range • definire le istanze (non necessariamente ground) con la proprietà type type River Yangtzee
OWL: Sommario • Origini di OWL • Properties • Symmetric, Transitive, Functional, Inverse Functional • range, domain, subPropertyOf, inverseOf, equivalentProperty • Class • SubClassOf, intersectionOf, unionOf, complementOf, Enumeration, Equivalence, Disjoint • Statements sulle istanze ground • sameIndividualAs,DIfferentFrom,AllDifferent • 3 facce di Owl • Lite,DL,Full
Origini di OWL DAML OIL RDF Tutti influenzati da RDF DAML = DARPA Agent Markup Language OIL = Ontology Inference Layer DAML+OIL OWL
Definire Property in OWL • OWL usa rdfs:range, rdfs:domain, e rdfs:subPropertyOf. • OWL introduce due classi di Property: • owl:ObjectProperty è la classe di proprietà che hanno come valore un oggetto istanza di una classe (Resource2Resource) • owl:DatatypeProperty è la classe di proprietà che hanno come valore un dato di tipo semplice o strutturato (rdfs:Literal o XML Schema built-in datatype)
Gerarchia delle property classes rdf:Property owl:InverseFunctionalProperty owl:DatatypeProperty owl:FunctionalProperty owl:ObjectProperty owl:TransitiveProperty owl:SymmetricProperty • FunctionalProperty e InverseFunctionalProperty possono essere usate per associare • Resources a Resources, oppure Resources a un RDF Schema Literal o a un XML(S) datatype. • InverseProperty è una proprietà di ObjectProperty
Esempio: la tassonomia delle sorgenti d’acqua NaturallyOccurringWaterSource BodyOfWater Stream Brook River Ocean Tributary Lake Sea Rivulet
Symmetric Properties type SymmetricProperty connectsTo Se un sorgente d’acqua A connectsTo una sorgente B, allora la sorgente B connectsTo A. NaturallyOccurringWaterSource Properties: connectsTo: NaturallyOccurringWaterSource <owl:ObjectProperty rdf:ID="connectsTo"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#SymmetricProperty"/> <rdfs:domain rdf:resource="#NaturallyOccurringWaterSource"/> <rdfs:range rdf:resource="#NaturallyOccurringWaterSource"/> </owl:ObjectProperty>
Transitive Properties type TransitiveProperty containedIn Se A è containedIn B, B è containedIn C allora A è containedIn C. Properties: containedIn: BodyOfWater Sea <owl:ObjectProperty rdf:ID=“containedIn"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#TransitiveProperty"/> <rdfs:domain rdf:resource="#Sea"/> <rdfs:range rdf:resource="#BodyOfWater"/> </owl:ObjectProperty>
Functional Properties type FunctionalProperty emptiesInto Per ogni istanza c’è al più un valore per la property Properties: emptiesInto: BodyOfWater River <owl:ObjectProperty rdf:ID=“containedIn"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> <rdfs:domain rdf:resource="#Sea"/> <rdfs:range rdf:resource="#BodyOfWater"/> </owl:ObjectProperty>
Inverse Properties inverseOf emptiesInto feedsFrom Se una proprietà P1 associa la Resource1 alla Resource2, allora la Inverse property associa la Resource2 alla Resource1 Properties: emptiesInto: BodyOfWater Properties: feedsFrom: River River BodyOfWater <owl:ObjectProperty rdf:ID="feedsFrom"> <owl:inverseOf rdf:resource="#emptiesInto"/> <rdfs:domain rdf:resource="#BodyOfWater"/> <rdfs:range rdf:resource="#River"/> </owl:ObjectProperty
Inverse Functional Properties Per un dato valore di range il dominio è unico Properties: emptiesInto: BodyOfWater Properties: feedsFrom: River River BodyOfWater (functional) <owl:ObjectProperty rdf:ID="feedsFrom"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/> <owl:inverseOf rdf:resource="#emptiesInto"/> <rdfs:domain rdf:resource="#BodyOfWater"/> <rdfs:range rdf:resource="#River"/> </owl:ObjectProperty>
Global vs Local Flueve: a River emptiesInto Sea Properties: emptiesInto: BodyOfWater River • rdfs:range stabilisce una global restriction su emptiesInto, ossia, rdfs:range value si applica a River e a tutte le sottoclassi di River. • Nel contesto di Flueve, vogliamo restringere il range della property emptiesInto alla sola classe Sea, ossia vogliamo una local restrictionof emptiesInto. Flueve
<rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#emptiesInto"/> <owl:allValuesFrom rdf:resource="#Sea"/> </owl:Restriction> </rdfs:subClassOf> 2 anonymous class Specifica la risorsa usando owl:Restriction. Specifica che tutti i valori sono presi da Sea Due forme di rdfs:subClassOf <rdfs:subClassOf rdf:resource="#River"/> 1 Specifica la classe usando l’attributo rdf:resource.
Restrizioni • Tutti i valori devono appartenere ad una data classe (allValuesFrom). • Al più un valore deve appartenere ad una certa classe (someValuesFrom). • La restrizione prescrive un valore specifico (hasValue). • La restrizione impone un vincolo sulla cardinalità delle occorrenze dell’attributo (cardinality,mincardinality,maxcardinality)
rdfs:Class owl:Class Definire Classi in OWL • Le classi di OWL sono molto più espressive delle classi di RDF Schema classes. <rdfs:Class rdf:ID="River"> <rdfs:subClassOf rdf:resource="#Stream"/> </rdfs:Class> <owl:Class rdf:ID="River"> <rdfs:subClassOf rdf:resource="#Stream"/> </owl:Class> RDFS OWL
Classi: Esempio River Properties: emptiesInto: BodyOfWater Flueve (French): “un fiume che sfocia nel mare". Flueve Rivìere (French): “un fiume che sfocia in un lago o in un altro fiume”. Rivìere
intersectionOf <owl:Class rdf:ID="Flueve"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#River"/> <owl:Restriction> <owl:onProperty rdf:resource="#emptiesInto"/> <owl:allValuesFrom rdf:resource="#Sea"/> </owl:Restriction> </owl:intersectionOf> </owl:Class> I membri di questa classe anonima sono istanze che hanno la proprietà emptiesInto in cui tutti i valori sono istanze di Sea. River Flueve
L’ereditarietà multipla <owl:Class rdf:ID="Flueve"> <rdfs:subClassOf rdf:resource="#River"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#emptiesInto"/> <owl:allValuesFrom rdf:resource="#Sea"/> </owl:Restriction> </rdfs:subClassOf> </owl:Class> I membri di questa classe anonima sono istanze che hanno la proprietà emptiesInto in cui tutti i valori sono istanze di Sea. River Flueve Ci potrebbero essere dei Rivers che sfociano nel mare che non sono Flueves
River Rivìere unionOf I membri di questa classe anonima sono istanze che hanno la proprietà emptiesInto in cui tutti i valori sono istanze di Sea. <owl:Class rdf:ID="Rivìere"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#River"/> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="#emptiesInto"/> <owl:allValuesFrom rdf:resource="#Sea"/> </owl:Restriction> <owl:Restriction> <owl:onProperty rdf:resource="#emptiesInto"/> <owl:allValuesFrom rdf:resource="#River"/> </owl:Restriction> </owl:unionOf> </owl:Class> </owl:intersectionOf> </owl:Class> I membri di questa classe anonima sono istanze che hanno la proprietà emptiesInto in cui tutti i valori sono istanze di River.
WaterSource ManMadeWaterSource complementOf NaturallyOccurringWaterSource Intersezione delle WaterSource e il complementOf ManMadeWaterSource. <owl:Class rdf:ID="NaturallyOccurringWaterSource"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#WaterSource"/> <owl:Class> <owl:complementOf rdf:resource="#ManMadeWaterSource"/> </owl:Class> </owl:intersectionOf> </owl:Class>
oneOf: enumerare le istanze di una classe <owl:Class rdf:ID="Kyoto-Protected-River"> <rdfs:subClassOf rdf:resource="#River"/> <owl:oneOf rdf:parseType="Collection"> <geo:River rdf:about="http://www.china.org/geography/rivers#Yangtze"/> <geo:River rdf:about="http://www.us.org/rivers#Mississippi"/> <geo:River rdf:about="http://www.africa.org/rivers#Nile"/> <geo:River rdf:about="http://www.s-america.org/rivers#Amazon"/> … </owl:oneOf> </owl:Class> Qui enumeriamo i fiumi che sono protetti dal Trattato di Kyoto
LakeOceanSea Ocean Lake Sea Vogliamo affermare che BodyOfWater è equivalente a LakeOceanSea. equivalentClass <owl:Class rdf:ID="BodyOfWater"> <rdfs:subClassOf rdf:resource="#NaturallyOccurringWaterSource"/> <owl:equivalentClass rdf:resource="http://www.other.org#LakeOceanSea"/> </owl:Class>
disjointWith <owl:Class rdf:ID="River"> <rdfs:subClassOf rdf:resource="#Stream"/> <owl:disjointWith rdf:resource="#Brook"/> <owl:disjointWith rdf:resource="#Rivulet"/> <owl:disjointWith rdf:resource="#Tributary"/> </owl:Class> • In questa definizione di River, un’istanza di River non può • essere un’istanza di Brook, Rivulet o Tributary. • La proprietà disjointWith è una proprietà simmetrica.
rdfs:Class owl:Class owl:Restriction Sommario delle proprietà delle classi Properties: subClassOf: rdfs:Class domain: rdfs:Class range: rdfs:Class Properties: intersectionOf: rdf:List unionOf: rdf:List complementOf: owl:Class oneOf: rdf:List equivalentClass: owl:Class disjointWith: owl:Class Properties: onProperty: rdf:Property allValuesFrom: rdfs:Class hasValue: someValuesFrom: rdfs:Class cardinality: xsd:nonNegativeInteger minCardinality: xsd:nonNegativeInteger maxCardinality: xsd:nonNegativeInteger
OWL statements • owl:sameIndividualAs • Applicabile a due istanze • Rinforza functionalProperty • owl:differentFrom • Applicabile a due istanze • Può portare a contraddizioni con functionalProperty • owl:AllDifferent • Applicabile a un set di istanze
OWL Full OWL DL OWL Lite Le tre facce di OWL • Non tutti hanno bisogno di tutta l’espressività di OWL:
Confronti OWL FullOWL DLOWL Lite Tutto quello che è stato presentato è disponibile nella versione Full. E’ inoltre possibile miscelare le descrizioni OWL con RDF(S). Non è possibile usare owl:cardinality con TransitiveProperty. Non è possibile avere classi membro, ad esempio definire metaclassi. Non è possibile usare owl:minCardinality o owl:maxCardinality. I soli valori consentiti sono per owl:cardinality sono 0 e 1. Non sono disponibili owl:hasValue, owl:disjointWith, owl:one of, owl:complementOf, owl:unionOf.
OWL Resources • OWL Guide fornisce una buona descrizione di OWL con molti esempi: • http://www.w3.org/TR/owl-guide/ • OWL Reference è una guida completa e dettagliata: • http://www.w3.org/TR/owl-ref/ • Per tutti gli altri documenti OWL, e informazioni su Semantic Web: • http://www.w3.org/2001/sw