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