DOCUMENTO DE FUNCIONALIDAD Este documento contiene los requerimientos funcionales de la aplicación. Se espera que el lector tenga un conocimiento medio de Semantic Web para entender algunos conceptos utilizados en el documento. Documentos como “RDF Primer”, o “An Introduction to RDF and the Jena RDF API” pueden ser de gran utilidad. Creación de modelos (ontologías) La aplicación permitirá la creación de modelos u ontologías utilizando RDF. Estos modelos constan de Statements, los cuales a su vez constan de un subject, un predicate y un object. El usuario puede crear un subject en un modelo indicando un URI, el cual debe ser único. A todos los subjects creados en el modelo se le pueden agregar predicates, que son las propiedades del subject. Estas propiedades pueden pertenecer a uno de los vocabularios predefinidos o el usuario puede especificar el URI de la propiedad. Al especificar el URI de la propiedad, el usuario debe ingresar el namespace junto con el local name. En el momento de ingresar la propiedad del subject, el usuario debe ingresar el valor asociado a esta propiedad, el cual puede ser un Resource o un Literal. Si el valor es un Resource, el usuario puede proporcionar el URI que identifica el Resource ingresado como valor o puede dejarlo en blanco, para indicar que desea crear un Blank Node. Si es un Literal, el usuario proporciona simplemente el valor de este. Se podrá utilizar el vocabulario de RDF junto con los definidos por RDFSchema y OWL. En la creación de los Statements, los Objects que son los valores de los Predicates deben soportar typed literals. Los datatypes a soportar son: XMLLiteral. Define contenido XML como valor del literal. XMLSchema datatypes: o Boolean. o Date. o Double. o Float o Long. o Int. Esta lista puede ser modificada posteriormente. El usuario podrá también ingresar un Resource de tipo Container. Los tipos de Container son: BAG para una colección no ordenada. ALT para una colección no ordenada que representa alternativas. SEQ para una colección de objetos ordenada. A un Resource de tipo Container entonces se le pueden agregar Resources y luego recuperarlos, remover elementos y consultar sobre sus nodos y su tamaño. //**Revisar bien la funcionalidad que se va a realizar con RDFSchema y OWL Para la utilización de modelos de ontologías, es decir, el uso de RDFSchema o de OWL se debe tomar en cuenta las posibilidades que estos brindan para ofrecer al usuario. Es decir que si el usuario escoge crear una ontologia utilizando RDFSchema, solo deben estar disponibles cosas como subclase, sub-properties, domain y range. Pero si en lugar de este se escogiera OWL, herramientas como disjointness deben estar disponibles. ( buscar reasoner capabilities en inference documentation ). Cuando se use OWL, se debe tambien indicar si se desean importar documentos dentro de la ontologia ya que este lenguaje lo permite. Tambien se puede indicar que se cree un modelo sin tomar en cuenta los imports de este. Tambien se puede ser más selecto indicando que URIS no se quieren cargar. Al ingresar Resource (OntResource), se pueden especificar información sobre la version del recurso, algun comentario, una marca (label), etc. (Mayor información en Jena Ontology API, The generic ontology type). Se pueden eliminar resources completamente de una ontologia, lo que implica que se retira de todos los statements donde aparezca como subject o object. Al ingresar nodos de tipo properties utilizando un lenguaje como OWL se pueden especificar propiedades como funcionales, transitivas, simetricas, inversamente funcional.**/ Guardado y Recuperación de Modelos La aplicación permitirá guardar los modelos creados por el usuario en un archivo con el formato RDF/XML (REVISAR LO DE LOS OTROS LENGUAJES). La aplicación también permitirá recuperar modelos guardados en un archivo con el formato RDF/XML. El usuario debe especificar el archivo que contiene el modelo. La aplicación permitirá trabajar con modelos en XML especificados por un URL. Navegación de modelos La aplicación permitira visualizar todos los Resources que tienen propiedades en el modelo. Sobre cada uno de los Resources, se podrán ver todas las propiedades del mismo especificadas en el modelo. La aplicación permitirá ver todos los statements realizados sobre un modelo predeterminado. Estos se podrán ver en notación RDF/XML y N-Triples. ( Notación gráfica pendiente). Búsqueda en modelos La aplicación permitirá al usuario realizar búsqueda con cualquier combinación en los campos de un Statement. Por ejemplo, si el usuario especifica únicamente el Subject de un Statement, encontrara todos los Statements que contengan el Subject que específico el usuario. Si además especificara el Predicate del Statement, como resultado de la consulta obtendrá todos los Statements que contengan como Subject y Predicate los valores especificados por el usuario. Por ejemplo: Si los siguientes Statements han sido introducidos: http://algo/GabrielLozano http://www.w3.org/2001/vcard-rdf/3.0#N “Gabriel” http://algo/GabrielLozano http://www.w3.org/2001/vcard-rdf/3.0#FN “Gabriel Lozano” Entonces, si se realiza la búsqueda por los Staments con “http://algo/GabrielLozano” como Subject y http://www.w3.org/2001/vcard-rdf/3.0#N como Predicate, se obtendrá como resultado el primer Statement de los introducidos. Además, la aplicación permitirá hacer búsquedas anidadas. Por ejemplo, supongamos que tenemos los siguientes Statements (no validos, pero simplificados para mejorar su visualización): X Y A B X Y A B X Y A B FN FN FN FN G G G G F F F F Gabriel Lozano Rene Bareño. Leonardo Lozano. Marcela Lozano. Gabriel Rene Leonardo Marcela Lozano Bareño Lozano Lozano Con X, Y, A y B como URI de los Subjects, FN, G y F ( Full Name, Given y Family) URI de los Predicates y lo demás como los valores literales de los Predicates. Ahora, supongamos que queremos saber los nombres de las personas que pertenezcan a la Familia Lozano. Para esto necesitaremos una búsqueda anidada. Primero debemos seleccionar las personas de la Familia Lozano. Una consulta de estas se puede ver de la siguiente forma: ?x FN Lozano Con esto obtenemos todas los URI de las personas que pertenecen a la familia Lozano. Ahora, sobre estos obtenemos sus nombres. Esta consulta se puede ver de la siguiente forma: ?x G ?y De esta forma obtendríamos los nombres de todas las personas que pertenezcan a la familia Lozano. Toda la consulta se puede ver de la siguiente forma: ?x FN Lozano && ?x G ?y Además, las búsquedas se pueden filtrar sobre los valores de las propiedades encontradas. Por ejemplo, si se desea buscar Personas que tengan una edad mayor a 24 años la consulta se puede ver de la siguiente forma: ?x edad ?y && ?y >= 24 Además, se pueden filtrar los resultados utilizando expresiones regulares. (PENDIENTE REVISAR ESTE PUNTO Y DEJAR CLARO QUE TIPOS DE FILTRADO SE PUEDEN LLEVAR A CABO. ) Grafos representantes de modelos Seria bueno poder representar en grafos el RDF, y ver su representación al menos en XML. Para los grafos los URIRefs se representan como óvalos y los literales como cuadrados. En los grafos se deben representar los blank nodes. Los grafos se pueden mostrar con relaciones directas o no directas de acuerdo a las jerarquias especificadas con lenguajes como RDFSchema u OWL. (ver Jena Ontology API the generis ontology type: OntResource) Representación de sentencias usando tripletas El programa debe permitir la representación de las sentencias de RDF utilizando el formato de tripletas, en donde cada sentencia es representada por sujeto, predicado y objeto, en ese orden. Cada tripleta corresponde a un arco en la representación con grafos. La representación de una tripleta requiere que cada URIRef sea descrita completamente encerrada en < y >.Se debe revisar si se implementa la notación abreviada que sustituye un XML qualified name (QName) sin < > como una abreviatura para una URIRef completa[1]. Se deben poder usar prefijos para QNames conocidos[2]. Representación de modelos en RDF/XML El programa debe poder crear modelos RDF y verlos representados según la sintaxis RDF/XML. Tomar en cuenta el uso de XML Entibies como mecanismo de abreviación. En la sintaxis de RDF/XML se deben tomar en cuenta el uso de containers como baq, seq y alt. Creación de shortcuts ( PENDIENTE ) La herramienta permite al usuario crear shortcuts para namespaces comunes, que se puedan utilizar en todas las tareas de la herramienta, serian como un tipo de constantes. Creación y edición de vocabularios (modelos con rdfschema y owl) La aplicación debe permitir la creación de vocabularios. A su vez, debe permitir la edición de estos y la navegación para su posterior uso. Se debe permitir importar y exportar estos vocabularios. Normalmente un namespace común es definido para un conjunto de términos que constituyen un vocabulario. Se puede pensar en crear una pagina Web con la URL de la URIRef del vocabulario definido para describir este vocabulario. Descripción de clases con RDFSchema La aplicación debe permitir la descripción de clases de objetos con XMLSchema. Utilización de otros recursos de RDF La aplicación debe permitir el uso de containers, del tipo bag, seq y alt. Tambien el uso de listas que permitan describir un conjunto finito de ítems en un grupo, a diferencia de los containers. El uso de RDF reification también debe ser permitido, el cual describe los propios statements. Entonces si uno realiza statements y se desea una funcionalidad adicional como la de dar información de los statements, sería apropiado que cuando se generan statements el usuario este plenamente identificado. Tambien se puede salvar la fecha en que el statement fue realizado. La aplicación puede tener un mecanismo para asociar URI´s a statements unicos de tal forma que pueda hacer aserciones sobre estos. Creación de vocabularios La aplicación debe por medio del uso de RDFSChema poder especificar vocabularios con las siguientes características: 1. Especificación de clases. 2. Especificación de jerarquías. 3. Descripción de propiedades. Esto a su vez consta de: a. Descripción del rango de una propiedad. b. Descripción del dominio de una propiedad. c. Especificación de jerarquías de propiedades. 4. fdfd Creación de plantillas También deben existir plantillas con modelos predeterminados que permitan llevar a cabo fácilmente esta tarea. Entre estas están: Creación de información sobre páginas Web (Se puede usar el vocabulario DC). Creación de noticias utilizando RSS. Ayuda de Procesos Edición de modelos Undo/redo, copy/paste, etc.. Glosario URIRef: Referencia a un URI. Vocabulario: Conjunto de URIRefs que tienen un propósito común. Referencias [1] RDFPrimer pagina 11. [2] RDFPrimer pagina 11 [3] RDF CONCEPTS