Post on 14-Jul-2022
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.
clases
instancias
propiedades
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"?>
<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="lecturer">
<rdfs:subClassOf
rdf:resource="#academicStaffMember"/>
</rdfs:Class>
<rdfs:Class rdf:ID="academicStaffMember">
<rdfs:subClassOf
rdf:resource="#staffMember"/>
</rdfs:Class>
<rdfs:Class rdf:ID="staffMember">
</rdfs:Class>
<rdfs:Class rdf:ID="course">
</rdfs:Class>
<rdf:Property rdf:ID="involves">
<rdfs:domain
rdf:resource="#course"/>
<rdfs:range
rdf:resource="#lecturer"/>
</rdf:Property>
<rdf:Property rdf:ID="isTaughtBy">
<rdfs:subPropertyOf
rdf:resource="#involves"/>
</rdf:Property>
<rdf:Property rdf:ID="phone">
<rdfs:domain
rdf:resource="#staffMember"/>
<rdfs:range
rdf:resource="rdf;Literal"/>
</rdf:Property>
</rdf:RDF>
Modelo conceptual - ontología
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
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
<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>
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