{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# rdf_demo\n", "\n", "This notebook demonstrates the rdf data generated by a HoboReader instance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create HoboReader instance and read in csv file" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from hoboreader import HoboReader\n", "h=HoboReader('sample_hobo_data.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create rdf data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "g=h.get_rdf(my_sensor_id=r'http://www.example.org/MyHobo',\n", " my_sensor_model='Hobo Pendant',\n", " my_sensor_manufacturer='Onset',\n", " my_feature_of_interest_id=r'http://www.example.org/MyLivingRoom')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Query graph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Number of triples" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26033" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(g)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What predicates are used?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['http://www.w3.org/ns/sosa/hasFeatureOfInterest', '2003'],\n", " ['http://www.w3.org/ns/sosa/isFeatureOfInterestOf', '2003'],\n", " ['http://www.w3.org/ns/sosa/hasResult', '1993'],\n", " ['http://www.w3.org/ns/sosa/observedProperty', '2003'],\n", " ['http://www.w3.org/2006/time#inXSDDateTimeStamp', '2000'],\n", " ['http://www.w3.org/1999/02/22-rdf-syntax-ns#type', '6020'],\n", " ['http://www.w3.org/ns/sosa/madeBySensor', '1993'],\n", " ['http://www.w3.org/ns/sosa/madeObservation', '1993'],\n", " ['http://qudt.org/schema/qudt/unit', '1993'],\n", " ['http://qudt.org/schema/qudt/numericValue', '1993'],\n", " ['http://www.w3.org/ns/sosa/resultTime', '2000'],\n", " ['http://www.w3.org/ns/sosa/hasSimpleResult', '10'],\n", " ['http://www.w3.org/ns/ssn/isPropertyOf', '9'],\n", " ['http://qudt.org/schema/qudt/isQuantityKindOf', '1'],\n", " ['http://www.w3.org/ns/ssn/hasProperty', '9'],\n", " ['http://www.w3.org/2000/01/rdf-schema#label', '9'],\n", " ['http://qudt.org/schema/qudt/hasQuantityKind', '1']]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qres = g.query(\n", "\"\"\"\n", " PREFIX owl: \n", " PREFIX rdfs: \n", "\n", " SELECT ?p (COUNT(?p) AS ?count)\n", " WHERE \n", " {\n", " ?s ?p ?o .\n", " }\n", " GROUP BY ?p\n", "\"\"\"\n", ")\n", "[[str(x) for x in row] for row in qres]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What classes are used?" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['http://qudt.org/schema/qudt/QuantityValue', '1993'],\n", " ['http://www.w3.org/2006/time#Instant', '2000'],\n", " ['http://www.w3.org/ns/sosa/Observation', '2003'],\n", " ['http://www.w3.org/ns/ssn/System', '1'],\n", " ['http://www.purl.org/berg/ontology/objects#PhysicalObject', '2'],\n", " ['http://www.w3.org/ns/sosa/ObservableProperty', '9'],\n", " ['http://www.w3.org/ns/ssn/Property', '9'],\n", " ['http://www.w3.org/ns/sosa/Sensor', '1'],\n", " ['http://www.w3.org/ns/sosa/FeatureOfInterest', '2']]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qres = g.query(\n", "\"\"\"\n", " PREFIX owl: \n", " PREFIX rdfs: \n", "\n", " SELECT ?o (COUNT(?o) AS ?count)\n", " WHERE \n", " {\n", " ?s a ?o .\n", " }\n", " GROUP BY ?o\n", "\"\"\"\n", ")\n", "[[str(x) for x in row] for row in qres]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get sensor serial number" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "rdflib.term.Literal('10469238')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q=\"\"\"\n", "SELECT ?result \n", "WHERE \n", " { \n", " ?sensor a sosa:Sensor . \n", " ?property rdfs:label \"Serial number\" .\n", " ?observation sosa:hasFeatureOfInterest ?sensor ;\n", " sosa:observedProperty ?property ;\n", " sosa:hasSimpleResult ?result .\n", " }\n", "\"\"\"\n", "result=list(g.query(q))\n", "sn=result[0][0]\n", "sn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get sensor uri" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "rdflib.term.URIRef('http://www.example.org/MyHobo')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q=\"\"\"\n", "SELECT * \n", "WHERE \n", " { \n", " ?s a sosa:Sensor . \n", " \n", " }\n", "\"\"\"\n", "sensor_uri=list(g.query(q))[0][0]\n", "sensor_uri" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get property labels" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(rdflib.term.Literal('Serial number')),\n", " (rdflib.term.Literal('Model')),\n", " (rdflib.term.Literal('Manufacturer')),\n", " (rdflib.term.Literal('Coupler Attached')),\n", " (rdflib.term.Literal('Stopped')),\n", " (rdflib.term.Literal('Coupler Detached')),\n", " (rdflib.term.Literal('Temp')),\n", " (rdflib.term.Literal('Host Connected')),\n", " (rdflib.term.Literal('End Of File'))]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q=\"\"\"\n", "SELECT ?label \n", "WHERE \n", " { \n", " ?property a ssn:Property . \n", " ?property rdfs:label ?label\n", " }\n", "\"\"\"\n", "property_labels=list(g.query(q))\n", "property_labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Get temperature data" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(datetime.datetime(2019, 10, 10, 11, 0, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))),\n", " 72.199,\n", " rdflib.term.URIRef('http://qudt.org/vocab/unit/DEG_F')),\n", " (datetime.datetime(2019, 10, 10, 11, 5, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))),\n", " 72.545,\n", " rdflib.term.URIRef('http://qudt.org/vocab/unit/DEG_F'))]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from datetime import datetime\n", "q=\"\"\"\n", "SELECT ?datetime ?value ?unit \n", "WHERE\n", " {\n", " ?property rdfs:label 'Temp' . \n", " ?observation sosa:observedProperty ?property ;\n", " sosa:hasResult ?result ;\n", " sosa:resultTime ?time .\n", " ?time time:inXSDDateTimeStamp ?datetime .\n", " ?result qudt:numericValue ?value ;\n", " qudt:unit ?unit .\n", " }\n", "ORDER BY ?datetime\n", "\"\"\"\n", "result=g.query(q)\n", "vars=[str(x) for x in result.vars]\n", "temp_data=[(datetime.fromisoformat(str(x[0])),x[1].value,x[2]) for x in result]\n", "temp_data[:2]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valueunit
datetime
2019-10-10 11:00:00+01:0072.199http://qudt.org/vocab/unit/DEG_F
2019-10-10 11:05:00+01:0072.545http://qudt.org/vocab/unit/DEG_F
2019-10-10 11:10:00+01:0072.372http://qudt.org/vocab/unit/DEG_F
2019-10-10 11:15:00+01:0072.545http://qudt.org/vocab/unit/DEG_F
2019-10-10 11:20:00+01:0072.545http://qudt.org/vocab/unit/DEG_F
\n", "
" ], "text/plain": [ " value unit\n", "datetime \n", "2019-10-10 11:00:00+01:00 72.199 http://qudt.org/vocab/unit/DEG_F\n", "2019-10-10 11:05:00+01:00 72.545 http://qudt.org/vocab/unit/DEG_F\n", "2019-10-10 11:10:00+01:00 72.372 http://qudt.org/vocab/unit/DEG_F\n", "2019-10-10 11:15:00+01:00 72.545 http://qudt.org/vocab/unit/DEG_F\n", "2019-10-10 11:20:00+01:00 72.545 http://qudt.org/vocab/unit/DEG_F" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "df=pd.DataFrame(columns=vars,data=temp_data)\n", "df=df.set_index('datetime')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "df['value'].plot()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }