2. Specialization

This webpage uses the specialization publication method
The annotation looks like this:
An example detailed HotelRoom / Offer with the same SearchAction as in 1. Abstraction

{
"@context": "http://schema.org/",
"@type": ["HotelRoom", "Offer", "Reservation"],
"name": "Detailed example Offer",
"occupancy": {
"@type": "QuantitativeValue",
"value": "2",
"unitCode": "IE"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name": "half board"
},
"additionalProperty": [{
"@type": "PropertyValue",
"name": "room type",
"value": "double room"
},
{
"@type": "PropertyValue",
"name": "duration stay",
"unitCode": "WEE",
"value": "1"
}],
"bookingTime": "2018-02-12T00:00:00+00:00",
"potentialAction":{
"@type": "SearchAction",
"name": "Search for other Offers",
"target":{
"@type": "EntryPoint",
"urlTemplate": "https://actions.semantify.it/api/datapublication/abstraction",
"httpMethod": "POST",
"encodingType": "application/ld+json",
"contentType": "application/ld+json"
},
"result": {
"type": ["HotelRoom", "Offer", "Reservation"]
},
"query":{
"@type": ["HotelRoom", "Offer", "Reservation"],
"occupancy": {
"@type": "QuantitativeValue",
"value-input": "required",
"unitCode": "IE"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name-input": {
"@type": "PropertyValueSpecification",
"valueOption": ["breakfast", "half board"],
"valueRequired": true
}
},
"additionalProperty":[
{
"@type": "PropertyValue",
"name": "room type",
"value-input": {
"@type": "PropertyValueSpecification",
"valueOption": ["normal", "comfort"],
"valueRequired": true
}
},
{
"@type": "PropertyValue",
"name": "duration stay",
"unitCode": "WEE",
"value-input": {
"@type": "PropertyValueSpecification",
"minValue": "1",
"maxValue": "2",
"valueRequired": true
}
}],
"bookingTime-input": "required"
}
}
}