The first problem was to intregrate the source data. In Odysseus this is done with a source definition.
We provide two solutions. The first one reads its input by providing a Google Protobuf server:
#PARSER PQL #QUERY gchSource := ACCESS({ SOURCE = 'GrandChallengeDataPoint', WRAPPER='GenericPush', TRANSPORT='ProtobufServer', DataHandler = 'Tuple', OPTIONS=[ ['type','debs.challenge.msg.CDataPoint'], ['port','9999'], ['BaseTimeUnit','NANOSECONDS']], SCHEMA=[ ['ts','StartTimeStamp'], ['index','long'], ['mf01','integer'], ['mf02','integer'], ['mf03','integer'], ['pc13','integer'], ['pc14','integer'], ['pc15','integer'], ['pc25','long'], ['pc26','long'], ['pc27','long'], ['res','long'], ['bm05','Boolean'], ['bm06','Boolean'], ['bm07','Boolean'], ['bm08','Boolean'], ['bm09','Boolean'], ['bm10','Boolean'], ['pp01','Boolean'], ['pp02','Boolean'], ['pp03','Boolean'], ['pp04','Boolean'], ['pp05','Boolean'], ['pp06','Boolean'], ['pp07','Boolean'], ['pp08','Boolean'], ['pp09','Boolean'], ['pp10','Boolean'], ['pp11','Boolean'], ['pp12','Boolean'], ['pp13','Boolean'], ['pp14','Boolean'], ['pp15','Boolean'], ['pp16','Boolean'], ['pp17','Boolean'], ['pp18','Boolean'], ['pp19','Boolean'], ['pp20','Boolean'], ['pp21','Boolean'], ['pp22','Boolean'], ['pp23','Boolean'], ['pp24','Boolean'], ['pp25','Boolean'], ['pp26','Boolean'], ['pp27','Boolean'], ['pp28','Boolean'], ['pp29','Boolean'], ['pp30','Boolean'], ['pp31','Boolean'], ['pp32','Boolean'], ['pp33','Boolean'], ['pp34','Boolean'], ['pp35','Boolean'], ['pp36','Boolean'], ['pc01','Boolean'], ['pc02','Boolean'], ['pc03','Boolean'], ['pc04','Boolean'], ['pc05','Boolean'], ['pc06','Boolean'], ['pc19','Boolean'], ['pc20','Boolean'], ['pc21','Boolean'], ['pc22','Boolean'], ['pc23','Boolean'], ['pc24','Boolean'] ] } )