Comparando sintaxis de consultas de FIWARE Orion Context Broker y SOFIA2 SIB

En este post vamos a ver cómo el SIB de SOFIA2 y el GE FIWARE Orion Context Broker permiten hacer consultas, empecemos:

Conforme a la documentación de FIWARE Orion Context Broker las consultas en el Orion Context Broker se realizan con el mensaje NGSI-10 queryContext que tiene esta sintaxis:

En XML:

REQUEST XML queryContext RESPONSE XML queryContext
<queryContextRequest><entityIdList>

<entityId type=”Room” isPattern=”false”>

<id>Room1</id>

</entityId>

</entityIdList>

<attributeList/>

</queryContextRequest>

<?xml version=”1.0″?><queryContextResponse>

<contextResponseList>

<contextElementResponse>

<contextElement>

<entityId type=”Room” isPattern=”false”>

<id>Room1</id>

</entityId>

<contextAttributeList>

<contextAttribute>

<name>temperature</name>

<type>centigrade</type>

<contextValue>23</contextValue>

</contextAttribute>

<contextAttribute>

<name>pressure</name>

<type>mmHg</type>

<contextValue>720</contextValue>

</contextAttribute>

</contextAttributeList>

</contextElement>

<statusCode>

<code>200</code>

<reasonPhrase>OK</reasonPhrase>

</statusCode>

</contextElementResponse>

</contextResponseList>

</queryContextResponse>

Y en JSON:

REQUEST JSON queryContext RESPONSE JSON queryContext
{“entities”: [

{

“type”: “Room”,

“isPattern”: “false”,

“id”: “Room1”

}

]

}

{“contextResponses”: [

{

“contextElement”: {

“attributes”: [

{

“name”: “temperature”,

“type”: “centigrade”,

“value”: “23”

},

{

“name”: “pressure”,

“type”: “mmHg”,

“value”: “720”

}

],

“id”: “Room1”,

“isPattern”: “false”,

“type”: “Room”

},

“statusCode”: {

“code”: “200”,

“reasonPhrase”: “OK”

}

}

]

}

En el caso de SOFIA2 se soportan mensajes SSAP de Query bien en el lenguaje nativo de la BDTR o bien en lenguaje SQL para la BDTR o la BDH, para eso SOFIA2 incorpora parsers SQL para MongoDB (BDTR) y Hadoop (BDH).

Más detalle sobre el protocolo SSAP aquí.

Request SSAP QUERY Response SSAP QUERY
{“body”:{

“query”:”select * from feedAutobus where Feed.assetId=’316′ limit 1“,

“queryType”:”SQLLIKE

},

“direction”:”REQUEST”,

“ontology”:”feedAutobus”,

“messageType”:”QUERY”,

“messageId”:null,

“sessionKey”: “480e20eb-9100-4c6d-af6f-da688095311b”

}

{“body”: {

“data”: [

{

“_id”: {

“$oid”: “533bff5f50ae67a5ab0c433c”

},

“Feed”: {

“assetId”: “316”,

“assetName”: ” Autobús nº 316 “,

“assetSource”: “guiaLocal”,

“assetType”: “Autobus”,

“attribs”: [

{

“name”: “linea”,

“value”: “1”

},

{

“name”: “nombreLinea”,

“value”: “Abente y Lago – Os Castros”

},

{

“name”: “estado”,

“value”: “Tipo de Autobús: Normal piso bajo . Última parada por la que ha pasado Plaza de Mina, 26 Hora de paso 14:15 Proxima parada: Plaza de Orense\\n”

}

],

“feedId”: “1:316:2014-04-02T12:15:28.706266”,

“feedSource”: “guiaLocal”,

“geometry”: {

“coordinates”: [

-8.403705353600992,

43.36721562022267

],

“type”: “Point”

},

“measures”: [ ],

“measuresTimestamp”: {

“$date”: “2014-04-02T12:15:28.706Z”

},

“measuresType”: “INSTANT”,

“timestamp”: {

“$date”: “2014-04-02T12:15:28.706Z”

},

“type”: “MOBILE”

}

}

],

“error”: null,

“errorCode”: null,

“ok”: true

},

“direction”: “RESPONSE”,

“messageId”: null,

“messageType”: “QUERY”,

“ontology”: “feedAutobus”,

“sessionKey”: “480e20eb-9100-4c6d-af6f-da688095311b”

}

Que expresado en lenguaje MongoDB quedaría:

{

“body”:{

“query”:”db.feedAutobus.find({assetId:’316’}).limit(1)“,

“queryType”:”NATIVE

},

“direction”:”REQUEST”,

“ontology”:”feedAutobus”,

“messageType”:”QUERY”,

“messageId”:null,

“sessionKey”: “480e20eb-9100-4c6d-af6f-da688095311b”

}

Además de las diferencias en el lenguaje de consultas puede apreciarse las diferencias en el modelado de la información, en FIWARE se manejan estructuras genéricas NGSI (contextElement,…) mientras que en SOFIA2 se consultan y se devuelve instancias de las ontologías definidas en SOFIA2.

Por otro lado en SOFIA2 se comprueban los permisos en la ejecución de la consulta, de modo que un usuario sólo pueda consultar (o insertar,…) sobre ontologías de las que tiene permiso.

Comparando sintaxis de consultas de FIWARE Orion Context Broker y SOFIA2 SIB

Un comentario en “Comparando sintaxis de consultas de FIWARE Orion Context Broker y SOFIA2 SIB

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s