LA WEB SEMÁNTICA. RDF PROPÓSITO Introducir el lenguaje RDF. Se trata de un lenguaje para construir descripciones del mundo (modelos RDF) basados en declaraciones sujeto-verbo-objeto. RDF no tiene sintaxis concreta. Se suele utilizar XML como sintaxis concreta de RDF. INTRODUCCIÓN El siguiente ejemplo muestra un documento RDF escrito en XML. El documento contiene un único elemento RDF con un conjunto de espacios de nombres y un conjunto de descripciones. Ejemplo de espacios de nombres: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.lsi.us.es/datos#" Ejemplo de descripción (sujeto, verbo, objeto): <rdf:Description rdf:about="http://www.lsi.us.es/datos#JoaquinVazquez"> <da_clases_en rdf:resource="http://www.lsi.us.es/datos#PL1"/> </rdf:Description> Documento RDF: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.lsi.us.es/datos#"> <rdf:Description rdf:about="http://www.lsi.us.es/datos#ManuelGarcia"> <posee_despacho rdf:datatype="http://www.w3.org/2001/XMLSchema#int">7 </posee_despacho> <posee_despacho rdf:datatype="http://www.w3.org/2001/XMLSchema#normalizedString"> H10</posee_despacho> <da_clases_en rdf:resource="http://www.lsi.us.es/datos#PL1"/> </rdf:Description> <rdf:Description rdf:about="http://www.lsi.us.es/datos#PL2"> <esta_adscrita_a rdf:resource="http://www.lsi.us.es/datos#LSI"/> </rdf:Description> <rdf:Description rdf:about="http://www.lsi.us.es/datos#JoaquinVazquez"> <posee_despacho rdf:datatype="http://www.w3.org/2001/XMLSchema#normalizedString"> I26</posee_despacho> <tomo_posesion rdf:datatype="http://www.w3.org/2001/XMLSchema#normalizedString"> LA WEB SEMÁNTICA. RDF 10/10/2000</tomo_posesion> <da_clases_en rdf:resource="http://www.lsi.us.es/datos#PL1"/> <da_clases_en rdf:resource="http://www.lsi.us.es/datos#PL2"/> </rdf:Description> <rdf:Description rdf:about="http://www.lsi.us.es/datos#PL1"> <esta_adscrita_a rdf:resource="http://www.lsi.us.es/datos#LSI"/> </rdf:Description> </rdf:RDF> PROGRAMANDO DOCUMENTOS RDF CON JENA Jena es un API Java que permite programar documentos RDF. Entre las operaciones del API destacan: Declaración de modelo RDF: Model modelo = ModelFactory.createDefaultModel(); Establecimiento de la dirección base (dirección lógica) del documento RDF: String base = "http://www.lsi.us.es/datos#"; modelo.setNsPrefix("",base); Adición de una declaración a un modelo: Resource sujeto = ResourceFactory.createResource(prefijo+"PL1"); Property verbo = ResourceFactory.createProperty(prefijo+"esta_adscrita_a"); RDFNode objeto = ResourceFactory.createResource(prefijo+"LSI"); Statement stm = ResourceFactory.createStatement(sujeto, verbo, objeto); modelo.add(stm); Acceso a tipos de datos XML Schema: TypeMapper tm = TypeMapper.getInstance(); Ejemplo de declaración donde el objeto es de tipo dato: sujeto = ResourceFactory.createResource(prefijo+"JoaquinVazquez"); verbo = ResourceFactory.createProperty(prefijo+"tomo_posesion"); objeto = ResourceFactory.createTypedLiteral("10/10/2000", tm.getSafeTypeByName("http://www.w3.org/2001/XMLSchema#normalizedStrin g")); stm = ResourceFactory.createStatement(sujeto, verbo, objeto); modelo.add(stm); LA WEB SEMÁNTICA. RDF Escritura de modelo en pantalla: modelo.write(System.out, "RDF/XML"); Escritura de modelo en fichero de texto: try{ OutputStream f = new FileOutputStream("model.rdf"); modelo.write(f); f.close(); }catch(FileNotFoundException e){} catch(IOException e){} TRABAJO PROPUESTO Consulte la documentación suministrada por Jena en relación a los modelos RDF. Programe con Jena un modelo RDF conteniendo las siguientes declaraciones: PL1 esta_adscrita_a LSI, PL2 esta_adscrita_a LSI, JoaquínVazquez da_clases_en PL2, JoaquínVazquez da_clases_en PL1, ManuelGarcía da_clases_en PL1, JoaquínVazquez tomo_posesion 10/10/2000, JoaquínVazquez posee_despacho I26, ManuelGarcía posee_despacho H10, ManuelGarcía posee_despacho 7. Almacene dicho modelo en un fichero de texto con nombre modelo.rdf. Programe la lectura del fichero modelo.rdf y muestre por pantalla el modelo RDF leído.