From 7b431ec5f9e0828a2f8e55940734dfdb4f009889 Mon Sep 17 00:00:00 2001 From: Ismael Ayat Ortiz Date: Fri, 13 Jan 2017 20:49:24 +0100 Subject: [PATCH] added assignments for Ismael Ayat Ortiz --- Assignment1/DatasetDescriptions.csv | 3 +- Assignment2/Ismmael.jpg | Bin 0 -> 49310 bytes Assignment2/Ismmael.rdf | 43 +++++++ Assignment2/Ismmael.ttl | 20 ++++ Assignment3/Ismmael-w140334/Task06.java | 87 ++++++++++++++ Assignment3/Ismmael-w140334/Task07.java | 84 ++++++++++++++ Assignment6/Ismmael-w140334/queries.sparql | 126 +++++++++++++++++++++ 7 files changed, 362 insertions(+), 1 deletion(-) create mode 100644 Assignment2/Ismmael.jpg create mode 100644 Assignment2/Ismmael.rdf create mode 100644 Assignment2/Ismmael.ttl create mode 100644 Assignment3/Ismmael-w140334/Task06.java create mode 100644 Assignment3/Ismmael-w140334/Task07.java create mode 100644 Assignment6/Ismmael-w140334/queries.sparql diff --git a/Assignment1/DatasetDescriptions.csv b/Assignment1/DatasetDescriptions.csv index 233580cd..98d29c3c 100644 --- a/Assignment1/DatasetDescriptions.csv +++ b/Assignment1/DatasetDescriptions.csv @@ -69,4 +69,5 @@ Dalei Li, Beijing Hourly PM2.5 data, http://www.stateair.net/web/historical/1/1. Alberto Martín de Pablo,taxi Zaragoza,https://datahub.io/dataset/taxi-zaragoza,Información relativa al Servicio de Taxis en la ciudad de Zaragoza Alfonso Mateos Pérez-Iñigo, casas cultura ciudad Bogotá https://www.datos.gov.co/en/Cultura/Casas-de-la-Cultura-Ciudad-de-Bogot-/g72h-f9ru/data Santaigo Cervantes Reus, Puntos de interes de Zaragoza, http://www.zaragoza.es/ciudad/risp/detalle_Risp?id=23 -Pablo Sayans Cobos, Llegadas y salidas de aviones a Singapore, https://data.gov.sg/dataset/aircraft-arrivals-departures, La medición empieza en el año 2005 \ No newline at end of file +Pablo Sayans Cobos, Llegadas y salidas de aviones a Singapore, https://data.gov.sg/dataset/aircraft-arrivals-departures, La medición empieza en el año 2005 +Ismael Ayat Ortiz, Santander bus lines information, http://datos.santander.es/api/rest/datasets/lineas_bus.rdf?items=33, dataset with a lot of information about the different bus lines in Santander \ No newline at end of file diff --git a/Assignment2/Ismmael.jpg b/Assignment2/Ismmael.jpg new file mode 100644 index 0000000000000000000000000000000000000000..794a3964d1035e620a6dae07f04825586a0d3ff5 GIT binary patch literal 49310 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 literal 0 HcmV?d00001 diff --git a/Assignment2/Ismmael.rdf b/Assignment2/Ismmael.rdf new file mode 100644 index 00000000..70b233cf --- /dev/null +++ b/Assignment2/Ismmael.rdf @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + Pedro + + + + + + + + + + + + 29 + 2010-06-12T 12:00:12 + + + diff --git a/Assignment2/Ismmael.ttl b/Assignment2/Ismmael.ttl new file mode 100644 index 00000000..b28b292a --- /dev/null +++ b/Assignment2/Ismmael.ttl @@ -0,0 +1,20 @@ +@base . +@prefix class: . +@prefix sensor: . +@prefix computer: . +@prefix user: . +@prefix measurement: . + +:Class01 class:includes:Sensor029; + class:includes:Computer101. + +:User10A user:hasName "Pedro"; + +:Sensor029 sensor:hasMeasurement:Measurement8401. + +:Computer101 computer:hasOwner:User10A. + +:Measurement8401 measurement:hasTemperature "29"; + measurement:atTime "2010-06-12T 12:00:12". + + diff --git a/Assignment3/Ismmael-w140334/Task06.java b/Assignment3/Ismmael-w140334/Task06.java new file mode 100644 index 00000000..2ba179cc --- /dev/null +++ b/Assignment3/Ismmael-w140334/Task06.java @@ -0,0 +1,87 @@ +package ontologyapi; + +import java.io.InputStream; + +import org.apache.jena.ontology.Individual; +import org.apache.jena.ontology.OntClass; +import org.apache.jena.ontology.OntModel; +import org.apache.jena.ontology.OntModelSpec; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.rdf.model.Property; +import org.apache.jena.util.FileManager; +import org.apache.jena.vocabulary.VCARD; + +/** + * Task 06: Modifying ontologies (RDFs) + * @author Ismael Ayat Ortiz - w140334 - Ismmael + * + * + */ +public class Task06 +{ + public static String ns = "http://somewhere#"; + public static String foafNS = "http://xmlns.com/foaf/0.1/"; + public static String foafEmailURI = foafNS+"email"; + public static String foafKnowsURI = foafNS+"knows"; + public static String stringTypeURI = "http://www.w3.org/2001/XMLSchema#string"; + + public static void main(String args[]) + { + String filename = "example5.rdf"; + + // Create an empty model + OntModel model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM); + + // Use the FileManager to find the input file + InputStream in = FileManager.get().open(filename); + + if (in == null) + throw new IllegalArgumentException("File: "+filename+" not found"); + + // Read the RDF/XML file + model.read(in, null); + + // Create a new class named "Researcher" + OntClass researcher = model.createClass(ns+"Researcher"); + + // ** TASK 6.1: Create a new class named "University" ** + + OntClass university = model.createClass(ns + "University"); + + // ** TASK 6.2: Add "Researcher" as a subclass of "Person" ** + + OntClass person = model.createClass(ns + "Person"); + person.addSubClass(researcher); + + // ** TASK 6.3: Create a new property named "worksIn" ** + + Property worksIn = model.createProperty(ns + "worksIn"); + + // ** TASK 6.4: Create a new individual of Researcher named "Jane Smith" ** + + Individual jane_Smith = researcher.createIndividual(ns + "Jane Smith"); + + // ** TASK 6.5: Add to the individual JaneSmith the fullName, given and family names ** + + // Adding Full Name + jane_Smith.addProperty(VCARD.FN,"Jane Smith"); + + + // Adding Family Name + jane_Smith.addProperty(VCARD.Family,"Smith"); + + // Adding Given Name + jane_Smith.addProperty(VCARD.Given,"Jane"); + + // ** TASK 6.6: Add UPM as the university where John Smith works ** + + System.out.println("Task 6.6"); + + Individual upm = university.createIndividual(ns+"UPM"); + Individual john_Smith = model.getIndividual(ns+"John Smith"); + + john_Smith.addProperty(worksIn,upm); + + model.write(System.out, "RDF/XML-ABBREV"); + } +} diff --git a/Assignment3/Ismmael-w140334/Task07.java b/Assignment3/Ismmael-w140334/Task07.java new file mode 100644 index 00000000..d97e73b0 --- /dev/null +++ b/Assignment3/Ismmael-w140334/Task07.java @@ -0,0 +1,84 @@ +package ontologyapi; + +import java.io.InputStream; + +import org.apache.jena.ontology.Individual; +import org.apache.jena.ontology.OntClass; +import org.apache.jena.ontology.OntModel; +import org.apache.jena.ontology.OntModelSpec; +import org.apache.jena.ontology.OntResource; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.util.FileManager; +import org.apache.jena.util.iterator.ExtendedIterator; + +/** + * Task 07: Querying ontologies (RDFs) + * @author Ismael Ayat Ortiz - w140334 - Ismmael + * + */ +public class Task07 +{ + public static String ns = "http://somewhere#"; + + public static void main(String args[]) + { + String filename = "example6.rdf"; + + // Create an empty model + OntModel model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM); + + // Use the FileManager to find the input file + InputStream in = FileManager.get().open(filename); + + if (in == null) + throw new IllegalArgumentException("File: "+filename+" not found"); + + // Read the RDF/XML file + model.read(in, null); + + + // ** TASK 7.1: List all individuals of "Person" ** + System.out.println("Task 7.1"); + System.out.println(""); + + Resource x = model.getResource(ns+"Person"); + ExtendedIterator iterador = model.listIndividuals(x); + int size = 1; + while(iterador.hasNext()) + { + System.out.println("Person " + size + " : " + iterador.next().getURI()); + size++; + } + + System.out.println(""); + + // ** TASK 7.2: List all subclasses of "Person" ** + + System.out.println("Task 7.2"); + System.out.println(""); + + ExtendedIterator iterador2 = x.listSubClasses(); + int size2 = 1; + while(iterador2.hasNext()){ + System.out.println("Subclasses: "+ size2 + " : " + iterador2.next().getURI()); + size2++; + } + System.out.println(""); + + // ** TASK 7.3: Make the necessary changes to get as well indirect instances and subclasses. TIP: you need some inference... ** + + System.out.println("Task 7.3"); + System.out.println(""); + System.out.println("Individuals:") + OntClass personas = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, model).getOntClass(ns+"Person"); + for (ExtendedIterator i = (ExtendedIterator) personas.listInstances(); i.hasNext()){ + System.out.println(i.next().getURI()); + } + + System.out.println(""); + System.out.println("Subclasses:"); + for (ExtendedIterator i = persons.listSubClasses(); i.hasNext()){ + System.out.println(i.next().getURI()); + }; + } +} diff --git a/Assignment6/Ismmael-w140334/queries.sparql b/Assignment6/Ismmael-w140334/queries.sparql new file mode 100644 index 00000000..34ee8071 --- /dev/null +++ b/Assignment6/Ismmael-w140334/queries.sparql @@ -0,0 +1,126 @@ +// Ismael Ayat Ortiz - w140334 - Ismmael + + +///// 1.) How many accidents were there in Madrid in 2013? + +PREFIX mv: +PREFIX qb: +SELECT (SUM(?x) AS ?numberOfAccidents) WHERE { + ?obs a qb:Observation ; + mv:numberOfAccidents ?x . +} + +// Resultado: 11749 + + +///// 2.) Give me the number of accidens in Usera for each type of accident + +PREFIX mv: +PREFIX qb: +SELECT ?accidentType xsd:integer(?numberAccidents) AS ?number WHERE { + ?obs a qb:Observation ; + mv:relatedDistrict "USERA"; + mv:hasAccidentType ?accidentType ; + mv:numberOfAccidents ?numberAccidents +} + +// Resultado: + +// http://example.org/myVocabulary#DoubleCollision 204 +// http://example.org/myVocabulary#MultipleCollision 28 +// http://example.org/myVocabulary#CollisionWithObject 70 +// http://example.org/myVocabulary#RunOver 59 +// http://example.org/myVocabulary#Overturn 2 +// http://example.org/myVocabulary#MotorcycleFall 13 +// http://example.org/myVocabulary#MopedFall 5 +// http://example.org/myVocabulary#BicycleFall 1 +// http://example.org/myVocabulary#BusPassengerFall 3 +// http://example.org/myVocabulary#OtherCause 2 + + +///// 3.) Give me the number of multiple collisions for each district + +PREFIX mv: +PREFIX qb: +SELECT ?x AS ?district xsd:integer(?y) AS ?collisionsNumber WHERE{ + ?obs a qb:Observation ; + mv:relatedDistrict ?x ; + mv:hasAccidentType mv:MultipleCollision ; + mv:numberOfAccidents ?y . +} + +// Resultado: + +// BARAJAS 4 +// VICALVARO 4 +// VILLA DE VALLECAS 4 +// VILLAVERDE 11 +// MORATALAZ 14 +// SAN BLAS 16 +// HORTALEZA 18 +// USERA 28 +// LATINA 29 +// CHAMBERI 30 +// CENTRO 33 +// TETUAN 35 +// PUENTE DE VALLECAS 37 +// CARABANCHEL 40 +// FUENCARRAL-EL PARDO 42 +// ARGANZUELA 50 +// CIUDAD LINEAL 52 +// RETIRO 59 +// MONCLOA-ARAVACA 65 +// SALAMANCA 70 +// CHAMARTIN 82 + + +///// 4.) Which is the district were the number of bicycle falls was higher in 2013? + +PREFIX mv: +PREFIX qb: +SELECT ?x AS ?district xsd:integer(MAX(?y)) AS ?numberAccidents WHERE { + ?obs a qb:Observation ; + mv:relatedDistrict ?x ; + mv:numberOfAccidents ?y; + mv:hasAccidentType mv:BicycleFall . +} +ORDER BY DESC(?y) + +// En este caso se elige el primer elemento de la lista (puesto que la última línea de la query ordena los elementos en orden descendente. +// En este caso hay tres distritos que son FUENCARRAL, MONCLOA y SAN BLAS con 13 cada uno. + + +///// 5.) Give me the districts with more than 500 accidents in 2013 + +PREFIX mv: +PREFIX qb: +SELECT ?x AS ?district ?y AS ?accidentNumber +WHERE { +{ +SELECT ?x SUM(xsd:integer(?z)) AS ?y +WHERE +{ + ?obs a qb:Observation ; + mv:relatedDistrict ?x ; + mv:numberOfAccidents ?z . +} +} +} +HAVING(?y > 500) + +//Resultado: + +// TETUAN 594 +// CENTRO 926 +// CHAMBERI 715 +// PUENTE DE VALLECAS 651 +// RETIRO 593 +// SAN BLAS 518 +// ARGANZUELA 631 +// CHAMARTIN 844 +// FUENCARRAL-EL PARDO 682 +// SALAMANCA 982 +// CARABANCHEL 709 +// CIUDAD LINEAL 750 +// LATINA 530 +// MONCLOA-ARAVACA 702 \ No newline at end of file