Transcript Document

OWL: Ontology Web Language
Asignatura Doctorado 2007
(Francisco José Galán Morillo)
Índice
1. Resumen
2. Estructura de una Ontología OWL
3. Elementos Básicos OWL
4. Relaciones entre Ontologías OWL
5. Clases OWL Complejas
1. Resumen
Objetivo
OWL es un lenguaje para describir datos con semántica en
la Web y no un mero protocolo de intercambio de
información.
1. Formaliza dominios mediante clases y propiedades.
2. Define individuos y propiedades entre individuos.
3. Permite un razonamiento formal (inferencia) basado en la
semántica adoptada en la definición de clases propiedades e
individuos
1. Resumen
Niveles de Expresividad
1. OWL Lite: clasificaciones y restricciones simples (ideal para
migrar tesauros).
2. OWL DL: máxima expresividad, completitud y decibilidad
aseguradas.
3. OWL Full: Máxima expresividad (capacidades de metamodelado y extensión del vocabulario OWL) completitud y
decibilidad no aseguradas.
2. Estructura
de una
Ontología OWL
Suposiciones
1. OWL asume un mundo abierto y distribuido.
2. Monotonicidad. Toda adición de información se añade a la ya
existente.
3. Ontologías Inconsistentes.
2. Estructura
de una
Ontología OWL
Vocabulario OWL
Espacios de nombres:
<rdf:RDF
xmlns
= “http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#”
(espacio de nombres por defecto de la ontología que se está describiendo)
xmlns:vin = “http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#”
(espacio de nombres por defecto de la ontología que se está describiendo)
xml:base = “http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#”
(URI del presente documento)
xmlns:food= “http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#”
(espacio de nombres de la ontología que se está describiendo ‘food’)
xmlns:owl = “http://www.w3.org/2002/07/owl#”
(otros espacios de nombres)
xmlns:rdf = “http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:rdfs= “http://www.w3.org/2000/01/rdf-schema#”
xmlns:xsd = “http://www.w3.org/2001/XMLSchema#”>
2. Estructura
de una
Ontología OWL
Vocabulario OWL
Identificadores de ontologías mediante macros: importante
para definir ontologías de forma distribuida.
<!DOCTYPE rdf:RDF [
<!ENTITY vin "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#" >
<!ENTITY food "http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#" >
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
]>
Expresiones como &vin;merlot se expanden a
http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#merlot
2. Estructura
de una
Ontología OWL
Vocabulario OWL
Encabezamientos: (meta)información relativa a comentarios,
versión, inclusión de otras ontologías, etc.
<owl:Ontology rdf:about="">
<rdfs:comment>An example OWL ontology</rdfs:comment>
<owl:priorVersion>
<owl:Ontology rdf:about="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/>
</owl:priorVersion>
<owl:imports rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/food"/>
<rdfs:comment>Derived from the DAML Wine ontology at
http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
Substantially changed, in particular the Region based relations.
</rdfs:comment>
<rdfs:label>Wine Ontology</rdfs:label>
</owl:Ontology>
3. Elementos
Básicos
OWL
Clases (I)
Declaración de clases simples: todo individuo en una
ontología OWL pertenece a la clase owl:Thing. También
OWL define la clase vacía owl:Nothing.
<owl:Class rdf:ID="Winery"/>
<owl:Class rdf:ID="Region"/>
<owl:Class rdf:ID="ConsumableThing"/>
Declaración de subclases: todo individuo en una subclase
pertenece a la superclase.
<owl:Class rdf:ID="PotableLiquid">
<rdfs:subClassOf rdf:resource="#ConsumableThing" />
...
</owl:Class>
3. Elementos
Básicos
OWL
Clases (II)
Referenciación para uso:
Dada la declaración:
<owl:Class rdf:ID="Winery"/>
Dentro del documento, la clase Winery puede ser referenciada:
#Winery
rdf:resource=“#Winery”
http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Winery
Referenciación para extender la definición:
rdf:about=“#Winery”
3. Elementos
Básicos
OWL
Individuos (I)
Declaración de individuos de una clase:
<Region rdf:ID="CentralCoastRegion" />
O bien haciendo uso de la propiedad rdf:type para adscribir un
individuo a una clase.
<owl:Thing rdf:ID="CentralCoastRegion" />
<owl:Thing rdf:about="#CentralCoastRegion">
<rdf:type rdf:resource="#Region"/>
</owl:Thing>
3. Elementos
Básicos
OWL
Propiedades (I)
Propiedades: relación binaria del tipo r(x:T,y:Z) donde
T es el dominio de r y Z es el rango de r
1. Propiedades entre individuos y tipos de datos (datatype
property): relación entre individuos de clases y literales RDF
y tipos de datos XML Schema.
2. Propiedades entre individuos (object property): relación entre
individuos de clases.
3. Elementos
Básicos
OWL
Propiedades (II)
Ejemplos de propiedades:
<owl:ObjectProperty rdf:ID="madeFromGrape">
<rdfs:domain rdf:resource="#Wine"/>
<rdfs:range rdf:resource="#WineGrape"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="course">
<rdfs:domain rdf:resource="#Meal" />
<rdfs:range rdf:resource="#MealCourse" />
</owl:ObjectProperty>
3. Elementos
Básicos
OWL
Propiedades (III)
Subpropiedades: subconjuntos de las propiedades originales.
<owl:Class rdf:ID="WineDescriptor" />
<owl:Class rdf:ID="WineColor">
<rdfs:subClassOf rdf:resource="#WineDescriptor" /> ...
</owl:Class>
<owl:ObjectProperty rdf:ID="hasWineDescriptor">
<rdfs:domain rdf:resource="#Wine" />
<rdfs:range rdf:resource="#WineDescriptor" />
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="hasColor">
<rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
<rdfs:range rdf:resource="#WineColor" /> ...
</owl:ObjectProperty>
3. Elementos
Básicos
OWL
Propiedades (IV)
Clases con propiedades vía clases anónimas:
<owl:Class rdf:ID="Wine">
<rdfs:subClassOf rdf:resource="&food;PotableLiquid"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#madeFromGrape"/>
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
...
</owl:Class>
3. Elementos
Básicos
OWL
Tipos de Datos
OWL usa la mayoría de tipos de datos de XML Schema
(URI:http://www.w3.org/2001/XMLSchema)
xsd:string
xsd:normalizedString
xsd:boolean
xsd:decimal
xsd:float
xsd:double
xsd:integer
xsd:nonNegativeInteger
xsd:positiveInteger
xsd:nonPositiveInteger
xsd:negativeInteger
xsd:long
xsd:int
xsd:short
xsd:byte
xsd:unsignedLong
xsd:unsignedInt
xsd:unsignedShort
xsd:unsignedByte
xsd:hexBinary
xsd:base64Binary
xsd:dateTime
xsd:time
xsd:date
xsd:gYearMonth
xsd:gYear
xsd:gMonthDay
xsd:gDay
xsd:gMonth
xsd:anyURI
xsd:token
xsd:language
xsd:NMTOKEN
xsd:Name
xsd:NCName
3. Elementos
Básicos
OWL
Individuos (II)
Individuos con propiedades:
<Region rdf:ID="SantaCruzMountainsRegion">
<locatedIn rdf:resource="#CaliforniaRegion" />
</Region>
<Winery rdf:ID="SantaCruzMountainVineyard" />
<CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon" >
<locatedIn rdf:resource="#SantaCruzMountainsRegion"/>
<hasMaker rdf:resource="#SantaCruzMountainVineyard" />
</CabernetSauvignon>
3. Elementos
Básicos
OWL
Propiedades (V)
Transitividad: r(x,y)  r(y,z)  r(x,z)
<owl:ObjectProperty rdf:ID="locatedIn">
<rdf:type rdf:resource="&owl;TransitiveProperty" />
<rdfs:domain rdf:resource="&owl;Thing" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
Simetría: r(x,y)  r(y,x)
<owl:ObjectProperty rdf:ID="adjacentRegion">
<rdf:type rdf:resource="&owl;SymmetricProperty" />
<rdfs:domain rdf:resource="#Region" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
3. Elementos
Básicos
OWL
Propiedades (VI)
Función: r(x,y)  r(x,z)  y = z
<owl:ObjectProperty rdf:ID="hasVintageYear">
<rdf:type rdf:resource="&owl;FunctionalProperty" />
<rdfs:domain rdf:resource="#Vintage" />
<rdfs:range rdf:resource="#VintageYear" />
</owl:ObjectProperty>
Inverso: r1(x,y)  r2(y,x)
<owl:ObjectProperty rdf:ID="hasMaker">
<rdf:type rdf:resource="&owl;FunctionalProperty" />
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="producesWine">
<owl:inverseOf rdf:resource="#hasMaker" />
</owl:ObjectProperty>
3. Elementos
Básicos
OWL
Propiedades (VII)
Función Inversa: r(y,x)  r(z,x)  y = z
<owl:ObjectProperty rdf:ID="hasMaker" />
<owl:ObjectProperty rdf:ID="producesWine">
<rdf:type rdf:resource="&owl;InverseFunctionalProperty" />
</owl:ObjectProperty>
3. Elementos
Básicos
OWL
Restricciones (I)
Restricciones de rango allValuesFrom:
<owl:Class rdf:ID="Wine">
<rdfs:subClassOf rdf:resource="&food;PotableLiquid" />
...
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasMaker" />
<owl:allValuesFrom rdf:resource="#Winery" />
</owl:Restriction>
</rdfs:subClassOf>
...
</owl:Class>
“Para todo Wine si hasMaker(Wine) está definido entonces todos los individuos del
rango de hasMaker(Wine) son Winery”
3. Elementos
Básicos
OWL
Restricciones (II)
Restricciones de rango someValuesFrom:
<owl:Class rdf:ID="Wine">
<rdfs:subClassOf rdf:resource="&food;PotableLiquid" />
...
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasMaker" />
<owl:someValuesFrom rdf:resource="#Winery" />
</owl:Restriction>
</rdfs:subClassOf>
...
</owl:Class>
“Para todo Wine si hasMaker(Wine) está definido entonces al menos un individuo del
rango de hasMaker(Wine) es Winery”
3. Elementos
Básicos
OWL
Restricciones (III)
Restricciones de multiplicidad:
<owl:Class rdf:ID="Vintage">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasVintageYear"/>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
“Toda cosecha (Vintage) tiene un año (hasVintageYear)”
3. Elementos
Básicos
OWL
Restricciones (IV)
Restricciones por valor:
<owl:Class rdf:ID="Burgundy">
...
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasSugar" />
<owl:hasValue rdf:resource="#Dry" />
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
“Todo individuo Burgundy tiene como valor de la propiedad hasSugar igual a dry”
4. Relaciones
Entre Ontologías
OWL
Equivalencias
Clases Equivalentes: Clases con los mismos individuos.
<owl:Class rdf:ID="TexasThings">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="#locatedIn" />
<owl:someValuesFrom rdf:resource="#TexasRegion" />
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
Propiedades Equivalentes: Propiedades con los mismos
individuos. Similar a clases equivalentes pero usando
owl:equivalentProperty
4. Relaciones
Entre Ontologías
OWL
Identidades
Identidad entre Individuos:
<Wine rdf:ID="MikesFavoriteWine">
<owl:sameAs rdf:resource="#StGenevieveTexasWhite" />
</Wine>
Suposición de no Unicidad de Nombres: OWL supone que dos
individuos pueden ser idénticos sin tener los mismos nombres
(Ej. dado que hasMaker es una propiedad funcional, se infiere
que Bancroft = Beringer)
<owl:Thing rdf:about="#BancroftChardonnay">
<hasMaker rdf:resource="#Bancroft" />
<hasMaker rdf:resource="#Beringer" />
</owl:Thing>
4. Relaciones
Entre Ontologías
OWL
Diferencias(I)
Individuos Diferentes:
<WineSugar rdf:ID="Dry" />
<WineSugar rdf:ID="Sweet">
<owl:differentFrom rdf:resource="#Dry"/>
</WineSugar>
<WineSugar rdf:ID="OffDry">
<owl:differentFrom rdf:resource="#Dry"/>
<owl:differentFrom rdf:resource="#Sweet"/>
</WineSugar>
4. Relaciones
Entre Ontologías
OWL
Diferencias(II)
Individuos Diferentes:
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<vin:WineColor rdf:about="#Red" />
<vin:WineColor rdf:about="#White" />
<vin:WineColor rdf:about="#Rose" />
</owl:distinctMembers>
</owl:AllDifferent>
5. Clases OWL
Complejas
Operadores Conjuntos (I)
Intersección:
<owl:Class rdf:ID="WhiteWine">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Wine" />
<owl:Restriction>
<owl:onProperty rdf:resource="#hasColor" />
<owl:hasValue rdf:resource="#White" />
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
5. Clases OWL
Complejas
Operadores Conjuntos (II)
Unión:
<owl:Class rdf:ID="Fruit">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#SweetFruit" />
<owl:Class rdf:about="#NonSweetFruit" />
</owl:unionOf>
</owl:Class>
Complemento (I):
<owl:Class rdf:ID="ConsumableThing" />
<owl:Class rdf:ID="NonConsumableThing">
<owl:complementOf rdf:resource="#ConsumableThing" />
</owl:Class>
5. Clases OWL
Complejas
Operadores Conjuntos (III)
Complemento (II):
<owl:Class rdf:ID="NonFrenchWine">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Wine"/>
<owl:Class>
<owl:complementOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#locatedIn" />
<owl:hasValue rdf:resource="#FrenchRegion" />
</owl:Restriction>
</owl:complementOf>
</owl:Class>
</owl:intersectionOf>
</owl:Class>
5. Clases OWL
Complejas
Clases Enumeradas
Clases Enumeradas: Clases definidas por extensión de sus
miembros
<owl:Class rdf:ID="WineColor">
<rdfs:subClassOf rdf:resource="#WineDescriptor"/>
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#White"/>
<owl:Thing rdf:about="#Rose"/>
<owl:Thing rdf:about="#Red"/>
</owl:oneOf>
</owl:Class>
5. Clases OWL
Complejas
Clases Disjuntas
Clases Disjuntas: Clases sin miembros comunes
<owl:Class rdf:ID="SweetFruit">
<rdfs:subClassOf rdf:resource="#EdibleThing" />
</owl:Class>
<owl:Class rdf:ID="NonSweetFruit">
<rdfs:subClassOf rdf:resource="#EdibleThing" />
<owl:disjointWith rdf:resource="#SweetFruit" />
</owl:Class>
<owl:Class rdf:ID="Fruit">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#SweetFruit" />
<owl:Class rdf:about="#NonSweetFruit" />
</owl:unionOf>
</owl:Class>