- From: Wetz Peter <peter.wetz@tuwien.ac.at>
- Date: Thu, 27 Nov 2014 12:35:46 +0000
- To: Daniele Dell'Aglio <daniele.dellaglio@polimi.it>, "Gray, Alasdair" <A.J.G.Gray@hw.ac.uk>
- CC: Emanuele Della Valle <emanuele.dellavalle@polimi.it>, "public-rsp@w3.org" <public-rsp@w3.org>
- Message-ID: <28E2265717E47C4682D77D020A9A7CF231006C99@mbx1.intern.tuwien.ac.at>
regarding the “windows of windows” question: Is there an actual use case for that? Because why not just define the window you want to end up with in the first place? Please note: I added some comments to Emanuele’s query. However, I can’t attend today’s call. Still, I’d be happy if you could address my comments. Best, Peter Von: dani.dellaglio@gmail.com [mailto:dani.dellaglio@gmail.com] Im Auftrag von Daniele Dell'Aglio Gesendet: Donnerstag, 27. November 2014 13:15 An: Gray, Alasdair Cc: Emanuele Della Valle; public-rsp@w3.org Betreff: Re: example of RSP-QL query to kick-off the RSP-QL syntax discussion Hi Alasdair, Interesting pont. I don't have an answer to this specific question, but please consider it is possible to obtain the same result with two separate queries: - one that creates a DStream :s1d on :s1 (to create a delay) - one with a window of size 1h and slide 5 mins on :s1d Talking about window, I have another question: if windows do not remove timestamps from the data items, it would be possible to declare windows over other windows... Is it something that our language would allow? Regards, Daniele 2014-11-27 12:04 GMT+00:00 Gray, Alasdair <A.J.G.Gray@hw.ac.uk<mailto:A.J.G.Gray@hw.ac.uk>>: Hi Is it possible to have windows that are entirely in the past? For example to compare with yesterday’s values we would need something like FROM NAMED STREAM s:1 [FROM NOW - 25 HOURS TO NOW - 24 HOURS STEP PT5M] AS :yesterdayOneHourWindow This is borrowing syntax from SPARQLStream. Alasdair On 14 Nov 2014, at 20:18, Emanuele Della Valle <emanuele.dellavalle@polimi.it<mailto:emanuele.dellavalle@polimi.it>> wrote: Hi all, as promised during today phone-call, I prepared an example of RSP-QL query to kick-off the RSP-QL syntax discussion. Please find it here: https://www.w3.org/community/rsp/wiki/Example_of_RSP-QL_query I’m also putting it hereafter just in case you want to directly comment it. Cheers, Emanuele ——8—— This query continuously look for bars where people are falling in love like Paolo and Francesca in Dante's Divine Comedy<http://en.wikipedia.org/wiki/Francesca_da_Rimini#In_Inferno> because of a book by Gallehault<http://en.wikipedia.org/wiki/Galehaut>. PREFIX e: <http://somevocabulary.org/> PREFIX s: <http://someinvasivesensornetwork.org/streams#<http://someinvasivesensornetwork.org/streams>> PREFIX g: <http://somesocialnetwork.org/graphs#<http://somesocialnetwork.org/graphs>> PREFIX : <http://acrasycompany.org/rsp> REGISTER STREAM :GallehaultWasTheBar UNDER ENTAILMENT REGIME <http://www.w3.org/ns/entailment/RIF> AS FROM STREAM s:1 FROM NAMED STREAM s:1 [RANGE PT1H STEP PT5M] AS :longWindow FROM NAMED STREAM s:1 [RANGE PT10M STEP PT5M] AS :shortWindow FROM NAMED GRAPH g:SocialGraph FROM GRAPH g:POIs CONSTRUCT ISTREAM { ?poi rdf:type :Gallehault ; :count ?howmanycouples ; :for (?somebody ?someoneelse) } WHERE { ?poi rdf:type e:bar . STREAM s:1 { { ?somebody e:enters ?poi } SEQ { ?someoneelse ex:enters ?poi } WITHIN PT4H } WINDOW :longWindow { { ?somebody e:isCloseTo ?someoneelse MINUS { ?somebody e:sitsWith ?yetanotherone . FILTER (?yetanotherone != ?someoneelse) } } WITH DURATION ?longtime FILTER (?longtime>"PT30M"^^xsd:duration) } WINDOW :shortWindow { { ?somebody e:exits ?bar} AT ?t1 { ?someoneelse e:exits ?bar } AT ?t2 FILTER (abs(?t2-?t1)<"PT1M"^^xsd:duration ) } GRAPH g:1 { FILTER NOT EXIST { ?somebody e:knows ?someoneelse } } FILTER (?somebody != ?someoneelse) } AGGREGATE { GROUP BY ?bar COUNT(?somebody) AS ?howmanycouples } The query checks : * over the default graph containing the points of interest (POIs) of http://somesocialnetwork.org/ that the POI is a bar. * over the entire stream from http://someinvasivesensornetwork.org<http://someinvasivesensornetwork.org/>, that pairs of people entered in the poi in different moments within 4 hours. * over the same stream, with a long lasting time window of 1 hour, that pairs of those people have been staying close by for at least 30 minutes. Note: that this may require some resoning being the property isCloseBy symmetric. * over the same stream but with a short time window of 10 minutes, that the same pairs exit together. As output, for each bar, it streams out an RDF graph with the list of pairs and the total number of pairs that felt in love at each query evaluation. Note that this example query covers features of C-SPARQL, CQELS, SPARQL-Stream, EP-SPARQL as well as new features missing in all RSP languages: * From C-SPARQL it takes the REGISTER clause, the FROM STREAM clause as dataset clause, the AT clause to access the timestamp (in C-SPARQL, AT is implemented with the timestamp() function) and the aggregates (which are computed in parallel without shrinking the result set, but extending it). * From CQELS it takes the idea of the STREAM keyword in the WHERE clause. * From SPARQL-Stream it takes the ISTREAM clasue that ask the RSP engine to use the R2S operator. * From EP-SPARQL, it takes the SEQ and the WITH DURATION clauses (in EP-SPARQL, WITHIN DURATION is implemented with the getDuration() function). The new features are: * the usage of an IRI tuo identify the query (and its stream of results) * the optional UNDER ENTAILMENT REGIME clause * the FROM NAMED STREAM <<stream iri>> <<window>> AS << window name>> clause in the dataset declaration * the WINDOW keyword in the WHERE clause -- Emanuele Della Valle DEIB - Politecnico di Milano w. http://emanueledellavalle.org<http://emanueledellavalle.org/> Alasdair J G Gray Lecturer in Computer Science, Heriot-Watt University, UK. Email: A.J.G.Gray@hw.ac.uk<mailto:A.J.G.Gray@hw.ac.uk> Web: http://www.alasdairjggray.co.uk ORCID: http://orcid.org/0000-0002-5711-4872 Telephone: +44 131 451 3429 Twitter: @gray_alasdair We invite research leaders and ambitious early career researchers to join us in leading and driving research in key inter-disciplinary themes. Please see www.hw.ac.uk/researchleaders<http://www.hw.ac.uk/researchleaders> for further information and how to apply. Heriot-Watt University is a Scottish charity registered under charity number SC000278.
Received on Thursday, 27 November 2014 12:36:17 UTC