Formato breve Ingreso de Resources: El usuario ingresa un Resource sobre el cual desea realizar Statements ingresando el URI que lo identifica. Igualmente, como resource se puede ingresar un Blank Node (PENDIENTE EL INGRESO DE UN ID PARA EL BLANK NODE). La aplicación luego enseña al usuario todos los Statements ingresados. Ingreso de Statements: El usuario ingresa Statements sobre un modelo determinado. Primero el usuario ingresa el Subject, indicando el URI que lo identifica. Segundo, el usuario ingresa el Predicate que es la propiedad acerca del Subject que el usuario quiere ingresar. Luego el usuario ingresa el valor de la propiedad, el cual puede ser un literal u otro Resource. Si es un Resource, el usuario ingresa el URI que lo identifica o puede indicar que es un Blank Node. Si el valor es un literal, el usuario simplemente proporciona el valor de este. Estos literales deben soportar ciertos typed literals (REVISAR JENA SOBRE LOS TIPOS SOPORTADOS). Representación de Statements: El usuario podrá observar los Statements ingresados por el previamente en la aplicación. Estos Statements estarán en formato RDF/XML (revisar rdf:id y xml:base pág 40 ) y N-Tiples( pág 11 y revisar blank node identifiers en la página 19). CRUD QNames: CRUD son las siglas para representar el caso de uso generico de Crear (CReate), Actualizar (Update) y borrar (Delete) en este caso QNames. Estos QNames se deben guardar permanentemente y no se deben borrar al cerrar la aplicación. Utilización de atajos (shortcuts): El usuario al momento de ingresar un URI en cualquier parte de la aplicación ingresa, en lugar de poner todo el URI ingresa un QName, junto con dos puntos y el nombre local de URI que desea ingresar. Además el usuario puede utilizar uno de los QNames predeterminados en la aplicación (pág 12). CRUD Vocabularios: El usuario de la aplicación podrá crear, utilizar, actualizar y borrar términos utilizados en vocabularios comunes en la aplicación. Por ejemplo, podrá utilizar términos de Dublín Core Metadata Attribute Set como dc:creador al momento de ingresar Statements. Creación de Containers: El usuario estará en capacidad de ingresar RDF:Containers como los definidos en las especificaciones [1][2][3]. Estos containers son de tipo Bag, Seq y Alt. (Revisar pág 44). Creación de Collections: El usuario estará en capacidad de ingresar RDF:Collections de una manera sencilla y utilizando la semántica de estas expresada en las especificaciones (Revisar pág 51). Ingreso de Reification: (revisar la traducción) El usuario podrá ingresar Statements que contengan información acerca de otro Statement como información de cuando, por quién, entre otras de una manera sencilla utilizando rdf:reification (pág 54). Creación de ontologias con RDFS: El usuario podrá crear ontologías utilizando el vocabulario que define RDFS. Este vocabulario le permite definir clases, jerarquías de clases, propiedades, dominios y rangos entre otras. Creación de clases con rdfs:Class: El usuario podrá ingresar clases a una ontología utilizando el término rdfs:Class definido por RDFS. (p 65). Creación de jerarquías de clases: El usuario podrá ingresar jerarquías de clases a una ontología utilizando rdfs:SubClassOf (p. 66). Creación de propiedades: El usuario podrá indicar que cierto recurso es una propiedad en una ontología utilizando rdf:Property. (p 70). Indicación de Rangos: El Usuario podrá indicar la clase o clases que constituyen el rango de individuos una propiedad. (p 70) Igualmente como rango se podrá indicar un typed literal como xsd:integer. Indicación de Dominio: El Usuario podrá indicar la clase o clases que constituyen el dominio de individuos una propiedad. (p 72) Creación de Jerarquías de Propiedades: El Usuario podrá ingresar jerarquías de propiedades en una ontología utilizando rdfs:SubPropertyOf. Creación de ontologias con OWL lite: El usuario podrá crear ontologías utilizando los vocabularios que define OWL: lite, DL y Full. Este vocabulario le permite definir clases, jerarquías de clases, propiedades, dominios y rangos como RDFS. Además permite definir equivalencias, cardinalidad, etc. Creación de Clases con owl:Class: El Usuario podrá crear clases en una ontología que utiliza OWL como vocabulario utilizando owl:Class. Uso de características de RDFS: El Usuario podrá ingresar en ontologías creadas usando el vocabulario OWL características de RDFS como creación de jerarquías de clases, creación de propiedades, descripción de jerarquías de propiedades, indicación de dominios para una propiedad e indicación de rangos para una propiedad. Creación de Individuos: El Usuario podrá indicar que un recurso es un individuo utilizando owl:Individual ( p 9 owl). Ingreso de equivalencia de clases: El Usuario podrá ingresar la equivalencia entre 2 clases utilizando owl:equivalentClass para indicar que 2 clases son equivalentes. (p 10 owl) Ingreso de equivalencia de propiedades: El Usuario podrá ingresar la equivalencia entre 2 propiedades utilizando owl:equivalentProperty para indicar que 2 propiedades son equivalentes. (p 10 owl) Ingreso de equivalencia de individuos: El Usuario podrá ingresar la equivalencia entre 2 individuos utilizando owl:sameas para indicar que 2 individuos son equivalentes. (p 10 owl) Ingreso de diferencia entre 2 individuos: El usuario podrá indicar la diferencia entre 2 individuos utilizando owl:differentFrom (p 10). Ingreso de diferencia entre múltiples individuos: El usuario podrá indicar la diferencia entre 2 o más individuos utilizando owl:allDifferent (p 10). Ingreso del inverso de una propiedad: El usuario podrá que cierta propiedad constituye la propiedad inversa de otra utilizando owl:inverseOf. (pág 11). Indicación de la transitividad de una propiedad: El usuario podrá indicar la transitividad de una propiedad utilizando owl:TransitiveProperty (p 11). Indicación de la simetría de una propiedad: El usuario podrá indicar la simetría de una propiedad utilizando owl:SymmetricProp (p 11). Indicación de la funcionalidad de una propiedad: El usuario podrá indicar la funcionalidad de una propiedad (que indica que esta propiedad solo puede tomar un valor) utilizando owl:FunctionalProperty (p 11). Indicación de la funcionalidad inversa de una propiedad: El usuario podrá indicar la funcionalidad inversa de una propiedad utilizando owl:InverseFunctionalProperty. Indicación de un rango local para una clase con owl:allValuesFrom. Indicación de una restricción local para una clase con owl:someValuesFrom. Indicación de cardinalidad mínima con owl lite: El Usuario podrá indicar la cardinalidad mínima para una propiedad con owl lite donde solo es permitida una cardinalidad de 0 o 1. (p 13). Indicación de máxima cardinalidad para una propiedad. Indicación de cardinalidad de una propiedad. Creación de cosas como intersección de clases con owl:IntersectionOf. Creación de ontologias con owl dl. Creación de ontologías con owl full. Descripción de clases por enumeración de individuos: El usuario podrá describir una clase enumerando los individuos que la componen utilizando owl:OneOf. Indicación del valor que debe tomar una propiedad con owl:hasValue. Indicación de disjunción entre clases. Uso de combinaciones booleanas como union, complemento e intersección. Crear un Modelo: El usuario de la aplicación podrá crear un modelo u ontología en la herramienta. El usuario indica su deseo de crear un nuevo modelo. La aplicación creara un nuevo modelo y lo cargara en memoria y además le asignara un nombre transitorio hasta que el usuario desee guardar el modelo. A partir de ese momento el usuario comienza a editar el modelo. Guardar un Modelo: El usuario ha terminado de editar el modelo e indica a la aplicación que desea guardar el modelo. La aplicación le pide los datos del medio en el que el usuario desea guardar el modelo junto con el formato. El usuario ingresa los datos solicitados por la aplicación. Luego la aplicación guarda el modelo donde el usuario le indico. Guardar un Modelo en un repositorio diferente: El usuario de la aplicación indica que quiere guardar el modelo en una ubicación diferente a la actual. La aplicación le solicita la información al usuario sobre la ubicación del nuevo repositorio. El usuario ingresa la información en donde desea guardar el modelo. La aplicación guarda el modelo según lo indicado por el usuario de la aplicación. Cargar un Modelo: El usuario indica su deseo de trabajar en otro modelo diferente al que esta trabajando. La aplicación le pide los datos para obtener el modelo que el usuario desea trabajar. El usuario ingresa los datos de ubicación del modelo. La aplicación carga el modelo y queda lista para empezar a trabajar sobre este. Navegación de Modelos: El usuario selecciona un Resource de los que ha ingresado de una lista que le muestra la aplicación. La aplicación le devuelve una lista de todas las Properties que ha ingresado sobre el Resource seleccionado. El usuario escoge cierta Propertie y la aplicación le devolverá el valor de esta. Impresión de modelos: El usuario puede imprimir el modelo que este visualizando en la aplicación. Búsqueda en modelos: el usuario ingresa en la aplicación cualquier combinación de un Statement. Por ejemplo, para buscar las Properties de un Resource determinado, el usuario solamente ingresa el Resource y deja los demás espacios en blanco. Si quiere buscar todos los Resource con un valor de una Propertie determinada, el usuario ingresa el valor del Resource y el de la Propertie, dejando el valor del Object en blanco. La aplicación le devolverá todos los Statements que contengan los valores determinados por el usuario. Además de especificarle valores de los Statements, el usuario ingresa valores para filtrar los Statements sobre los valores de los Objects de los Statements. Luego, sobre el resultado obtenido, realiza otra búsqueda para personalizar más aún el resultado como realizo la primer búsqueda. Utilización de plantillas: El usuario le indica a la aplicación que desea utilizar una plantilla predeterminada para crear un modelo utilizando un vocabulario específico. La aplicación determina cual es la plantilla que el usuario desea utilizar y se la devuelve. El usuario llena todos los campos de la plantilla y la envía a la aplicación para ser procesada. La aplicación valida y procesa la plantilla para generar el modelo asociado con los datos de la plantilla.