Closed virtor closed 9 years ago
Es importante tener en cuenta que no existe un estándar concreto para la especificación de precios de lugares (comercios, equipamientos, etc.), por lo que la solución que se tome en este momento podría modificarse en el futuro si termina de surgir un estándar en este sentido. Algunas de las propuestas que se han hecho hasta el momento son las siguientes:
Otros sitios como la Google Places API no proporcionan este tipo de información.
También se puede considerar la propuesta, sencilla, de @jrub en su feedback sobre el uso de la API de Zaragoza (https://gist.github.com/jrub/8707031fb834d80a7828).
Teniendo en cuenta los comentarios proporcionados anteriormente, la propuesta que puede considerarse como más adecuada es una pequeña variación sobre lo propuesto por @jrub.
"price": {
"zaragoza-card": true,
"fares": [
{ "@type": "gr:UnitPriceSpecification", "gr:hasCurrencyValue": "3"^^xsd:float, "gr:hasCurrency": "EUR", "fareGroup": "regular", "minSize": "1"},
{ "@type": "gr:UnitPriceSpecification", "gr:hasCurrencyValue": "5"^^xsd:float, "gr:hasCurrency": "EUR", "fareGroup": "group", "minSize": "10"}
....
]
}
Teniendo en cuenta las diferentes propuestas y aportaciones hemos pensando en optar por la siguiente descripción de precios:
{
"price": [
{
"hasCurrencyValue": 3,
"hasCurrency": "EUR",
"fareGroup": "regular",
"minSize": "1"
},
{
"hasCurrencyValue": 0,
"hasCurrency": "EUR",
"fareGroup": "zaragoza-card",
"minSize": "1"
},
{
"hasCurrencyValue": 5,
"hasCurrency": "EUR",
"fareGroup": "group",
"minSize": "10"
}
]
}
Así de primeras, respecto a los nombres de los parámetros, no sé si los hasCurrency
y hasCurrencyValue
suenan naturales en web semántica, pero para un API REST me suena mejor currency
para el primero y amount
, price
, o fare
para el segundo. También, minSize
, no entendía al principio qué era relativo a grupos de personas... ¿igual algo más descriptivo como minPeople
? ¿y en vez de fareGroup
poner fareType
?
Los de currency sí que son importantes puesto que son los que se usan también en schema.org, basado en GoodRelations, y lo usan en muchos sites de comercio electrónico. Los otros se pueden cambiar, sin problema, si resultan más intuitivos de esa manera.
La información referente a los horarios queda de la siguiente manera:
"price": [
{
"fareGroup": "string",
"hasCurrencyValue": 0,
"hasCurrency": "string",
"minSize": "string"
}
]
A través del vector price se pueden establecer múltiples precios haciendo diferentes combinaciones con el campo fareGroup que especifica el tipo/grupo de la entrada, pudiendo establecer también diferentes precios y número de personas necesario (la entrada individual tiene valor 1) para cada uno:
Nota: Los tipos/grupos pueden incrementarse en el futuro.
Ejemplo de actividad:
{
"id": 000000,
"title": "Título de la actividad",
"price": [
{
"fareGroup": "Anticipada",
"hasCurrencyValue": 8,
"hasCurrency": "EUR",
"minSize": "1"
},
{
"fareGroup": "Normal",
"hasCurrencyValue": 10,
"hasCurrency": "EUR",
"minSize": "1"
},
{
"fareGroup": "Desempleados",
"hasCurrencyValue": 6,
"hasCurrency": "EUR",
"minSize": "1"
},
],
...
}
Se mantienen los campos precioEntrada y comentariosEntrada a nivel de actividad permitiendo la introducción de texto libre para aquellas actividades en las que exista algún dato especial referente al precio y para aquellas actividades en las que no se pueda establecer un precio estructurado.
El campo de precio se ofrece como información en texto libre, para poder trabajar con este campo sería necesario que se ofreciera la información más estructurada.