Sistemas Multiagente

Anuncio
Sistemas Multiagente
Ontologías
Curso 2009/2010
Alberto Fernández
–1–
Sistemas Multiagente
MTISI
1
Índice
• RDF
• RDF Schema
• OWL
• SPARQL
• Aplicaciones y Herramientas
Bibliografía:
– A Semantic Web Primer. Grigoris Antoniou y Frank van
Harmelen. The MIT Press, cop. 2004
– Semantic Web: Concepts, Technologies and Applications. K.
Breitman, M. A. Casanova, W. Truszkowski. Springer. 2007
– W3C Semantic Web Activity (http://www.w3.org/2001/sw/)
– Foundations of Semantic Web Technologies. P. Hitzler, M.
Krötzsch, S. Rudolph. CRC Press. 2009.
–2–
Sistemas Multiagente
MTISI
Índice
•
•
•
•
•
RDF
RDF Schema
OWL
SPARQL
Aplicaciones y Herramientas
–3–
Sistemas Multiagente
MTISI
RDF
• Resource Description Framework
• Recomendación del W3C
– http://www.w3.org/RDF/
– http://www.w3.org/TR/rdf-primer/
• Modelo de datos equivalente a una red semántica
• Sentencia = tripla (Sujeto, Predicado, Objeto)
– Sujeto: recurso (URI) o “blank node”
– Predicado/Propiedad: relación binaria (URI)
– Objeto: URI, literal o “blank node”
–4–
Sistemas Multiagente
MTISI
RDF: Ejemplo
otación Turtle
<http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/creator> <http://www.example.org/staffid/85740> .
<http://www.example.org/index.html> <http://www.example.org/terms/creation-date> "August 16, 1999" .
<http://www.example.org/index.html> <http://purl.org/dc/elements/1.1/language> "en" .
O más compacto (@prefix ex: <http://www.example.org/>.):
ex:index.html dc:creator exstaff:85740 .
ex:index.html exterms:creation-date "August 16, 1999" .
ex:index.html dc:language "en" .
–5–
Sistemas Multiagente
MTISI
RDF: Sintaxis XML. Ejemplo
<?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/"
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:Description rdf:about="http://www.example.org/index.html">
<dc:language>en</dc:language>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/index.html">
<dc:creator rdf:resource="http://www.example.org/staffid/85740"/>
</rdf:Description>
</rdf:RDF>
<rdf:Description rdf:about="http://www.example.org/index.html">
<exterms:creation-date>August 16, 1999</exterms:creation-date>
<dc:language>en</dc:language>
<dc:creator rdf:resource="http://www.example.org/staffid/85740"/>
</rdf:Description>
–6–
Sistemas Multiagente
MTISI
RDF: Nodos Anónimos (Blank Nodes)
•
•
Nodos sin URI (no es necesaria)
Son independientes entre sí
exstaff:85740
_:johnaddress
_:johnaddress
_:johnaddress
_:johnaddress
exterms:address
exterms:street
exterms:city
exterms:state
exterms:postalCode
–7–
_:johnaddress .
"1501 Grant Avenue" .
"Bedford" .
"Massachusetts" .
"01730" .
Sistemas Multiagente
MTISI
RDF: Literales
• Tipos de datos
– Único predefinido es rdf:XMLLiteral
– Se recomienda usar XML Schema datatypes
(xsd=http://www.w3.org/2001/XMLSchema#):
• xsd:string, xsd:integer, xsd:date,…
• Ejemplo
<creation-date rdf:datatype="http://www.w3.org/2001/XMLSchema#date">
1999-08-16
</creation-date>
<title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
RDF primer
</title>
–8–
Sistemas Multiagente
MTISI
RDF: Contenedores y Colecciones
• Contenedores
–
–
–
–
rdf:Bag: el orden no importa. Puede contener duplicados.
rdf:Seq: el orden es importante
rdf:Alt: alternativas
Observación: los contenedores son “abiertos”
• Colecciones
– Permiten representar colecciones “cerradas”
– rdf:List, rdf:first ,rdf:rest, rdf:nil
–9–
Sistemas Multiagente
MTISI
RDF: Reificación
• Mecanismo para convertir una sentencia en un
recurso
• Vocabulario
– Sentencia: rdf:Statement
– rdf:subject, rdf:predicate, rdf:object
• Ejemplo: (ex:index.html dc:creator exstaff:85740 .)
ex:triple1
ex:triple1
ex:triple1
ex:triple1
rdf:type
rdf:subject
rdf:predicate
rdf:object
– 10 –
rdf:Statement .
ex:index.html .
dc:creator .
exstaff:85740 .
Sistemas Multiagente
MTISI
Índice
•
•
•
•
•
RDF
RDF Schema
OWL
SPARQL
Aplicaciones y Herramientas
– 11 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
• En RDF hablamos de objetos individuales (recursos)
• Nos gustaría razonar sobre clases que definen tipos
de objetos
– Por ejemplo, para evitar sentencias como (válidas en RDF):
• IC es impartida por IC (restricción de rango)
• Casa es impartida por Juan (restricción de domino)
• Solución
– Clases, relaciones, restricciones de dominio y rango, …
– Ejemplo:
• Las asignaturas deben ser impartidas por miembros del
personal académico
– 12 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
• Recomendación del W3C
– http://www.w3.org/TR/rdf-schema/
• RDFS extiende RDF con nuevas primitivas
• Define a un lenguaje básico para describir ontologías
–
–
–
–
Fija la semántica de “subclase de”
Jerarquías de clases y propiedades
Herencia
Restricciones de dominio y rango
– 13 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
• Clases (rdfs:Class) e Instancias (rdf:type)
Definición de Clases
<rdf:Description rdf:ID=“Asignatura">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
O
<rdfs:Class rdf:ID="Asignatura"/>
Instancias
<Asignatura rdf:ID="IC"/>
• Jerarquías de clases (rdfs:subClassOf)
<rdfs:Class rdf:ID="Catedratico">
<rdfs:subClassOf rdf:resource="#PersonalDocente"/>
</rdfs:Class>
– 14 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
• Propiedades (rdf:Property)
<rdf:Property rdf:ID="impartida_por“/>
• Restricciones propiedades (rdfs:domain, rdfs:range)
<rdf:Property rdf:ID="impartida_por">
<rdfs:domain rdf:resource="#Asignatura"/>
<rdfs:range rdf:resource="#PersonalDocente"/>
</rdf:Property>
• Jerarquías de propiedades (rdfs:subPropertyOf)
<rdf:Property rdf:ID="impartida_por">
<rdfs:domain rdf:resource="#Asignatura"/>
<rdfs:range rdf:resource="#PersonalDocente"/>
<rdfs:subPropertyOf rdf:resource="#involucra"/>
</rdf:Property>
– 15 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
Clase
involucra
domain
propiedad
Asignatura
domain
subpropertyOf
range
impatida_por
subclassOf
Contratado
Doctor
type
type
RDF Schema
type
RDF
IC
impatida_por
Personal
range
subclassOf
Personal
Docente
subclassOf
Funcionario
subclassOf
subclassOf
Profesor
Titular
Catedrático
Alberto
Fdez
– 16 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
• Primitivas
– Clases
• rdfs:Resource, rdfs:Literal, rdf:XMLLiteral, rdfs:Class, rdf:Property,
rdfs:Datatype
– Propiedades
• rdf:type, rdfs:subclassOf, rdf:subPropertyOf, rdfs:domain,
rdfs:range, rdfs:label, rdfs:comment
– Contenedores
• rdfs:Container, rdf:Bag, rdf:Seq, rdf:Alt,
rdfs:ContainerMembershipProperty, rdfs:member
– Colecciones
• rdf:List, rdf:first, rdf:rest, rdf:nil
– Reificación
• rdf:Statement, rdf:predicate, rdf:subject, rdf:object
– Otros
• rdfs:seeAlso, rdfs:isDefinedBy, rdf:value
– 17 –
Sistemas Multiagente
MTISI
RDF Schema (RDFS)
posee
domain
range
Persona
Pez
type
type
type
Wendy
posee
Wanda
Violación de la restricción: El rango de posee es Pez.
O No hay inconsistencia: Wanda es un pez!
– 18 –
Sirena?
Sistemas Multiagente
MTISI
RDFS
• Limitaciones de RDFS
– Básicamente permite la organización de vocabularios en
jerarquías
– Ámbito local de las propiedades
• Las restricciones de rango no se pueden aplicar a algunas
clases solamente
– No permite expresar:
• Clases disjuntas
– Ejemplo: masculino y femenino
• Combinación booleana de clases
– Ejemplo: Persona = Hombre ∪ Mujer
• Restricciones de cardinalidad
• Características especiales de las propiedades
– Transitiva, simétrica, inversa de, …
– 19 –
Sistemas Multiagente
MTISI
Índice
•
•
•
•
•
RDF
RDF Schema
OWL
SPARQL
Aplicaciones y Herramientas
– 20 –
Sistemas Multiagente
MTISI
OWL
• Web Ontology Language
• Recomendación del W3C
– http://www.w3.org/2004/OWL/
– http://www.w3.org/TR/owl-guide/
• Es un lenguaje para describir ontologías
• Se construye sobre RDFS, añadiendo constructores
para aumentar la expresividad
• Tres sublenguajes (de mayor a menor expresividad):
– OWL Full
– OWL DL
– OWL Lite
– 21 –
Sistemas Multiagente
MTISI
OWL
• Cabecera
–
–
–
–
–
–
–
–
owl:Ontology
owl:imports: URI ontología
owl:versionInfo
owl:priorVersion: URI ontología
owl:backwardCompatibleWith
owl:incompatibleWith: no es compatible hacia atrás
owl:DeprecatedClass
owl:DeprecatedProperty
<owl:Ontology rdf:about="">
<owl:versionInfo>v 1.1</owl:versionInfo>
<rdfs:comment>An example ontology</rdfs:comment>
<owl:imports rdf:resource="http://www.example.org/foo"/>
<owl:backwardCompatibleWith
rdf:resource="http://www.example.org/vehicle-1.0"/>
<owl:priorVersion rdf:resource="http://www.example.org/veh-1.0"/>
</owl:Ontology>
– 22 –
Sistemas Multiagente
MTISI
OWL
• Clases
– owl:Class
• owl:Class es subclase de rdfs:Class
<owl:Class rdf:ID="Asignatura"/>
– rdfs:subClassOf (⊑)
– owl:Thing: ⊤ (superclase de todas las clases)
– owl:Nothing: ⊥ (subclase de todas las clases)
– 23 –
Sistemas Multiagente
MTISI
OWL
• Propiedades
– owl:ObjectProperty: relaciona instancias de dos clases
– owl:DatatypeProperty: relaciona instancias con Literales y
tipos de datos XML Schema
– rdfs:subPropertyOf
– rdfs:domain
– rdfs:range
– 24 –
Sistemas Multiagente
MTISI
OWL
• Características de propiedades
– owl:TransitiveProperty:
• p(x,y) ∧ p(y,z) → p(x,z) (ej: “antepasado de”)
– owl:SymmetricProperty:
• p(x,y) ↔ p(y,x)
(ej: “familiar de”)
– owl:FunctionalProperty:
• p(x,y) ∧ p(x,z) → y = z (ej: “año nacimiento”)
– owl:inverseOf: (r –)
• p1(x,y) ↔ p2(y,x)
(ej: p1=“profesor”, p2=“alumno”)
– owl:InverseFunctionalProperty
• p(y,x) ∧ p(z,x) → y = z (ej: p1=“DNI”, p2=“ID”)
– 25 –
Sistemas Multiagente
MTISI
OWL
• Restricciones de propiedades
– owl:Restriction
– owl:onProperty
– owl:allValuesFrom: ∀r.C
<owl:Class rdf:ID="Vaca">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#come" />
<owl:allValuesFrom rdf:resource="#Hierba" />
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
–
–
–
–
–
owl:someValuesFrom: ∃r.C
owl:cardinality
owl:maxCardinality
owl:minCardinality
owl:hasValue
– 26 –
Sistemas Multiagente
MTISI
OWL
• Clases complejas
–
–
–
–
–
intersectionOf: C ⊓ D
unionOf: C ⊔ D
complementOf: ¬C
owl:disjointWith: clases disjuntas (sin individuos en común)
owl:oneOf: enumera los individuos que pertenecen a una clase
<owl:Class rdf:ID=“ColorSemaforo">
<owl:oneOf rdf:parseType="Collection">
<Color rdf:about="#Rojo"/>
<Color rdf:about="#Ambar"/>
<Color rdf:about="#Verde"/>
</owl:oneOf>
</owl:Class>
– 27 –
Sistemas Multiagente
MTISI
OWL
• Ontology mapping
–
–
–
–
–
–
owl:equivalentClass (≡)
owl:equivalentProperty
owl:sameAs: dos URIs representan el mismo individuo
owl:differentFrom: dos URIs representan el mismo individuo
owl:AllDifferent
owl:distinctMembers
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<Color rdf:about="#Azul" />
<Color rdf:about="#Rojo" />
<Color rdf:about="#Verde" />
</owl:distinctMembers>
</owl:AllDifferent>
Se puede deducir que #Azul no es color de semáforo (antes no)
– 28 –
Sistemas Multiagente
MTISI
OWL
• Anotaciones
–
–
–
–
–
–
rdfs:label
rdfs:comment
rdfs:seeAlso
rdfs:isDefinedBy
owl:AnnotationProperty
owl:OntologyProperty
– 29 –
Sistemas Multiagente
MTISI
OWL: ejemplos de inferencias
• Ejemplo disjointWith
Profesor owl:subClassOf PersonalDocente .
Libro owl:subClassOf Publicación .
PersonalDocente owl:disjointWith Publicación .
Se infiere: Profesor y Libro son disjuntos
• Ejemplo owl:equivalentClass
Hombre owl:subClassOf Persona
Persona owl:equivalentClass Humano
Se infiere: Hombre es subclase de Humano
• Ejemplo instancias
“A Semantic Web Primer” rdf:type Libro
Libro owl:subClassOf Publicación
Se infiere: “A Semantic Web Primer” es una Publicación
– 30 –
Sistemas Multiagente
MTISI
Índice
•
•
•
•
•
RDF
RDF Schema
OWL
SPARQL
Aplicaciones y Herramientas
– 31 –
Sistemas Multiagente
MTISI
SPARQL
• Query Language for RDF
• Recomendación del W3C
– http://www.w3.org/TR/rdf-sparql-query/
• Lenguaje de consulta de contenidos RDF
• Sintaxis estilo SQL
• Ejemplo
SELECT ?nom ?ape
WHERE
{ ?x :nombre
?nom.
?x :apellido ?ape.
?x rdf:type :Empleado.
?x :año_nac
?y.
FILTER (?y >= “1980").}
– 32 –
Sistemas Multiagente
MTISI
Índice
•
•
•
•
•
RDF
RDF Schema
OWL
SPARQL
Aplicaciones y Herramientas
– 33 –
Sistemas Multiagente
MTISI
Aplicaciones
• Anotación de datos no estructurados
• Integración de datos
[http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/]
– 34 –
Sistemas Multiagente
MTISI
La Web Semántica
• ¿Qué es la Web?
– HTTP (cómo transferir datos)
GET /index.htm
– URI (cómo referenciar los datos)
http://www.ia.urjc.es/
– HTML (cómo mostrar datos para los humanos)
<html> <head> <title>Grupo de Inteligencia Artificial</title> …
• El problema con la Web
Millones de documentos disponibles online. Problemas:
– Recuperación de los documentos adecuados
– Extracción de los datos relevantes (de dichos documentos)
– Combinación de información de diferentes fuentes
– 35 –
Sistemas Multiagente
MTISI
Recuperación de documentos adecuados
¿Cuál es la página de
publicaciones de Tim
Berners-Lee?
– 36 –
Sistemas Multiagente
MTISI
Extracción de información
¿Qué es un libro
sobre la Web?
¿Cuál es el
precio?
– 37 –
Sistemas Multiagente
MTISI
Combinación de información
Quiero la oferta
más barata de ‘‘A
Semantic Web
Primer“
– 38 –
Sistemas Multiagente
MTISI
Combinación de información
Quiero la oferta más barata de ‘‘A
Semantic Web Primer“ incluyendo
costes de envío
Varios clicks para averiguar el
precio de envío
Alberto Fernandez
Universidad Rey Juan Carlos
Tulipan s/n
Mostoles 28933. Spain
– 39 –
Sistemas Multiagente
MTISI
La Web Semántica
• Solución
– En lugar de lenguaje natural, publicar datos procesables por
los ordenadores
– Publicar información en términos entendibles por los
ordenadores
– Realizar consultas en términos entendibles por las máquinas
• ¿Cómo?
– Representar conocimiento usando Ontologías estandarizadas
• Semantic Web:
“the idea of having data on the Web defined and linked in a way that
it can be used by machines not just for display purposes, but for
automation, integration and reuse of data across various
applications”
[W3C Semantic Web Activity (http://www.w3.org/2001/sw/)]
– 40 –
Sistemas
IngenieríaMultiagente
del Conocimiento
4º Ingeniería
MTISIInformática
Estructura de Capas de la Web Semántica
– 41 –
Sistemas Multiagente
MTISI
Herramientas
• Validadores
– RDF: http://www.w3.org/RDF/Validator/
– OWL: http://owl.cs.manchester.ac.uk/validator/
• Jena – A Semantic Web Framework for Java
– Entorno de programación para RDF, RDFS, OWL, SPARQL
– http://jena.sourceforge.net/
• SESAME
– Entorno de programación para RDF y RDFS
– http://www.openrdf.org/
• Protégé: editor de ontologías
– RDF, RDFS, OWL
– Panel SPARQL
– 42 –
Sistemas Multiagente
MTISI
Descargar