RDF Schema

Anuncio
RDF Schema
RDF
 RDF es un lenguaje universal que permite a los usuarios
describir los recursos utilizando su propio vocabulario.
 RDF no hace suposiciones sobre un dominio particular, ni
define la semántica de cualquier dominio.
 Eso es responsabilidad del usuario al hacerlo en el RDF
Esquema (RDFS).
Clases y propiedades
 Dominio: el dominio de los cursos (courses) y profesores (lecturers) de
la Universidad Griffith
 Lecturers, tal como David Billington
 Courses, tal como Discrete Mathematics
 Courses, first-year courses, lecturers, professors, etc.
 Objetos individuales (Recursos)
 Objetos que pertenecen a una clase (instancias de la clase).
 Clases que definen tipos de objetos
 Conjunto de elementos.
 Restricciones en el rango (lecturers):
 Discrete Mathematics is taught by Concrete Mathematics.
 Restricciones en el dominio (courses):
 Room MZH5760 is taught by David Billington.
Una jerarquía de clases
Jerarquía de clases y herencia
Clases
 staff members (miembros del personal)
 assistant professors
 academic staff members (miembros del personal académico )
 administrative staff members
 professors
 technical support staff members
 associate professors
Jerarquías
 A es una subclase de B si cada instancia de A es también una instancia de B.
 “Every professor is an academic staff member.”
 “professor” es una subclase de “academic staff member”,
 “academic staff member” es una superclase de “professor”
 La relación subclase (subclass) define una jerarquía de clases.
 Un grafo de subclases no necesita ser un árbol. Una clase puede tener
múltiples superclases.
 Si una clase A es una subclase de ambos B1 y B2, esto significa que cada
instancia de A es una instancia de B1 y una instancia de B2.
Herencia
 Considera la siguiente restricción de rango:
 Courses must be taught by academic staff members only.
 Supongamos Michael Maher se define como un profesor. Entonces, de




acuerdo con la restricción anterior, no está autorizado para impartir
cursos.
La razón es que no hay ninguna declaración que especifique que Michael
Maher es también un miembro del personal académico.
Nos gustaría Michael Maher heredara la capacidad de enseñar de la clase
de los miembros del personal académico.
Exactamente esto se hace en RDF esquema.
RDF schema define la relación subclase, sin embargo, es en la aplicación
donde se interpreta.
Programación orientada a objetos
 En la programación orientada a objetos, una clase de objeto
define las propiedades que le son aplicables.
 Añadir nuevas propiedades a una clase significa modificar la
clase.
 En RDFS, las propiedades se definen globalmente, es decir,
no están encapsulados como atributos en las definiciones de
la clase.
 Es posible definir nuevas propiedades que se aplican a una
clase existente sin cambiar esa clase.
Jerarquía de propiedades
 Se puede definir la jerarquía entre clases,
 Lo mismo pasa para la propiedades.
 Por ejemplo,
 “is taught by” es una subpropiedad de “involves”
 Si “ a course c is taught by an academic staff member a”, entonces “c also
involves a”.
 La inversa no es necesariamente cierta.
 Por ejemplo, a puede ser el coordinador del curso, o un tutor que indica
a los estudiantes la tarea pero no les enseña a c.
 En general, P es una subpropiedad de Q si Q(x,y) siempre que P(x,y).
RDF contra capas RDFS
 Ejemplo:
 Discrete Mathematics is taught by David Billington.
 El esquema para esta declaración puede contener clases tales
como:
 lecturers,
 academic staff members,
 staff members,
 first-year courses,
 Propiedades tales como
 is taught by, involves, phone, employee ID.
propiedades
clases
instancias
Ejemplo
 <?xml version="1.0"?>
<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://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID=“dog">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
Clases
 rdfs:Resource, la clase de todos los recurso
 rdfs:Class, la clase de todas las clases
 rdfs:Literal, la clase de todas las literales (cadenas)
 rdf:Property, la clase de todas las propiedades
 rdf:Statement, la clase de todas las declaraciones modificadas
Propiedades básicas para definir
relaciones
 rdf:type, que relaciona un recurso a su clase. El recurso es
declarado como una instancia de esa clase.
 rdfs:subClassOf, que relaciona una clase con su superclase.
Todas las instancias de una clase son instancias de su
superclase. Note que una clase puede ser una subclase de más
de una clase.
 Ejemplo: la clase femaleProfessor puede ser subclase de ambas
female y professor.
 rdfs:subPropertyOf, que relaciona una propiedad a con una
superpropiedad.
<?xml version="1.0"?> Modelo conceptual - ontología
<rdf:RDF
<rdf:Property rdf:ID="involves">
xmlns:rdf="http://www.w3.org/1999/02/22-rdf<rdfs:domain
syntax-ns#"
rdf:resource="#course"/>
xmlns:rdfs="http://www.w3.org/2000/01/rdf<rdfs:range
schema#">
rdf:resource="#lecturer"/>
</rdf:Property>
<rdfs:Class rdf:ID="lecturer">
<rdfs:subClassOf
<rdf:Property rdf:ID="isTaughtBy">
rdf:resource="#academicStaffMember"/>
<rdfs:subPropertyOf
</rdfs:Class>
rdf:resource="#involves"/>
</rdf:Property>
<rdfs:Class rdf:ID="academicStaffMember">
<rdfs:subClassOf
<rdf:Property rdf:ID="phone">
rdf:resource="#staffMember"/>
<rdfs:domain
</rdfs:Class>
rdf:resource="#staffMember"/>
<rdfs:range
<rdfs:Class rdf:ID="staffMember">
rdf:resource="rdf;Literal"/>
</rdfs:Class>
</rdf:Property>
<rdfs:Class rdf:ID="course">
</rdfs:Class>
</rdf:RDF>
Ejercicio
Solución
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Class rdf:ID="motorVehicle"/>
<rdfs:Class rdf:ID="van">
<rdfs:subClassOf rdf:resource="#motorVehicle"/>
</rdfs:Class>
<rdfs:Class rdf:ID="truck">
<rdfs:subClassOf rdf:resource="#motorVehicle"/>
</rdfs:Class>
<rdfs:Class rdf:ID="passengerVehicle">
<rdfs:subClassOf rdf:resource="#motorVehicle"/>
</rdfs:Class>
<rdfs:Class rdf:ID="miniVan">
<rdfs:subClassOf rdf:resource="#passengerVehicle"/>
<rdfs:subClassOf rdf:resource="#van"/>
</rdfs:Class>
</rdf:RDF>
Ejercicio
RDFS vocabulario
 Clases
 Este grupo incluye términos RDFS que pueden usarse para
definir clases. Términos:
 rdfs:Resource, rdfs:Class, rdfs:Literal, rdfs:Datatype.
 Propiedades
 Este grupo incluye términos RDFS que pueden usarse para
definir propiedades y se incluyen los siguientes términos:
 rdfs:range, rdfs:domain, rdfs:subClassOf,
 rdfs:subPropertyOf, rdfs:label y rdfs:comment.
 Utilerias
 Diversos propósitos, rdfs:seeAlso y rdfs:isDefinedBy.
Definiendo clases
 rdfs:Resource representa la clase raíz, y cada clase definida
usando términos RDFS es una subclase de esta clase.
 En la práctica, se usa poco; todas las cosas descritas por RDF
son instancias de la clase rdfs:Resource.
 Para definir una clase en un vocabulario, se utiliza rdfs:Class.
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#">
<rdf:Description
rdf:about="http://www.liyangyu.com/camera#Camera">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
</rdf:RDF>
Ejemplo
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#"
xml:base="http://www.liyangyu.com/camera#">
<rdf:Description rdf:ID="Camera">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
</rdf:RDF>
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#"
xml:base="http://www.liyangyu.com/camera#">
<rdf:Class rdf:ID="Camera">
</rdf:Class>
</rdf:RDF>
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#"
xml:base="http://www.liyangyu.com/camera#">
<rdf:Class rdf:ID="Camera">
</rdf:Class>
</rdf:RDF>
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#"
xml:base="http://www.liyangyu.com/camera#">
<rdf:Class rdf:about="http://www.liyangyu.com/camera#Camera">
</rdf:Class>
</rdf:RDF>
Ejemplo
1: <?xml version="1.0"?>
2: <rdf:RDF
2a: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3: xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
4: xmlns:myCamera="http://www.liyangyu.com/camera#"
5: xml:base="http://www.liyangyu.com/camera#">
6:
7: <rdfs:Class rdf:about="http://www.liyangyu.com/camera#Camera">
8: </rdfs:Class>
9:
10: <rdfs:Class rdf:about="http://www.liyangyu.com/camera#Lens">
11: </rdfs:Class>
12:
13: <rdfs:Class rdf:about="http://www.liyangyu.com/camera#Body">
14: </rdfs:Class>
15:
16: <rdfs:Class
16a: rdf:about="http://www.liyangyu.com/camera#ValueRange">
17: </rdfs:Class>
18:
19: </rdf:RDF>
rdfs:subClassOf
 Ejemplo
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Digital">
<rdfs:subClassOf
rdf:resource="http://www.liyangyu.com/camera#Camera"/>
</rdfs:Class>
Ejercicio
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#"
xml:base="http://www.liyangyu.com/camera#">
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Camera">
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Lens">
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Body">
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#ValueRange">
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Digital">
<rdfs:subClassOf rdf:resource="#Camera"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.liyangyu.com/camera#Film">
<rdfs:subClassOf rdf:resource="#Camera"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.liyangyu.com/camera#DSLR">
<rdfs:subClassOf rdf:resource="#Digital"/>
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#PointAndShoot">
<rdfs:subClassOf rdf:resource="#Digital"/>
</rdfs:Class>
<rdfs:Class
rdf:about="http://www.liyangyu.com/camera#Photographer">
<rdfs:subClassOf
rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdfs:Class>
</rdf:RDF>
Propiedades
 Para definir una propiedad,
 rdf:Property
 Para especificar el URI de la propiedad:
 rdf:about
 Juntos indican como usar la propiedad
 rdfs:domain
 rdfs:range
Ejemplo
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#owned_by">
<rdfs:domain rdf:resource="#DSLR"/>
<rdfs:range rdf:resource="#Photographer"/>
</rdf:Property>
Propiedades
 Al definir una propiedad, se pueden especificar múltiples
propiedades.
 En este caso, indicamos que la propiedad puede ser usada con
un recurso que es una instancia de cada clase definida por la
propiedad rdfs:domain.
 Ejemplo:
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#owned_by">
<rdfs:domain rdf:resource="#DSLR"/>
<rdfs:domain rdf:resource="#PointAndShoot"/>
<rdfs:range rdf:resource="#Photographer"/>
</rdf:Property>
Propiedades
 También podemos usar múltiples propiedades rdfs:range
 Ejemplo:
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#owned_by">
<rdfs:domain rdf:resource="#DSLR"/>
<rdfs:range rdf:resource="#Photographer"/>
<rdfs:range rdf:resource="#Journalist"/>
</rdf:Property>
Ejercicio
1: <?xml version="1.0"?>
2: <rdf:RDF
2a: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3: xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
4: xmlns:myCamera="http://www.liyangyu.com/camera#"
5: xml:base="http://www.liyangyu.com/camera#">
6:
7:
... // classes/sub-classes definitions as shown in List 4.7
38:
39: <rdf:Property
39a: rdf:about="http://www.liyangyu.com/camera#owned_by">
40: <rdfs:domain rdf:resource="#DSLR"/>
41: <rdfs:range rdf:resource="#Photographer"/>
42: </rdf:Property>
43:
44: <rdf:Property
44a:
rdf:about="http://www.liyangyu.com/camera#manufactured_by">
45: <rdfs:domain rdf:resource="#Camera"/>
46: </rdf:Property>
47:
48: <rdf:Property
48a: rdf:about="http://www.liyangyu.com/camera#body">
49: <rdfs:domain rdf:resource="#Camera"/>
50: <rdfs:range rdf:resource="#Body"/>
51: </rdf:Property>
52:
53: <rdf:Property
53a: rdf:about="http://www.liyangyu.com/camera#lens">
54: <rdfs:domain rdf:resource="#Camera"/>
55: <rdfs:range rdf:resource="#Lens"/>
56: </rdf:Property>
57:
58: <rdf:Property
58a: rdf:about="http://www.liyangyu.com/camera#model">
59: <rdfs:domain rdf:resource="#Camera"/>
60: <rdfs:range
60a: rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
61: </rdf:Property>
62:
63: <rdf:Property
63a: rdf:about="http://www.liyangyu.com/camera#effectivePixel">
64: <rdfs:domain rdf:resource="#Digital"/>
65: <rdfs:range
65a: rdf:resource="http://www.w3.org/2001/XMLSchema#decimal"/>
66: </rdf:Property>
67:
68: <rdf:Property
68a: rdf:about="http://www.liyangyu.com/camera#shutterSpeed">
69: <rdfs:domain rdf:resource="#Body"/>
70: <rdfs:range rdf:resource="#ValueRange"/>
71: </rdf:Property>
72:
73: <rdf:Property
73a: rdf:about="http://www.liyangyu.com/camera#focalLength">
74: <rdfs:domain rdf:resource="#Lens"/>
75: <rdfs:range
75a: rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
76: </rdf:Property>
77:
78: <rdf:Property
78a: rdf:about="http://www.liyangyu.com/camera#aperture">
79: <rdfs:domain rdf:resource="#Lens"/>
80: <rdfs:range rdf:resource="#ValueRange"/>
81: </rdf:Property>
82:
83: <rdf:Property
83a: rdf:about="http://www.liyangyu.com/camera#minValue">
84: <rdfs:domain rdf:resource="#ValueRange"/>
85: <rdfs:range
85a: rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
86: </rdf:Property>
87:
88: <rdf:Property
88a: rdf:about="http://www.liyangyu.com/camera#maxValue">
89: <rdfs:domain rdf:resource="#ValueRange"/>
90: <rdfs:range
90a: rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
91: </rdf:Property>
92:
93: </rdf:RDF>
Subpropiedades
 Las propiedades son heredables desde la clase base a las subclases.
 Una clase siempre hereda propiedades de su clase base.
 Se define una propiedad como una subpropiedad de otra propiedad,
usando rdfs:subPropertyOf.
 Ejemplo: declara la propiedad officialModel como una especialización de
la propiedad model.
 La propiedad officialModel hereda los valores de rdfs:domain y
rdfs:range desde la propiedad base model.
 También se pueden usar múltiples rdfs:subPropertyOf cuando se define
una propiedad. En este caso, estamos declarando la propiedad como
subpropiedad de cada una de las propiedades base.
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#officialModel">
<rdfs:subPropertyOf rdf:resource="#model"/>
</rdf:Property>
Tipos de Datos RDFS
 La propiedad rdfs:range se usa para especificar los posibles valores de
una propiedad declarada.
 La propiedad puede tener cadenas sin tipo como valores, y se presentan
por la clase rdfs:Literal
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#model">
<rdfs:domain rdf:resource="#Camera"/>
<rdfs:range
rdf:resource="http://www.w3.org/2001/01/rdf-schema#Literal"/>
</rdf:Property>
 El uso de rdfs:Literal no es una solución recomendada en muchos casos.
Lo mejor es proveer un valor de tipo. Por ejemplo, un tipo de dato en
XMLS es:
 http://www.w3.org/2001/XMLSchema#string
Tipos de datos
 Siempre, es útil declarar claramente que un URI dado
representa un tipo de dato, ejemplo:
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#model">
<rdfs:domain rdf:resource="#Camera"/>
<rdfs:range
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</rdf:Property>
<rdfs:Datatype
rdf:about="http://www.w3.org/2001/XMLSchema#string"/>
Otra definición
 El analizador concluirá que tiene una literal como valor.
<rdf:Property
rdf:about="http://www.liyangyu.com/camera#effectivePixel">
<rdfs:domain rdf:resource="#Digital"/>
<rdfs:range
rdf:resource="http://www.liyangyu.com/camera#MegaPixel"/>
</rdf:Property>
<rdfs:Datatype
rdf:about="http://www.liyangyu.com/camera#MegaPixel">
<rdfs:subClassOf
rdf:resource="http://www.w3.org/2001/XMLSchema#decimal"/>
</rdfs:Datatype>
 Note que si rdfs:Datatype se utiliza en el documento RDFS
esto indicará un tipo de dato.
 Por lo tanto, la correspondiente declaración de instancia
RDF debe usar la propiedad rdf:datatype, como sigue:
<model
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Nikon_D300
</model>
<effectivePixel
rdf:datatype="http://www.liyangyu.com/camera#MegaPixel">
12.3
</effectivePixel>
Ejercicio
 Construir una ontología acerca de geografía que modele
ciudades, países, capitales, fronteras, estados, etc.
 Modela una ontología acerca de una biblioteca que incluya
libros, autores, editores, fechas, copias, etc.
Otras propiedades
 rdfs:seeAlso
 rdfs:isDefinedBy
 rdfs:label
 rdfs:comment
rdfs:seeAlso
 rdfs: seeAlso es una propiedad que se puede utilizar en
cualquier recurso, e indica que otro recurso puede
proporcionar información adicional sobre el recurso dado.
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:myCamera="http://www.liyangyu.com/camera#">
<rdf:Description
rdf:about="http://www.liyangyu.com/camera#Nikon_D300">
<rdf:type
rdf:resource="http://www.liyangyu.com/camera#DSLR"/>
<rdfs:seeAlso
rdf:resource="http://dbpedia.org/resource/Nikon_D300"/>
</rdf:Description>
</rdf:RDF>
rdfs:isDefinedBy
 rdfs:isDefinedBy es similar a rdfs:seeAlso, y es una
subpropiedad de rdfs:seeAlso.
 Se pretende especificar la fuente primaria de
información sobre un recurso determinado.
 Por ejemplo, la siguiente declaración:
 subject rdfs:isDefinedBy object
 Se dice que el recurso sujeto se define por el recurso objeto, y
más específicamente, este recurso objeto se supone que es una
descripción original o autorizada del recurso.
 rdfs:label se utiliza para proporcionar un nombre de
clase/propiedad para los ojos humanos.
 rdfs:comment proporciona una descripción legible por
humanos de la propiedad/clase que se está definiendo.
Ejemplo
1: <rdf:Property rdf:ID="officialModel">
2: <rdfs:subPropertyOf rdf:resource="#model"/>
3: <rdfs:label
xml:lang="EN">officialModelName</rdfs:label>
4: <rdfs:comment xml:lang="EN">
4a: this is the official name of the camera.
4b: the manufacturer may use different names when
4c: the camera is sold in different regions/countries.
5: </rdfs:comment>
6: </rdf:Property>
Ejercicio
Descargar