La Web Semántica
Semantic Web
Sergio Ilarri Artigas ([email protected])
Raquel Trillo Lado ([email protected])
Sistemas de Información Distribuidos (http://sid.cps.unizar.es)
Raquel Trillo, 30 de abril
Módulo de Web Semántica
Agentes software. Agentes móviles.
Representación del conocimiento.
Recuperación de información.
Bases de datos federadas.
La Web Semántica:

Introducción a la Web Semántica: Definición y objetivos.

Lenguajes de la Web Semántica: RDF, RDF-S, OWL, ...

Razonadores de lógica descriptiva: FACT, RacerPro, Pellet, ...

Introducción a los Servicios Web Semánticos.

La investigación en el grupo Sid en el campo de la web semántica
Raquel Trillo, 30 de abril
Guión: Introducción a la Web Semántica
La Web actual. Problemas de la web orientada a humanos.
La Web Semántica. Ejemplo motivador (Tim Berners Lee).
Reflexión acerca de las distintas versiones de la Web.
Propuesta de arquitectura para la Web Semántica.
Raquel Trillo, 30 de abril
La Web actual. Problemas de la
Web orientada a humanos
La World Wide Web (la Web) :

Nació en el CERN (Suiza) en la década de los 80.
 1980, Tim Berners Lee introdujo las ideas con el objetivo de que sirvieran
para organizar los documentos de las investigaciones científicas en el
campo de la física.
 1990, acabó el primer servidor web (NeXTcube).
 1991, creó el primer navegador web (que también era editor) y las primeras
páginas web.
 1993, se liberaron las investigaciones en este campo para uso libre y
comenzó la gran explosión de sitios web.
Raquel Trillo, 30 de abril
La Web actual. Problemas de la
Web orientada a humanos
Raquel Trillo, 30 de abril
La Web actual. Problemas de la
Web orientada a humanos
La World Wide Web (la Web) :

Mayor almacén de información no centralizado. Información sobre
cualquier tema.

Acceso casi instántaneo desde cualquier conexión.
Enlace
Enlace
Enlace
Enlace
Enlace
Enlace
Enlace
Enlace
Raquel Trillo, 30 de abril
Enlace
La Web actual. Problemas de la
Web orientada a humanos
La Web actual se caracteriza porque:

La información está en lenguaje natural en diferentes idiomas (inglés,
chino, español, catalán, francés, ...)

Está orientada a que los humanos podamos procesar la información
con facilidad (“legible para humanos”), pero no para que pueda ser
procesada automáticamente por una máquina (“no legible para
máquinas”):
 Información acerca de Santiago (enlace).
 Mañana por la mañana se retrasará el vuelo a Granada.
Raquel Trillo, 30 de abril
La Web semántica. Ejemplo
motivador (Tim Berners-Lee)
Surge el concepto de Web Semántica:

Es una extensión a la Web actual que pretende dotar a la web de mayor
significado (semántica), creando normas, lenguajes y protocolos para
que la información web sea “legible para máquinas”.

Ejemplo (Tim Berners-Lee en Scientific American, Mayo de 2001):
 Los Beatles cantan “We can work it out...” en el equipo de sonido de Bob
cuando suena el teléfono...
 El agente asociado al control del teléfono avisa a todos los dispositivos que
tienen “control de volumen y están activados” para que lo bajen
automáticamente...
 Es su hermana Lucy al teléfono. Su madre va a necesitar sesiones de
fisioterapia y tienen que turnarse para acompañarla. Acuerdan que sus
agentes (que residen probablemente en algún móvil con agenda o una
PDA) hagan las gestiones necesarias para planificar las visitas al
fisioterapeuta.
Raquel Trillo, 30 de abril
La Web semántica. Ejemplo
motivador (Tim Berners-Lee)
 El agente de Lucy recoge la prescripción de los sistemas del médico, busca
clínicas en un área de 20 kilómetros que tengan un nivel de confianza, por
parte de organismos fiables, de “alto” o “muy alto”, y que sus precios estén
en un rango determinado.
 Una vez escogida la clínica, el agente de Lucy contacta con el de su
hermano. Analizan sus agendas personales y fiajn las fechas en las que
cada uno acompañará a su madre.
 Los agentes plantean las opciones a sus usuarios. A Lucy le parece bien
pero a Bob no, porque a las horas en las que se indican las sesiones hay
mucho tráfico. Entonces Bob especifica a su agente unos criterios más
estrictos de hora y localización.
 El agente de Bob busca otras opciones y las encuentra, siempre que cambie
un par de citas en su agenda. Bob lo acepta y envía un nuevo plan a Lucy,
que también lo acepta.
Raquel Trillo, 30 de abril
La Web semántica. Ejemplo
motivador (Tim Berners-Lee)
 Se añaden las citas a las agendas de los dos hermanos de forma automática
y se realizan las reservas en la clínica.

Actualmente, esto lo podemos hacer, pero interviniendo los humanos en
cada uno de los pasos para interpretar la información, y de “forma
manual”.

El concepto de Web Semántica global es muy ambicioso y mucha gente
tiene dudas sobre su viabilidad, pero ya se está caminando en esa
dirección.
 World Wide Web 1980 – 1993, Web Semántica 2001-2014?
Raquel Trillo, 30 de abril
Reflexión acerca de las distintas
versiones de la web
Debido a los cambios que se han producido en la Web desde
1993, empezaron a distinguirse versiones:

Web 1.0 o Web Estática: Páginas estáticas HTML que no se actualizaban
frecuentemente.

Web 1.5 o Web Dinánica: Inclusión de JSP, ASP.NET, PHP, ... Para la
generación de páginas dinámicas creadas a partir de la información de una
base de datos con información muy actualizada.
 Éxito de las empresas denominadas .com.

Web 2.0 o Web Social: Está orientada a la interacción y a las redes sociales
y está despegando en la actualidad: Blogs, grupos de noticias (Menéame,
Flickr, ...). Se insertan metadatos a través de etiquetas (tags).

Web 3.0 o Web Semántica: Inserción de metadatos de forma que sean
“legibles y procesables” por máquinas.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Problema de la web actual: Las marcas de HTML incluyen
información sobre la visualización (tipo de letra, color, etc.),
pero no información semántica.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Posible solución XML: Las etiquetas tienen significado.

<GrupoDeInvestigacion nombre=“SID:Sistemas de Información
Distribuidos”>
<Miembros>
<Profesores>
<Persona nombre=“Eduardo Mena” esDirector=“si”>
<Persona nombre=“Sergio Ilarri” esDirector=“no”>
...
</Profesores>
<Investigadores>
....
</Investigadores>
.....
</Miembros>
</GrupoDeInvestigacion>
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Problema: La elección de las etiquetas. Sería necesario un
consenso global.

<ResearchGrupo name=“SID:Sistemas de Información Distribuidos”>
<Members>
<Teachers>
<Person name=“Eduardo Mena” isDirector=“yes”>
<Person name=“Sergio Ilarri” isDirector=“no”>
...
</Teachers>
<Members>
</ResearchGroup>
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Otro problema: Se puede expresar lo mismo empleando
diferentes estructuras.

<ResearchGrupo name=“SID:Sistemas de Información Distribuidos”>
<Members>
<Person name=“Eduardo Mena” isDirector=“yes”
role=“Teacher”/>
<Person name=“Mauricio Espinoza” isDirector=“no”
role=“Reseacher”/>
<Person name=“Carlos Bobed” isDirector=“no”
role=“PhDStudent”/>
...
<Members>
</ResearchGroup>
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Solución:

Acuerdo global para compartir etiquetas de anotación.
 Dublin Core (DCMI). Es una iniciativa abierta para el desarrollo de
estándares de metadatos (datos acerca de los datos) para favorecer la
interoperabilidad. (http://www.dublincore.org)
 Uso de ontologías.
Anything
Person
Name: String
Teacher
ResearchGroup
Members
PhDStudent
Director
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Además serán necesarios:

“Reglas de inferencia” acerca de la información proporcionada.
 Si un alimento tiene tanta cantidad de glucosa se considera dulce.

Mecanismos para poder hacer razonamiento automático: “razonadores”:
 BACK, RacerPro, FACT, ...
y además todo esto distribuido y altamente dinámico:

La Web no es centralizada.

La Web es dinámica y abierta.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
¿Qué es UNICODE?

Un estándar en principio industrial para la codificación, diseñado para
permitir texto y símbolos de todos los sistemas de escritura. (Norma ISO
8859).

Surgió debido a las limitaciones del formato ASCII (7 bits) y el
formato ASCII extendido (8 bits).

16 bits.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
¿Qué es una URI?
Una URI (Uniform Resource Identifier) es un identificador que
identifica un recurso o un objeto cualquiera dentro de la web semántica:

 Ejemplo: http://sid.cps.unizar.es
Una URI NO tiene porque proporcionar una forma de acceder a dicho
recurso o a información sobre dicho recurso:

 Una URI puede referenciar un recurso que no esté disponible vía web y
sobre el que no existe ninguna información.
 Las URL (Uniform Resource Locators) son tipos especiales de URIs que
sí indican cómo localizar el recurso que tienen asociado.
No existe una gestión centralizada de las URIs. Un mismo recurso puede tener
asociadas varias URIs.

Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
XML (Extensible Markup Language): A diferencia del HTML
especifica la estructura de sus contenidos, no el modo de
visualizarlos.

Especifica la sintaxis del documento (orden, tipo de datos, formato, ...)
en el DTD o XML Schema.

Si existe acuerdo global en las etiquetas a utilizar (XML Schema) es
fácil conocer la semántica del contenido.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
RDF (Resource Description Framework)



Permite describir recursos mediante propiedades y sus valores de
propiedades.
Recurso = cualquier cosa que pueda identificarse con una URI (Uniform
Resource Identifier).
Propiedad = característica o atributo de un recurso:
 Asociada a una URI y a un significado (tipo especial de recurso).
 Describen relaciones entre recursos (“escritoPor”, “edad”, “título”).



Valor = Valores concretos que puede tomar una propiedad.
Enunciado: Asocia el valor de una propiedad de un recurso a un recurso
Ejemplo: “Tintín es periodista”
Tintín
tieneProfesion
Periodista
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Con RDF, tenemos un grafo acíclico dirigido:

Los nodos origen son URIs

Los arcos también son URIs

Los nodos destino pueden ser URIs o literales
Tintín
http://siteWithSenses/#tieneProfesion
Periodista
http://miPagDeComics/#tintin
Hergé
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Tintín
http://siteWithSenses/#tieneProfesion
Periodista
http://miPagDeComics/#tintin
Hergé
Una representación (textual) alternativa:
(http://miPagDeComics/#tintin, http://siteWithSenses/#tieneProfesion, “Periodista”)
(http://miPagDeComics/#tintin, http://purl.org/DC/Creator, “Hergé”)
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
Tintín
http://siteWithSenses/#tieneProfesion
Periodista
http://miPagDeComics/#tintin
Hergé
Y en sintaxis XML:
<rdf:RDF xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:s=“http://siteWithSenses/”
xmlns:dc=“http://purl.org/DC/”>
<rdf:Description about=“http://miPagDeComics/#tintin”>
<s:tieneProfesion>Periodista</s:tieneProfesion>
<dc:Creator resource=“Hergé” />
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
De este modo conseguimos tener relaciones entre los
diferentes recursos existentes en la Web.
EsUnTipoDe
EsAutor
TieneAutor
EstaSituadoEn
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
RDF-Schema: Es necesario porque hay que distinguir entre:

Cosas concretas (individuos) del dominio.

Clases o conceptos: Conjunto de clases que comparten alguna
característica.

La relación entre un individuo y la clase a la que pertenece se describe
mediante la propiedad rdf:type.
RDF-Schema permite declarar clases y restricciones de clases
para evitar enunciados que no tienen sentido:

Restricciones de Rango: Juan da clase de Pepe (Poner una restricción
que indique que la propiedad “da clase de” tiene de rango asignaturas).

Restricciones de Dominio: Algebra da clase de Calculo (Poner una
restricción que indique que la propiedad “da clase de” tiene de dominio
asignaturas).
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
RDF-Schema:

Las clases pueden organizarse en jerarquías mediante la propiedad
subPropertyOf:
 Relación transitiva.
 Una clase no puede ser subclase de si misma.
 Herencia múltiple.
Se puede decir que a través de RDF-Schema podemos definir
las ontologías, y que con RDF podemos describir las instancias
de esas ontologías.
Como RDF y RDF Schema no proporcionaban
potencionalidad suficiente para todas las restricciones
deseadas, apareció OWL.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
OWL, Ontology Web Language. Diferencia tres niveles:

OWL Full: Unión de sintaxis OWL y RDF (sin restricciones)
 Puede dar lugar a problemas NP completos (no decidibles) al realizar los
razonamientos.

OWL DL (Description Logics).
 Limita la expresividad del lenguaje tratando de conseguir decibilidad.
 Pierde compatibilidad con RDF.
 Puede emplear algoritmos conocidos para realizar razonamiento.
 Existen varios sistemas que lo implementan.

OWL Lite. Subconjunto de OWL DL más fácil de implementar y se
espera que sea más eficiente.
Raquel Trillo, 30 de abril
Propuesta de arquitectura para la
Web Semántica
De forma paralela a RDF, RDF-Schema y OWL, e impulsados
por otras industrias e investigadores, aparecieron los lenguages
DAML-OIL básicamente para lo mismo.
Hoy en día OWL es un estándar; por eso, los demás lenguajes
que permanecen proporcionan traductores a OWL:
 Protégé (editor que usa un lenguaje propietario)
 OILed (editor que usa OIL)
Raquel Trillo, 30 de abril
RDF y RDF Schema
Máster en Servicios Web y Comercio Electrónico
Curso 2006/2007
Curso de Web Semántica
Sergio Ilarri Artigas
[email protected]
Raquel Trillo, 30 de abril
Índice
1.
2.
3.
4.
5.
6.
7.
El modelo de datos de RDF
Sintaxis basada en XML
RDF Schema (RDFS)
Definición de RDF y RDFS
Semántica e Inferencias
Lenguajes de consulta. Ej.: RQL
Conclusiones
Raquel Trillo, 30 de abril
1. El modelo de datos de RDF
Definiciones Básicas (I)
Un documento RDF es un conjunto de sentencias (statements)
Sentencia = afirmación = hecho
Una sentencia consta de 3 elementos:



Recurso (resource) o sujeto (subject)
Propiedad (property) o atributo
Valor (value) u objeto (object)
Raquel Trillo, 30 de abril
Definiciones Básicas (II)
Recurso:

Cualquier cosa de la que queremos hablar
 Real: libro, persona, hotel, etc.
 Abstracta: petición, reserva, etc.

Tiene un URI como identificador:
 URL u otros (no tiene por qué apuntar a una página web)
Raquel Trillo, 30 de abril
Definiciones Básicas (III)
Propiedades:

Describen relaciones entre recursos

Ejemplos: “phoneNumber”, “title”, “publishedBy”, etc.

Son un tipo de recursos
 Por tanto, se identifican también con un URI
Raquel Trillo, 30 de abril
Definiciones Básicas (IV)
Valores:

Pueden ser:
 recursos (con su URI)
 literales (cadenas de caracteres)

Mediante una sentencia, una propiedad relaciona un recurso
con su valor (que puede ser otro recurso)
Raquel Trillo, 30 de abril
Representación Sentencias (I)
1. En lenguaje natural:
“http://www.example.org/index.html has a creator
whose value is John Smith”
2. Usando una tripleta:
<http://www.example.org/index.html> creator “John Smith”
sujeto-propiedad-objeto
<http://purl.org/dc/elements/1.1/creator>
Raquel Trillo, 30 de abril
Representación Sentencias
(II)
3. Como fórmula lógica:
Creator(http://www.example.org/index.html, John Smith)
4. Usando un grafo RDF:
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Representación Sentencias (III)
El valor de una sentencia puede ser un recurso o un
valor:
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Representación Sentencias (IV)
5. Utilizando XML (RDF/XML):
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:exterms="http://www.example.org/terms/">
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Reification
En RDF es posible hacer afirmaciones acerca de
afirmaciones:

statements about statements

Ejemplo: expresar creencia o confianza
Lidia Smith believes that http://www.example.org/index.html has a
creator whose value is John Smith
Objeto auxiliar
¿Cómo podemos hacer esto?
Raquel Trillo, 30 de abril
Próximamente...
Literales Tipados (I)
Puede no estar claro el sentido de un literal
¿Cómo debe interpretarse el 27?
¿Tiene sentido hacer operaciones artiméticas con él?
¿Es un número?
¿O dos caracteres en secuencia?
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Literales Tipados (II)
Hay que especificar cómo debe interpretarse un
literal
<http://www.example.org/staffid/85740>
<http://www.example.org/terms/age>
"27"^^<http://www.w3.org/2001/XMLSchema#integer>
exstaff:85740 exterms:age "27"^^xsd:integer
QName
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Literales Tipados (III)
RDF no define tipos de datos

Salvo rdf:XMLLiteral
En lugar de eso:




Tipos de datos definidos externamente mediante sus URIs
Puede utilizarse cualquier esquema externo de tipado de
datos
En la práctica: tipos de XML Schema
Flexibilidad: no conversión a tipos nativos
Raquel Trillo, 30 de abril
Tipos Datos: XML Schema (I)
http://www.w3.org/TR/xmlschema-2/
Raquel Trillo, 30 de abril
Tipos Datos: XML Schema (II)
Cada tipo predefinido se referencia:


URI base: la URI del espacio de nombres de XML Schema
Identificador de fragmento: el nombre del tipo de dato
Ejemplo:

http://www.w3.org/2001/XMLSchema#int
URI base
Raquel Trillo, 30 de abril
tipo
Abreviaturas: Qname (I)
En las tripletas hay que usar URIs completas o usar
nombres cualificados:



QName = XML Qualified Name
Sintaxis: prefix:localname
Ejemplo: si foo es un prefijo asociado a http://example.org/somewhere/,
foo:bar equivale a <http://example.org/somewhere/bar>
asignado a la URI de un
espacio de nombres
Raquel Trillo, 30 de abril
Abreviaturas: Qname (II)
Prefijo
URI del espacio de nombres
rdf:
http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs:
http://www.w3.org/2000/01/rdf-schema#
dc:
http://purl.org/dc/elements/1.1/
owl:
http://www.w3.org/2002/07/owl#
ex:
http://www.example.org/ o http://www.example.com/
exterms:
http://www.example.org/terms/
exstaff:
http://www.example.org/staffid/
ex2:
http://www.domain2.example.org/
Raquel Trillo, 30 de abril
Sólo Propiedades Binarias
Con frecuencia tenemos predicados con más de 2
argumentos…
¿Cómo representamos lo siguiente?:
resultado(Zaragoza, X, Barcelona, Y)
goles del Zaragoza
goles del Barcelona
Raquel Trillo, 30 de abril
Estructuras Agregadas (I)
¿Cómo podemos representar estructuras agregadas?


Por ejemplo, que una persona tiene una dirección y esa
dirección consta de: país, ciudad, calle, y código postal
O algo que sea un número con sus unidades de medida
(metros, centímetros, etc.)
Raquel Trillo, 30 de abril
Estructuras Agregadas (II)
Considerar el agregado como un recurso y declarar sentencias sobre dicho recurso
http://www.w3.org/TR/rdf-primer/
Raquel Trillo, 30 de abril
Estructuras Agregadas (III)
El problema es que podemos generar URIs
intermedias que no se referencien nunca…
¿Alguna solución?
Raquel Trillo, 30 de abril
Estructuras Agregadas (IV)
Podemos utilizar blank nodes (b-nodes)
Son recursos anónimos
http://www.w3.org/TR/rdf-primer/
Raquel Trillo,
30 de abril
Estructuras Agregadas (V)
¿Pero cómo representamos lo anterior
con tripletas?
exstaff:85740
???
???
???
???
exterms:address
exterms:street
exterms:city
exterms:state
exterms:postalCode
http://www.w3.org/TR/rdf-primer/
???
"1501 Grant Avenue"
"Bedford"
"Massachusetts"
"01730"
Raquel Trillo, 30 de abril
Solución 1
Estructuras Agregadas (VI)
¿Qué problema tiene lo anterior?
Raquel Trillo, 30 de abril
Estructuras Agregadas (VII)
Sólo podríamos tener un blank node
Uso de blank nodes identifiers
exstaff:85740
_:johnaddress
_:johnaddress
_:johnaddress
_:johnaddress
exterms:address
exterms:street
exterms:city
exterms:state
exterms:postalCode
Solución 2
_:johnaddress
"1501 Grant Avenue"
"Bedford"
"Massachusetts"
"01730"
Notación: _:nombre (nombres locales, no realmente identificadores)
http://www.w3.org/TR/rdf-primer/
Raquel Trillo, 30 de abril
Otra Utilidad de Blank Nodes
Declaraciones sobre recursos que se definen en
términos de sus relaciones (pero realmente no tienen
URI)


Ejemplo: para hacer declaraciones acerca de una persona,
usar como URI su dirección de email puede resultar confuso
Lo mismo ocurre si utilizamos como URI de una empresa su
URL
Raquel Trillo, 30 de abril
Ejemplo de Blank Node
Entre <>, en la notación de tripletas, porque es una URI (representa un recurso)
_:jane
_:jane
_:jane
_:jane
_:jane
exterms:mailbox
rdf:type
exterms:name
exterms:empID
exterms:age
<mailto:[email protected]>
exterms:Person
"Jane Smith"
"23748"
"26"
Raquel Trillo, 30 de abril
Otra Utilidad de Blank Nodes
Evitar el uso de literales en situaciones inapropiadas
ex2terms:book78354 rdf:type
ex2terms:Book
ex2terms:book78354 ex2terms:author "Jane Smith"
ex2terms:book78354
ex2terms:book78354
_:author78354
_:author78354
rdf:type
ex2terms:author
rdf:type
ex2terms:name
ex2terms:Book
_:author78354
ex2terms:Person
"Jane Smith"
Raquel Trillo, 30 de abril
2. Sintaxis basada en XML
Ejemplo RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:exterms="http://www.example.org/terms/">
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
Elemento rdf:Description (I)
Un documento RDF es un elemento rdf:RDF que
contiene descripciones
Atributos de rdf:Description



rdf:about (recurso definido en otro sitio)
rdf:ID (define el identificador)
Ejemplo: rdf:about=“Pepe”
rdf:ID=“#Pepe”
Raquel Trillo, 30 de abril
Elemento rdf:Description (II)
El contenido de rdf:Description son propiedades
(property elements)


Si hay más de uno, tenemos varias declaraciones con el
mismo rdf:Description
Ejemplo:
O varias
<rdf:Description rdf:about="http://www.example.org/index.html”
propiedades
dentro de una <exterms:creation-date>August 16, 1999</exterms:creation-date>
<dc:language>en</dc:language>
descripción
</rdf:Description>
Raquel Trillo, 30 de abril
Atributo rdf:datatype
Para una propiedad, se puede utilizar el atributo
rdf:datatype
Ejemplo:
<uni:age rdf:datatype=“&xsd;integer”>27</uni:age>
Para usar la entidad xsd, hay que encabezar el fichero
(después de la declaración de XML) con:
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
Raquel Trillo, 30 de abril
Atributo rdf:resource
Para propiedades cuyo valor es un
recurso y no un literal, empleamos el
atributo rdf:resource
Ejemplo:
<dc:creator rdf:resource="http://www.example.org/staffid/85740"/>
No pueden usarse QNames aquí
(podrían utilizarse referencias a entidades XML)
Raquel Trillo, 30 de abril
Propiedad rdf:type (I)
La propiedad rdf:type nos permite clasificar las cosas
en clases/tipos
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:exterms="http://www.example.com/terms/"
xml:base="http://www.example.com/2002/04/products">
<rdf:Description rdf:ID="item10245">
<rdf:type rdf:resource="http://www.example.com/terms/Tent"/>
<exterms:model rdf:datatype="&xsd;string">Overnighter</exterms:model>
<exterms:weight rdf:datatype="&xsd;decimal">2.4</exterms:weight>
<exterms:packedSize rdf:datatype="&xsd;integer">784</exterms:packedSize>
</rdf:Description>
Raquel Trillo, 30 de abril
Propiedad rdf:type (II)
¿Y dónde se definen las clases?
Tranquilos, esperemos un poco…
Raquel Trillo, 30 de abril
Sintaxis Abreviada (I)
1. Propiedades que no se repiten dentro de una
descripción y que tengan valores literales, pueden
sustituirse por atributos
<rdf:RDF>
<rdf:Description about="http://www.w3.org">
<s:Publisher>World Wide Web Consortium</s:Publisher>
<s:Title>W3C Home Page</s:Title>
<s:Date>1998-10-03T02:27</s:Date>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (I)
1. Propiedades que no se repiten dentro de una
descripción y que tengan valores literales, pueden
sustituirse por atributos
<rdf:RDF>
<rdf:Description about="http://www.w3.org"
s:Publisher="World Wide Web Consortium"
s:Title="W3C Home Page"
s:Date="1998-10-03T02:27"/>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (II)
2. Las descripciones pueden anidarse y…
<rdf:RDF>
<rdf:Description about="http://www.w3.org/Home/Lassila">
<s:Creator rdf:resource="http://www.w3.org/staffId/85740"/>
</rdf:Description>
<rdf:Description about="http://www.w3.org/staffId/85740">
<v:Name>Ora Lassila</v:Name>
<v:Email>[email protected]</v:Email>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (II)
2. Las descripciones pueden anidarse y…
<rdf:RDF>
<rdf:Description about="http://www.w3.org/Home/Lassila">
<s:Creator>
<rdf:Description about="http://www.w3.org/staffId/85740">
<v:Name>Ora Lassila</v:Name>
<v:Email>[email protected]</v:Email>
</rdf:Description>
</s:Creator>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (II)
2. … la descripción anidada puede representarse
mediate atributos del elemento padre (cambiar
about por rdf:resource)
<rdf:RDF>
<rdf:Description about="http://www.w3.org/Home/Lassila">
<s:Creator rdf:resource="http://www.w3.org/staffId/85740"
v:Name="Ora Lassila"
v:Email="[email protected]" />
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (III)
3. Cuando hay un elemento de tipado en una descripción, podemos usar el
nombre especificado en rdf:type en lugar de rdf:Description
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:Description about="http://www.w3.org/Home/Lassila">
<s:Creator>
<rdf:Description about="http://www.w3.org/staffId/85740">
<rdf:type resource="http://description.org/schema/Person"/>
<v:Name>Ora Lassila</v:Name>
<v:Email>[email protected]</v:Email>
</rdf:Description>
</s:Creator>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Sintaxis Abreviada (III)
3. Cuando hay un elemento de tipado en una descripción, podemos usar el
nombre especificado en rdf:type en lugar de rdf:Description
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:RDF>
<rdf:Description about="http://www.w3.org/Home/Lassila">
<s:Creator>
<s:Person about="http://www.w3.org/staffId/85740">
<v:Name>Ora Lassila</v:Name>
<v:Email>[email protected]</v:Email>
</s:Person>
</s:Creator>
</rdf:Description>
</rdf:RDF>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
Contenedores RDF (I)
Tipos:



rdf:Bag (repetidos, no ordenado)
rdf:Seq (repetidos, ordenado)
rdf:Alt (alternativas)
Elementos: rdf:_1, rdf:_2, …, rdf:_n
rdf:li
Raquel Trillo, 30 de abril
Contenedores RDF (II)
Ejemplo
"Course 6.001 has the students Amy, Mohamed,
Johann, Maria, and Phuong"
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Contenedores RDF (III)
Ejemplo
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.org/students/vocab#">
<rdf:Description rdf:about="http://example.org/courses/6.001">
<s:students>
<rdf:Bag>
<rdf:li rdf:resource="http://example.org/students/Amy"/>
<rdf:li rdf:resource="http://example.org/students/Mohamed"/>
<rdf:li rdf:resource="http://example.org/students/Johann"/>
<rdf:li rdf:resource="http://example.org/students/Maria"/>
<rdf:li rdf:resource="http://example.org/students/Phuong"/>
</rdf:Bag>
</s:students>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Sintaxis
abreviada
(regla 3)
Contenedores RDF (IV)
Ejemplo
"The source code for X11 may be found at
ftp.example.org, ftp1.example.org,
or ftp2.example.org"
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Contenedores RDF (V)
Ejemplo
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.org/packages/vocab#">
<rdf:Description rdf:about="http://example.org/packages/X11">
<s:DistributionSite>
<rdf:Alt>
<rdf:li rdf:resource="ftp://ftp.example.org"/>
<rdf:li rdf:resource="ftp://ftp1.example.org"/>
<rdf:li rdf:resource="ftp://ftp2.example.org"/>
</rdf:Alt>
</s:DistributionSite>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Podríamos asignarle un
identificador con rdf:ID
Contenedores RDF (VI)
¿Se os ocurre ahora alguna otra solución para
representar lo siguiente?: resultado(Zaragoza, x,
Barcelona, y)
Raquel Trillo, 30 de abril
Contenedores RDF (VII)
Limitación: no se pueden “cerrar”


No dice que “otros” no sean miembros
Otro grafo RDF puede añadir miembros
Solución: colecciones RDF



Tipo: rdf:List
Propiedades: rdf:first, rdf:rest
Recurso: rdf:nil (lista vacía)
Raquel Trillo, 30 de abril
Contenedores RDF (VIII)
"Course 6.001 has the students Amy,
"The students in course 6.001 are
Amy, Mohamed, and Johann"
Raquel Trillo,Mohamed,
30 de abril Johann, Maria, and Phuong"
Contenedores RDF (IX)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.org/students/vocab#">
<rdf:Description rdf:about="http://example.org/courses/6.001">
<s:students rdf:nodeID="sch1"/>
</rdf:Description>
<rdf:Description rdf:nodeID="sch1">
<rdf:first rdf:resource="http://example.org/students/Amy"/>
<rdf:rest rdf:nodeID="sch2"/>
</rdf:Description>
<rdf:Description rdf:nodeID="sch2">
<rdf:first rdf:resource="http://example.org/students/Mohamed"/>
<rdf:rest rdf:nodeID="sch3"/>
</rdf:Description>
<rdf:Description rdf:nodeID="sch3">
<rdf:first rdf:resource="http://example.org/students/Johann"/>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Notación
larga
Contenedores RDF (X)
Notación abreviada: rdf:parseType="Collection"
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://example.org/students/vocab#">
<rdf:Description rdf:about="http://example.org/courses/6.001">
<s:students rdf:parseType="Collection">
<rdf:Description rdf:about="http://example.org/students/Amy"/>
<rdf:Description rdf:about="http://example.org/students/Mohamed"/>
<rdf:Description rdf:about="http://example.org/students/Johann"/>
</s:students>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Reification (I)
Tipo:

rdf:Statement
Propiedades:



rdf:subject
rdf:predicate
rdf:object
Raquel Trillo, 30 de abril
Reification (II)
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Reification (III)
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:exterms="http://www.example.com/terms/"
xml:base="http://www.example.com/2002/04/products">
<rdf:Description rdf:ID="item10245">
<exterms:weight rdf:datatype="&xsd;decimal">2.4</exterms:weight>
</rdf:Description>
<rdf:Statement rdf:about="#triple12345">
<rdf:subject rdf:resource="http://www.example.com/2002/04/products#item10245"/>
<rdf:predicate rdf:resource="http://www.example.com/terms/weight"/>
<rdf:object rdf:datatype="&xsd;decimal">2.4</rdf:object>
<dc:creator rdf:resource="http://www.example.com/staffid/85740"/>
</rdf:Statement>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Propiedad rdf:value (I)
Para definir propiedades compuestas referentes a
medidas (Ej.: peso = 2 Kg)



Valores estructurados
rdf:value representa el valor (20)
Otra propiedad representa la unidad de medida
Raquel Trillo, 30 de abril
Propiedad rdf:value (II)
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:exterms="http://www.example.org/terms/">
<rdf:Description rdf:about="http://www.example.com/2002/04/products#item10245">
<exterms:weight rdf:parseType="Resource">
<rdf:value rdf:datatype="&xsd;decimal">2.4</rdf:value>
<exterms:units rdf:resource="http://www.example.org/units/kilograms"/>
</exterms:weight>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Literales XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:base="http://www.example.com/books">
<rdf:Description rdf:ID="book12345">
<dc:title rdf:parseType="Literal">
<span xml:lang="en">
The <em>&lt;br /&gt;</em> Element Considered Harmful.
</span>
</dc:title>
</rdf:Description>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Espacios de Nombres
En XML: para desambiguar
En RDF: documentos RDF que definen recursos
Raquel Trillo, 30 de abril
Otras Sintaxis
Como RDF/XML no hay quien lo use:


Los procesadores de RDF nos lo ocultan
Otras sintaxis (de tripletas):
 N3 (propuesto por Tim Berners-Lee y Dan Connolly):
<subject> <predicate> <object> .
 N-triples:


Similar a N3
Transmitible en formato MIME
 La nuestra (más informal)
Raquel Trillo, 30 de abril
3. RDF Schema (RDFS)
Introducción a RDFS (I)
RDF:


Independiente del dominio
Describe recursos (objetos individuales)
RDFS:

rdf:type

Permite la definición de vocabularios para distintos dominios
(¿de qué queremos hablar?)
Describe clases
Raquel Trillo, 30 de abril
Introducción a RDFS (II)
Objetivo: imponer restricciones en las sentencias


“Web Semántica” la imparte “Servicios Web”
El seminario 25 lo imparte Eduardo Mena
Restricciones:


De rango: valores de la propiedad
De dominio: objetos a los cuales puede aplicarse la propiedad
Raquel Trillo, 30 de abril
Introducción a RDFS (III)
RDFS permite definir:


Jerarquías de clases (herencia múltiple)
Jerarquías de propiedades
 Es posible añadir nuevas propiedades sin cambiar la clase
RDFS es un lenguaje de ontologías primitivo
Raquel Trillo, 30 de abril
Introducción a RDFS (IV)
Las primitivas de RDFS se definen utilizando RDF
(recursos y propiedades)
Un documento RDFS es un documento RDF (sintaxis
RDF/XML)
Raquel Trillo, 30 de abril
Clases Básicas de RDFS
rdfs:Resource
rdfs:Class
rdfs:Literal (cadenas de caracteres)
rdf:Property
rdf:Statement (sentencias reified)
Raquel Trillo, 30 de abril
Propiedades Básicas de RDFS
rdf:type
rdfs:subclassOf
rdfs:subPropertyOf
Definir relaciones
rdfs:domain (sujetos posibles)
Restringir propiedades
rdfs:range (objetos posibles)
rdfs:ConstraintResource
rdfs:ConstraintProperty
subclase
Raquel Trillo, 30 de abril
transitivas
instancias
Propiedades para Reification
rdf:subject
rdf:predicate
rdf:object
Raquel Trillo, 30 de abril
Clases Contenedoras
rdf:Bag
rdf:Seq
rdf:Alt
rdfs:Container (superclase)
Raquel Trillo, 30 de abril
Propiedades de Utilidad
con otras direcciones
rdfs:seeAlsoVínculos
(explicación)
rdfs:isDefinedBy (definición: esquema)
subpropiedad
rdfs:comment
Información para personas
rdfs:label (nombre)
Raquel Trillo, 30 de abril
Nótese que…
rdfs:Class es subclase de rdfs:Resource
rdfs:Resource es instancia de rdfs:Class
Toda clase es instancia de rdfs:Class
Raquel Trillo, 30 de abril
Ejemplo: Jerarquía de Clases
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Ejemplo: Jerarquía de Clases
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://example.org/schemas/vehicles">
<rdf:Description rdf:ID="MotorVehicle">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
…
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Ejemplo: Jerarquía de Clases
Versión con sintaxis abreviada
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://example.org/schemas/vehicles">
<rdfs:Class rdf:ID="MotorVehicle"/>
<rdfs:Class rdf:ID="PassengerVehicle">
<rdfs:subClassOf rdf:resource="#MotorVehicle"/>
</rdfs:Class>
…
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Ejemplo: Descripciones de
Propiedades
<rdf:Property rdf:ID="registeredTo">
<rdfs:domain rdf:resource="#MotorVehicle"/>
<rdfs:range rdf:resource="#Person"/>
</rdf:Property>
<rdf:Property rdf:ID="rearSeatLegRoom">
<rdfs:domain rdf:resource="#PassengerVehicle"/>
<rdfs:range rdf:resource="&xsd;integer"/>
</rdf:Property>
<rdfs:Class rdf:ID="Person"/>
<rdfs:Datatype rdf:about="&xsd;integer"/>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Ejemplo: Jerarquías de
Propiedades
<rdf:Property rdf:ID="driver">
<rdfs:domain rdf:resource="#MotorVehicle"/>
</rdf:Property>
<rdf:Property rdf:ID="primaryDriver">
<rdfs:subPropertyOf rdf:resource="#driver"/>
</rdf:Property>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
Ejemplo de Instancia
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/schemas/vehicles#"
xml:base="http://example.org/things">
<ex:PassengerVehicle rdf:ID="johnSmithsCar">
<ex:registeredTo rdf:resource="http://www.example.org/staffid/85740"/>
<ex:rearSeatLegRoom
rdf:datatype="&xsd;integer">127</ex:rearSeatLegRoom>
<ex:primaryDriver rdf:resource="http://www.example.org/staffid/85740"/>
</ex:PassengerVehicle>
</rdf:RDF>
http://www.w3.org/TR/rdf-primer
Raquel Trillo, 30 de abril
4. Definición de RDF y RDFS
RDF Schema en RDF/XML
(Sólo algunos fragmentos, http://www.w3.org/TR/rdf-schema)
Raquel Trillo, 30 de abril
RDF Schema en RDF/XML
(Sólo algunos fragmentos, http://www.w3.org/TR/rdf-schema)
¿Nos hace falta algo más, aparte
de este tipo de declaraciones?
Raquel Trillo, 30 de abril
4. Semántica e Inferencias
Semántica (I)
Hace falta definir la semántica de las primitivas de
modelado de RDF y RDFS
Lenguaje formal: lógica de predicados
Objetivos:


Quitamos la ambigüedad
Permitimos razonamiento automático
Raquel Trillo, 30 de abril
Semántica (II)
Se utilizan para la definición funciones de listas: nil,
cons(x, l), first(l), rest(l)
Y predicados: item(x, l), list(l)
Los nombres de variables empiezan con ?
Raquel Trillo, 30 de abril
Semántica (III)
Ejemplos:


Type(?c, Container) -> (Type(?c, Bag) v Type(?c, Seq) v
Type(?c, Alt))
PropVal(subClassOf, ?c, ?c’) <(Type(?c, Class) ^ Type(?c’, Class) ^
forall (?x(Type(?x, ?c) -> Type(?x, ?c’)))
Ver documento “RDF Semantics” (http://www.w3.org/TR/2004/REC-rdf-mt-20040210/)
Raquel Trillo, 30 de abril
Inferencias (I)
Razonar con el sistema axiomático anterior requeriría
un procesador de lógica de primer orden

Requerimiento muy grande

¡Gran coste computacional!
Raquel Trillo, 30 de abril
Inferencias (II)
Ejemplos:
IF E contiene las tripletas (?u, rdfs:subClassOf, ?v) y
(?v, rdfs:subClassOf, ?w)
THEN E también contiene la tripleta (?u, rdfs:subClassOf, ?w)
IF E contiene las tripletas (?x, ?p, ?y) y
(?p, rdfs:range, ?u)
THEN E también contiene la tripleta (?y, rdf:type, ?u)
Con unas cuantas reglas de este estilo podemos implementar eficientemente un
razonador (ver sección “7. Entailment rules (Informative)” en el documento “RDF
Semantics” (http://www.w3.org/TR/rdf-mt)
Raquel Trillo, 30 de abril
6. Lenguajes de Consulta
Motivación (I)
RDF es XML…
Y podemos consultar XML usando XPath/XQuery
¿Hace falta un lenguaje de consulta específico para
RDF?
Raquel Trillo, 30 de abril
Motivación (II)
Sí, pues XML es de más bajo nivel
Podemos representar la misma sentencia RDF de
distintas formas usando XML
Según la estructura, usaríamos una consulta XPath u
otra:


//uni:lecturer/uni:title si uni:title es elemento
//uni:[email protected]:title si uni:title es atributo
Raquel Trillo, 30 de abril
Motivación (III)
Por tanto, haría falta un lenguaje de consultas
específico:


Que entienda la sintaxis y el modelo de datos de RDF
Sensible a la semántica de RDFS
 Ej.: si preguntamos por instancias de la superclase, que nos
devuelva también de la subclase)
No estándar: RQL, RDQL, SPARQL, etc.
Raquel Trillo, 30 de como
abril ejemplo
Consultas Básicas RQL (I)
Class (todas las clases)
Property (todas las propiedades)
clase (instancias de la clase clase)
^clase (sólo las instancias directas)
Raquel Trillo, 30 de abril
Consultas Básicas RQL (II)
propiedad (recursos y valores con la propiedad
propiedad )
^ propiedad (no considera subpropiedades de
propiedad )
Raquel Trillo, 30 de abril
RQL: Consultas Tipo SQL (I)
Recuperar los números de teléfono:
select X,Y
from {X}phone{Y}
Recuperar los números de teléfono de los profesores
(join implícito):
select X,Y
from teachers{X}.phone{Y}
Raquel Trillo, 30 de abril
RQL: Consultas Tipo SQL (II)
Nombres de cursos impartidos por el profesor de
nombre 949352 (join explícito):
select N
from course{X}.isTaughtBy{Y}, {C}name{N}
where Y="949352" and X=C
Raquel Trillo, 30 de abril
RQL: Consultar el Esquema (I)
Variables de esquema:


Prefijo $ para clases
Prefijo @ para propiedades
Raquel Trillo, 30 de abril
RQL: Consultar el Esquema (II)
Ejemplo:
select domain(@P),range(@P)
from @P
where @P=phone
Ejemplo:
select X,$X,Y,$Y
from {X:$X}phone{Y:$Y}
Raquel Trillo, 30 de abril
Conclusiones (I)
RDF tiene un modelo de datos basado en grafo
RDF consta de sentencias (tripletas recursopropiedad-valor)
RDF está descentralizado, permite compartir y
construir conocimiento de forma incremental
RDFS define vocabularios para RDF
Raquel Trillo, 30 de abril
Conclusiones (II)
Existen diversos lenguajes de consultas para RDF y
RDFS
RDF tiene algunas limitaciones:



No permite definir clases a partir de otras
No puede negar sentencias
etc.
Raquel Trillo, 30 de abril
Conclusiones (III)
Haría falta enriquecer RDFS con un lenguaje de
ontologías más potente para la web semántica
Raquel Trillo, 30 de abril
Referencias (I)
Resource Description Framework (RDF): Concepts and Abstract Syntax, W3C
Recommendation 10 February 2004, http://www.w3.org/TR/rdf-concepts/
RDF Vocabulary Description Language 1.0: RDF Schema, W3C Recommendation
10 February 2004, http://www.w3.org/TR/rdf-schema/
RDF Semantics, W3C Recommendation 10 February 2004,
http://www.w3.org/TR/rdf-mt/
RDF/XML Syntax Specification (Revised), W3C Recommendation 10 February
2004, http://www.w3.org/TR/rdf-syntax-grammar/
Raquel Trillo, 30 de abril
Referencias (II)
RDF Primer, W3C Recommendation 10 February 2004,
http://www.w3.org/TR/rdf-primer/
An Axiomatic Semantics for RDF, RDF-S, and DAML+OIL, Richard Fikes and
Deborah L McGuinness, March 1, 2001, http://www.daml.org/2001/03/axiomatic-semantics.html
The RDF Query Language (RQL), http://139.91.183.30:9090/RDF/RQL/
RDF Validation Service,
http://www.w3.org/RDF/Validator/
Sesame RQL: a Tutorial, http://www.openrdf.org/doc/rql-tutorial.html
Raquel Trillo, 30 de abril
Referencias (III)
RQL v2.1 User Manual, http://139.91.183.30:9090/RDF/RQL/Manual.html
SPARQL Query Language for RDF, W3C Working Draft 26 March 2007,
http://www.w3.org/TR/rdf-sparql-query/
XML Schema Part 2: Datatypes Second Edition, W3C Recommendation 28
October 2004, http://www.w3.org/TR/xmlschema-2/
A Semantic Web Primer, Grigoris Antoniou and Frank van Harmelen, The MIT
Press, Cambridge, Massachusetts, London, England, http://www.ics.forth.gr/isl/swprimer/ (con
transparencias)
Share your RDF Data with the World!,
http://pingthesemanticweb.com/
Raquel Trillo, 30 de abril
Referencias (IV)
OWL Reasoning Examples,
http://owl.man.ac.uk/2003/why/latest/
Raquel Trillo, 30 de abril
El Lenguaje de Ontologías OWL
Máster en Servicios Web y Comercio Electrónico
Curso 2006/2007
Curso de Web Semántica
Sergio Ilarri Artigas
[email protected]
Raquel Trillo, 30 de abril
Índice
1. Introducción: motivación y versiones
2. El lenguaje OWL
1.
2.
3.
4.
5.
6.
Cabeceras
Clases
Propiedades
Clases Complejas
Instancias
Tipos de datos
3. Conclusiones
Raquel Trillo, 30 de abril
1. Introducción
Motivación (I)
RDF:

Predicados binarios
RDFS (sencillo lenguaje de ontologías):



Jerarquías de clases
Jerarquías de propiedades
Definiciones de rango y dominio
Permite asociar algo
de semántica a los identificadores
Raquel Trillo, 30 de abril
Motivación (II)
Web Ontology Working Group (W3C)
Se necesita más expresividad
Por ejemplo, en RDFS no podemos:


Decir que Person y Car son clases disjuntas
Decir que un cuarteto de música tiene 4 músicos
Raquel Trillo, 30 de abril
Motivación (III)
Alternativas:

DAML+OIL (Europa + Estados Unidos)
 DAML-ONT (propuesta de Estados Unidos)
 OIL (propuesta europea)
Construidos sobre
 OWL
RDF y RDFS
(misma sintaxis)  Web Ontology Language
 Basado en DAML+OIL
Raquel Trillo, 30 de abril
Limitaciones de RDFS
No clases disjuntas

male y female
No restricciones de cardinalidad

una persona tiene 2 padres
No modificadores de propiedades:



transitiva (<)
única (hasPrimaryEmployer)
inversa (writes y is written by)
No clases por combinación

person = male U female
No restricciones de propiedades (rango y dominio) locales a una clase
Raquel Trillo, 30 de abril
Requerimientos
Un lenguaje de ontologías debe proporcionar:




Una sintaxis: RDF/XML (farragosa)
Una semántica (conocimiento)
Soporte para un razonamiento eficiente
Potencia expresiva
Transformación a un formalismo lógico + uso de razonadores
subconjunto de
lógica de predicados
Lógica
Raquel
Trillo,descriptiva
30 de abril
FaCT(++), Racer, Pellet, etc.
Razonamientos
Sobre qué queremos razonar:




Pertenencia a una clase
Equivalencia de clases
Consistencia
etc.
Para qué:



Detectar inconsistencias
Clasificación automática
Descubrir relaciones entre clases
Especialmente útil
para integración
de ontologías
Raquel Trillo, 30 de abril
Tres Versiones de OWL
-Razonamiento eficiente y máxima expresividad
(RDFS + lógica completa) son objetivos contradictorios
OWL
Lite
Jerarquía sintáctica
OWL
DL
Jerarquía semántica
OWL
Full
Compatibilidad hacia arriba
Raquel Trillo, 30 de abril
Sintaxis RDF
Declaración de
instancias como en
RDF
Algunas primitivas
OWL son subclases
de otras de RDF
OWL Full
Contiene todas las primitivas de OWL
Compatible hacia arriba con RDF/RDFS
Las primitivas pueden combinarse arbitrariamente
con RDF y RDFS

Permite cambiar su significado
Desventaja: indecidible
Raquel Trillo, 30 de abril
OWL DL (Description Logics)
Sublenguaje de OWL Full
Restringe OWL Full para que se corresponda con lógica
descriptiva:

No pueden aplicarse primitivas de OWL unas a otras
Ventaja:

Razonamiento eficiente
Desventaja:

No compatible completamente con RDF(S)
Raquel Trillo, 30 de abril
OWL Lite
Subconjunto de las primitivas de OWL DL
Ventajas:


Más sencillo para los usuarios
Más fácil de implementar herramientas
Desventaja:

Menor expresividad
Raquel Trillo, 30 de abril
2. El lenguaje OWL
Representaciones
1. Sintaxis RDF/XML
2. Sintaxis de presentación XML

Más amigable para los usuarios
3. Sintaxis abstracta

Más compacta y fácil de entender que las anteriores
4. Sintaxis gráfica

Basada en las convenciones de UML
Raquel Trillo, 30 de abril
Espacios de Nombres (I)
espacio de nombres por defecto
<rdf:RDF
xmlns
= "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
xmlns:vin = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
xml:base = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#"
xmlns:food = "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#"
xmlns:owl = "http://www.w3.org/2002/07/owl#"
atributo
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#">
-Componente inicial de la ontología
-Permite interpretar los identificadores posteriores fácilmente y sin ambigüedad
¿Por qué no cerramos la etiqueta “rdf:RDF”?
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Espacios de Nombres (II)
Usando entidades XML
<!DOCTYPE rdf:RDF [
<!ENTITY vin "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" >
<!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" > ]>
<rdf:RDF
xmlns
="&vin;"
xmlns:vin ="&vin;"
xml:base ="&vin;"
xmlns:food="&food;"
xmlns:owl ="http://www.w3.org/2002/07/owl#"
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#">
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Cabeceras (I)
Metadatos
<owl:Ontology rdf:about="">
<rdfs:comment>An example OWL ontology</rdfs:comment>
<owl:priorVersion rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031215/wine"/>
<owl:imports rdf:resource="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food"/>
<rdfs:label>Wine Ontology</rdfs:label>
...
</owl:Ontology>
rdfs:about
nombre de la ontología
rdfs:comment
owl:priorVersion
owl:imports
(inclusión transitiva de sentencias)
rdfs:label
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Cabeceras (II)
Otras etiquetas de cabecera:



owl:backwardCompatibleWith
owl:incompatibleWith
owl:versionInfo
¡Es seguro actualizar!
(cambiar espacios de
nombres y owl:imports)
Raquel Trillo, 30 de abril
Clases (I)
<owl:Class rdf:ID="Winery"/>
<owl:Class rdf:ID="Region"/>
<owl:Class rdf:ID="ConsumableThing"/>
<owl:Class rdf:ID="PotableLiquid">
<rdfs:subClassOf rdf:resource="#ConsumableThing" />
...
</owl:Class>
-owl:Class (subconjunto de rdfs:Class)
-owl:subClassOf
-“Winery” es una URI local
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases (II)
<owl:Class rdf:ID="Wine">
<rdfs:subClassOf rdf:resource="&food;PotableLiquid"/>
<rdfs:label xml:lang="en">wine</rdfs:label>
<rdfs:label xml:lang="fr">vin</rdfs:label>
...
</owl:Class>
Pueden usarlo las herramientas de presentación
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
nombre
restricciones
Clases (III)
Dos clases predefinidas:


owl:Thing (la más general)
owl:Nothing (la clase vacía)
Toda clase es subclase de owl:Thing
Toda clase es superclase de owl:Nothing
Raquel Trillo, 30 de abril
Propiedades (I)
Propiedad = relación binaria (como en RDF)
Dos tipos:

Propiedades de tipos de datos (owl:DatatypeProperty)
 Relaciona objetos con valores de tipos de datos (XML Schema o literales
RDF)
 Ej.: phone, age, title, etc.

Propiedades de objetos (owl:ObjectProperty)
 Relaciona objetos entre sí
 Ej.: writes, isMotherOf
Raquel Trillo, 30 de abril
Propiedades (II)
<owl:ObjectProperty rdf:ID="madeFromGrape">
<rdfs:domain rdf:resource="#Wine"/>
<rdfs:range rdf:resource="#WineGrape"/>
</owl:ObjectProperty>
-rdfs:domain
-rdfs:range
-Ausencia de operador en OWL  conjunción implícita (varios dominios y rangos)
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Propiedades (III)
<owl:Thing rdf:ID="LindemansBin65Chardonnay">
<madeFromGrape rdf:resource="#ChardonnayGrape" />
</owl:Thing>
-rdfs:domain
-rdfs:range
LindemansBin65Chardonnay es de la clase Wine
(los dominios y rangos no se usan para comprobar sino para inferir)
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Propiedades (IV)
<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>
-rdfs:subPropertyOf
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Propiedades (V)
<owl:ObjectProperty rdf:ID="locatedIn">
...
<rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
¿Cómo se interpreta este ejemplo?
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Propiedades (VI)
<owl:Class rdf:ID="VintageYear" />
<owl:DatatypeProperty rdf:ID="yearValue">
<rdfs:domain rdf:resource="#VintageYear" />
<rdfs:range rdf:resource="&xsd;positiveInteger"/>
</owl:DatatypeProperty>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Características de las
Propiedades (I)
Características:





owl:TransitiveProperty (“is taller than”)
owl:SymmetricProperty (“is sibling of”)
owl:FunctionalProperty (“age”, “height”)
owl:inverseOf (“hasMaker” y “producesWine”)
owl:InverseFunctionalProperty (“isNSSfor”)
Dos objetos diferentes
no pueden tener el mismo
valor
Raquel Trillo, 30 de abril
Los elementos del rango
proporcionan un identificador
único para cada elemento del
dominio
Características de las
Propiedades (II)
<owl:ObjectProperty rdf:ID="locatedIn">
<rdf:type rdf:resource="&owl;TransitiveProperty" />
<rdfs:domain rdf:resource="&owl;Thing" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
<Region rdf:ID="SantaCruzMountainsRegion">
<locatedIn rdf:resource="#CaliforniaRegion" />
</Region>
<Region rdf:ID="CaliforniaRegion">
<locatedIn rdf:resource="#USRegion" />
</Region>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Características de las
Propiedades (III)
<owl:ObjectProperty rdf:ID="adjacentRegion">
<rdf:type rdf:resource="&owl;SymmetricProperty" />
<rdfs:domain rdf:resource="#Region" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
<Region rdf:ID="MendocinoRegion">
<locatedIn rdf:resource="#CaliforniaRegion" />
<adjacentRegion rdf:resource="#SonomaRegion" />
</Region>
¿Podría ser simétrica la propiedad locateIn?
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Características de las
Propiedades (IV)
<owl:Class rdf:ID="VintageYear" />
<owl:ObjectProperty rdf:ID="hasVintageYear">
<rdf:type rdf:resource="&owl;FunctionalProperty" />
<rdfs:domain rdf:resource="#Vintage" />
<rdfs:range rdf:resource="#VintageYear" />
</owl:ObjectProperty>
¿Todas las cosechas tienen un año asociado?
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Características de las
Propiedades (V)
<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>
Toma un nombre de propiedad como argumento
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Características de las
Propiedades (VI)
Equivalente al ejemplo anterior
<owl:ObjectProperty rdf:ID="hasMaker" />
<owl:ObjectProperty rdf:ID="producesWine">
<rdf:type rdf:resource="&owl;InverseFunctionalProperty" />
<owl:inverseOf rdf:resource="#hasMaker" />
</owl:ObjectProperty>
La inversa de una propiedad funcional debe ser inversa funcional
inverseOf
FunctionalProperty
InverseFunctionalProperty
En OWL Full se puede aplicar a DataTypeProperty (no en OWL DL)
Para
identificar una cadena como clave única
Raquel Trillo, 30 de
abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases con Propiedades (I)
Restricciones de propiedades locales
<owl:Class rdf:ID="Wine">
<rdfs:subClassOf rdf:resource="&food;PotableLiquid"/>
clase
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#madeFromGrape"/>
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
...
</owl:Class>
anónima
-owl:Restriction
→ contiene un owl:onProperty y una o más restricciones
-owl:minCardinality
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases con Propiedades (II)
<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>
-owl:Cardinality
( = owl:minCardinality y owl:maxCardinality con mismo número)
También: owl:maxCardinality (+ owl:minCardinality
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
→ intervalos)
En OWL Lite,
0ó1
Clases con Propiedades (III)
<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>
clase
-owl:allValuesFrom
→
cuantificador universal
para todos los que existen…
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases con Propiedades (IV)
<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>
clase
-owl:someValuesFrom
→
cuantificador existencial
al menos existe uno que…
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases con Propiedades (V)
<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>
instancia de una clase
<WineSugar rdf:ID="Dry" />
-owl:hasValue
En OWL DL
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases Complejas (I)
Constructores de clases basados en operaciones de
conjuntos:


OWL
DL

owl:unionOf
owl:intersectionOf
owl:complementOf
Clases enumeradas:

owl:oneOf
Clases disjuntas:

owl:disjointWith
Raquel Trillo, 30 de abril
expresiones de
clase
Clases Complejas (II)
<owl:Class rdf:ID="Fruit">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#SweetFruit" />
<owl:Class rdf:about="#NonSweetFruit" />
</owl:unionOf>
</owl:Class>
<owl:Class rdf:ID="Fruit">
<rdfs:subClassOf rdf:resource="#SweetFruit" />
<rdfs:subClassOf rdf:resource="#NonSweetFruit" />
</owl:Class>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Define una clase exactamente
Es la clase vacía
Clases Complejas (III)
<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>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Define una clase exactamente
Clases Complejas (IV)
Define una clase exactamente
<owl:Class rdf:ID="ConsumableThing" />
<owl:Class rdf:ID="NonConsumableThing">
<owl:complementOf rdf:resource="#ConsumableThing" />
</owl:Class>
Define una clase exactamente
<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>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases Complejas (V)
<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>
Define una clase exactamente
instancias de la clase
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases Complejas (VI)
<owl:Class rdf:ID="WineColor">
<rdfs:subClassOf rdf:resource="#WineDescriptor"/>
<owl:oneOf rdf:parseType="Collection">
<WineColor rdf:about="#White" />
<WineColor rdf:about="#Rose" />
<WineColor rdf:about="#Red" />
</owl:oneOf>
</owl:Class>
Define una clase exactamente
instancias de la clase
(indicando el tipo concreto)
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Clases Complejas (VII)
<owl:Class rdf:ID="Pasta">
<rdfs:subClassOf rdf:resource="#EdibleThing"/>
<owl:disjointWith rdf:resource="#Meat"/>
<owl:disjointWith rdf:resource="#Fowl"/>
<owl:disjointWith rdf:resource="#Seafood"/>
<owl:disjointWith rdf:resource="#Dessert"/>
<owl:disjointWith rdf:resource="#Fruit"/>
</owl:Class>
¿Y si tenemos 100
clases y queremos
decir que son todas
disjuntas?
No dice nada con respecto a Seafood y Dessert (por ejemplo)
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Mapping entre Ontologías
<owl:Class rdf:ID="Wine">
<owl:equivalentClass rdf:resource="&vin;Wine"/>
</owl:Class>
-owl:equivalentClass
las clases tienen las mismas instancias
-owl:equivalentProperty
En OWL DL las clases no son más que conjuntos de instancias (no son instancias
por sí mismas). En OWL Full se puede utilizar owl:sameAs para indicar que las
clases son idénticas en todos los aspectos
¿Y para qué nos sirve esto?
¿Es simplemente
un
alias?
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Instancias (I)
Definición extendida
<owl:Thing rdf:ID="CentralCoastRegion" />
<owl:Thing rdf:about="#CentralCoastRegion">
<rdf:type rdf:resource="#Region"/>
</owl:Thing>
Definición abreviada
<Region rdf:ID="CentralCoastRegion" />
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Instancias (II)
No suposición de nombres únicos
<owl:Thing rdf:about="#BancroftChardonnay">
<hasMaker rdf:resource="#Bancroft" />
<hasMaker rdf:resource="#Beringer" />
</owl:Thing>
No es un conflicto, a pesar de la restricción de que hasMaker no puede dar 2
valores distintos: se asume que Bancroft = Beringer
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Instancias (III)
Identidad entre instancias
<Wine rdf:ID="MikesFavoriteWine">
<owl:sameAs rdf:resource="#StGenevieveTexasWhite" />
</Wine>
En OWL Full, podemos utilizar owl:sameAs para igualar cualquier cosa
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Instancias (IV)
Desigualdad entre pares
<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>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Instancias (V)
Desigualdad entre pares (abreviado)
<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>
Raquel Trillo, 30 de abril
http://www.w3.org/TR/2004/REC-owl-guide-20040210/
Tipos de Datos (I)
No permite usar tipos de datos definidos por el
usuario basados en XML Schema
Ni siquiera permite utilizar todos los tipos de datos
predefinidos de XML Schema
Raquel Trillo, 30 de abril
Tipos de Datos (II)
TIPOS DE DATOS RECOMENDADOS PARA USAR EN OWL
Raquel Trillo, 30 de abril
Versiones de OWL (I)
OWL DL




Vocabulario separado: cada recurso sólo puede ser de una clase, tipo de
dato, propiedad, etc., pero no de varios de estos a la vez
Se precisa tipado explícito (incluso si podemos deducir, por ejemplo, que
algo es una clase porque aparece como objeto de la propiedad
“rdf:subClassOf”)
No pueden especificarse restricciones de cardinalidad en propiedades
transitivas
Las clases anónimas sólo se permiten en el dominio y rango de
owl:equivalentClass o owl:disjointWith, y en el rango (pero no en el
dominio) de rdfs:subClassOf
Raquel Trillo, 30 de abril
Versiones de OWL (II)
OWL Lite



No permitidos: owl:oneOf, owl:disjointWith, owl:unionOf,
owl:complementOf, owl:hasValue
Cardinalidades permitidas (mínima, máxima y exacta): 0 y 1
owl:equivalentClass sólo puede establecerse entre identificadores
de clases (no entre clases anónimas)
Raquel Trillo, 30 de abril
Algunos Inconvenientes de
OWL
No puedo importar un trozo de una ontología
Suposición de mundo abierto: ¿sería interesante
permitir mundo cerrado?
¿Podría ser útil la suposición de nombres únicos?
Raquel Trillo, 30 de abril
3. Conclusiones
Conclusiones
OWL es el estándar de hecho para definir ontologías
OWL se basa en RDF y RDFS
La semántica y el razonamiento se proporciona tras
transformarse en lógica (lógica de predicados, lógica
descriptiva)
Todavía no está todo dicho...
Raquel Trillo, 30 de abril
Referencias (I)
OWL Web Ontology Language Overview, W3C Recommendation 10 February
2004, http://www.w3.org/TR/owl-features/
OWL Web Ontology Language Guide, W3C Recommendation 10 February 2004,
http://www.w3.org/TR/owl-guide/
OWL Web Ontology Language Use Cases and Requirements, W3C
Recommendation 10 February 2004, http://www.w3.org/TR/webont-req/
OWL Web Ontology Language Semantics and Abstract Syntax, W3C
Recommendation 10 February 2004, http://www.w3.org/TR/owl-semantics/
Raquel Trillo, 30 de abril
Referencias (II)
OWL Web Ontology Language XML Presentation Syntax, W3C Note 11 June
2003, http://www.w3.org/TR/owl-xmlsyntax/
OWL Web Ontology Language Test Cases, W3C Recommendation 10 February
2004,
http://www.w3.org/TR/2004/REC-owl-test-20040210/
DAML, The DARPA Agent Markup Language Homepage,
Ontology Inference Layer OIL,
http://www.ontoknowledge.org/oil/
Raquel Trillo, 30 de abril
http://www.daml.org/
Referencias (III)
A Semantic Web Primer, Grigoris Antoniou and Frank van Harmelen, The MIT
Press, Cambridge, Massachusetts, London, England, http://www.semanticwebprimer.org
ProtegeOntologiesLibrary,
http://protege.cim3.net/cgi-bin/wiki.pl?ProtegeOntologiesLibrary
Raquel Trillo, 30 de abril
Web semántica: SPARQL
El lenguaje de interrogación SPARQL permite consultas los datos
de ficheros en formato RDF y OWL:


Similar a SQL
Basado en el lenguaje de consultas RDQL
Sintaxis:

Las URIs de los recursos consultados van entre <>
 <http://www.unizar.es>

Se pueden establecer prefijos para espacios de nombres
 @prefix nombreprefijo http://www.alumnos.org/

Para especificar un nodo espacioDeNombres:nombreDeNodo
 nombreprefijo:nombreNodo
 Se pueden especificar nodos anónimos _:nombreNodo

Los literales van entre “”
 “José Emilio”

Las variables empiezan por ?
 ?nombrePersona
Raquel Trillo, 30 de abril
Web semántica: SPARQL
SPARQL se basa en encajar patrones de preguntas en
el grafo:
Raquel Trillo, 30 de abril
Web semántica: SPARQL
FILTER añade restricciones a los valores encajados
FILTER utiliza funciones y operadores de Xpath 2.0
Tipos de datos: Boolean, Integer, Float, dataTime, etc.
Operaciones habituales: >,<,>=,<=,=,!=
Otras expresiones: BOUND, isURI, isLiteral, isBlank
Raquel Trillo, 30 de abril
Web semántica: SPARQL
UNION combina resultados de varios grafos
OPTIONAL obtener valores aunque algunas tripletas no
existan
Raquel Trillo, 30 de abril
Web semántica: SPARQL
FROM indica la URL de la que proceden los datos
Raquel Trillo, 30 de abril
Servicios Web semánticos:
Actualmente existen dos tecnologías principales:


OWL-S
WSMO
OWL-S:


Ontología definida en OWL para describir servicos web:
http://www.daml.org/services/owl-s
Objetivos:
 Proporcionar descubrimiento de servicios web basado en
capacidades
 Composición automática de servicios web
 Invocación automática de servicios web

Pretende complementar protocolos ya existentes:
 Utiliza WSDL para invocación
 Aumenta UDDI para descubrimiento
Raquel Trillo, 30 de abril
Servicios Web semánticos
WSMO Web Service Modelling Ontology


Iniciativa de un grupo de trabajo de la Unión Europea
http://www.wsmo.org/
Modelo conceptual para servicios web
 Ontología de los elementos básicos de servicios web
 Lenguaje de descripción formal SWML
 Entorno de ejecución WSMX


Basado en WSMF (Web Service Modeling Framework)
Resuelve el problema de la integración y mediación entre
servicios web
Raquel Trillo, 30 de abril
Referencias
José Emilio Labra. Universidad de La Rioja
Semantic Web Services Interest Group

Grupo
de
interés
creado
(http://www.w3.org/2002/ws/swsig)
en
W3C
SWSI: Iniciativa internacional para estandarizar servicios
web semánticos (http://www.swsi.org)

Incluye 2 comités:
 SWSL: Lenguaje para servicios web semánticos
 SWSA: Requisitos de arquitectura de servicios web semánticos
Otros sistemas:


IRS (Internet Reasoning Service)
Meteor-S
Raquel Trillo, 30 de abril
Sergio Ilarri Artigas ([email protected])
Raquel Trillo Lado ([email protected])
Sistemas de Información Distribuidos (http://sid.cps.unizar.es)
Muchas gracias.
Sugerencias y preguntas.
Raquel Trillo, 30 de abril
Descargar

Entorno web para a Real Academia Galega