Reporte de avance, modelamiento de esquema

INTRODUCCION

Para el esquema asociado a las escuelas, estoy agrupando los sub-esquemas que ya habia presentado. Para el tema de jerarquía, he decidido utilizar owl:Class / rdfs:subClassOf, pero complementarlas con skos:Concept / skos:broader, creando un microtesauro. La propuesta es tener una clase llamada Escuela y un microtesauro llamado TesauroEscuela *con cinco elementos principales, cada uno es también una jerarquia de clases*. El objetivo de usar clases es permitir propiedades con rdfs:range y el objetivo de utilizar skos es enfatizar en que las relaciones de jerarquía dicen relación clasificación mas que con algún tipo de meronimia.

KOS son los Sistemas de Organización del Conocimiento y son utilizado por los bibliotecarios, skos permite llevar a rdf+owl, de manera Simple, cualquier tipo de vocabularios controlados: esquemas de clasificación, taxonomías, tesauros, etc. En skos, al igual que en owl se tienen muchas clases y propiedades. Sin embargo, para describir un tesauro, solo se necesita un subconjunto del vocabulario, y se puede crear siguiendo el siguiente patrón:
  • Escoger un nombre para el esquema (N)
  • Indicar que el esquema es de tipo conceptos (N rdf:type skos:ConceptScheme)
  • Crear al menos un concepto principal, se puede tener mas de uno (A skos:topConceptOf N)
  • Jerarquizar los conceptos como especifico (A skos:narrower B) o general (B skos:broader A)
  • Indicar el esquema el que pertencede cada concepto (A skos:inScheme N)
Ademas, para el esquema de la Escuela se utilizaran algunos elementos de owl:
  • Especificar distintos tipos de propiedades, discriminando entre owl:DatatypeProperty (que tienen como rango un literal tipado) y owl:ObjectProperty (que tienen como rango una instancia de una clase).
  • Detallar la cardinalidad que tiene cada propiedad (utilizando owl:cardinality, owl:maxCardinality y owl:minCardinality).

ESQUEMA

Se presentan algunas secciones de ejemplo del esquema, codificado en notation3:
:Escuela a owl:Class.
:rbd a owl:DatatypeProperty;
owl:cardinality "1"^^xsd:nonNegativeInteger;
rdfs:domain :Escuela;
rdfs:range xsd:integer.
[OTRAS PROPIEDADES TIPADAS AQUI]
:areaGeo a owl:ObjectProperty;
owl:cardinality "1"^^xsd:nonNegativeInteger;
rdfs:domain :Escuela;
rdfs:range :AreaGeografica.
[OTRAS PROPIEDADES OBJETO AQUI]
:TesauroEscuela a skos:ConceptScheme.

:AreaGeografica a skos:Concept;
skos:inScheme :TesauroEscuela;
a owl:Class;
skos:topConceptOf :TesauroEscuela.

:Rural a skos:Concept;
a owl:Class;
rdfs:subClassOf :AreaGeografica;
skos:broader :AreaGeografica.

:Urbana a skos:Concept;
a owl:Class;
rdfs:subClassOf :AreaGeografica;
skos:broader :AreaGeografica.
[OTRAS CONCEPTOS AQUI]

Y una representación gráfica de la clase y el microtesauro.



REFERENCIAS

La alternativa de utilizar owl con skos no es nada nuevo, como referencia, ver http://isegserv.itd.rl.ac.uk/public/skos/2007/10/f2f/skos-owl-patterns.html en _Overlay OWL with SKOS_

"""As a point of interest, the SKOS overlay triples could be inferred by RDFS-entailment, by stating that rdf:type, rdfs:subClassOf and rdfs:subPropertyOf are all sub-properties of skos:broader. If we were to allow that, then there would be consequences for the semantics of skos:broader, because we would at least have to optionally allow skos:broader to be interpreted as both reflexive and transitive."""

En el ambito educacional existe el Tesauro Europeo de la Educación, que será de gran ayuda para el proyecto, por ejemplo ver: centro de enseñanza.

CONCLUSION

Como caso general, se propone el siguiente "vocabulario mínimo" para crear esquemas:


ClasesPropiedades
rdf
rdf:type
rdfs
rdfs:domain
rdfs:range
rdfs:subClassOf
owlowl:Class
owl:DatatypeProperty
owl:ObjectProperty
owl:cardinality
owl:maxCardinality
owl:minCardinality
skosskos:Concept
skos:topConceptOf
skos:broader
skos:narrower
skos:inScheme

Ademas se deberán agregar instancias de documentación, quedando por revisar y seleccionar algunos de los siguientes elementos: rdfs:comment, rdfs:label, owl:Ontology, owl:versionInfo, skos:prefLabel, skos:altLabel, skos:hiddenLabel, skos:note.

Se incorporará este vocabulario mínimo, como opciones para ser generados en el editor gráfico de esquemas que estamos desarrollando, lo que permitirá proveer de un marco de trabajo para probar la metodología planteada.

Último prototipo editor

Se presenta el último prototipo del editor de esquemas, esta vez contiene gran parte de las funcionalidades ideadas inicialmente, permitiendo:
  • Agregar/Eliminar una clase
  • Agregar/Eliminar una propiedad
  • Enlazar una clase con otra clase (para indicar rdfs:subClassOf)
  • Enlazar una propiedad con una clase (para indicar rdfs:range)
  • Incrustar una propiedad en una clase (para indicar rdfs:domain)
Nuevamente se presenta, como caso de ejemplo, el diagrama de foaf, esta vez se encuentra pre-cargado al ingresar al prototipo.



Dentro de las funcionalidades a implementar para la primera versión del editor están:
  1. Grabar esquema en servidor
  2. Manejar versiones (histórico)
  3. Listar diagramas en servidor (con nombre - fecha - namespace)
  4. Administrar namespaces (color, curie, url, etc)
  5. Importar rdfs
  6. Seleccionar datatypes (xml)
  7. Borrar un conector
  8. Quitar una propiedad de una clase y dejar sin dominio
  9. Ordenar propiedades en una clase
  10. Dejar como una vista el ocultar las propiedades (diagrama de clases)
  11. Dejar como una vista el mostrar todos los enlaces de rango (diagrama entidad relación)
Las bibliotecas JavaScript utilizados en el prototipos son:

Prototipo editor (2)

Se presenta un nuevo prototipo de la gui para el editor de esquemas. Esta vez ya están "cargadas" todas los esquemas y se pueden agrupar las propiedad que son del dominio de una clase. Como ejemplo se presenta el siguiente esquema que asimila el diagrama del proyecto DOAP .




En el prototipo se "perdió temporalmente" la opción de seleccionar el rango de una propiedad (uniendo una propiedad con una clase) y al hacer doble click sobre una clase se elimina.

Las bibliotecas JavaScript utilizados en el prototipos son: