3. Type-level Materialization

This webpage uses the selective instance-level materialization publication method
The annotation looks like this:
A Hotel with an array of hotelRooms and a potentialAction to search for exact rooms like 1.
{
"@context": "http://schema.org/",
"@type": "Hotel",
"name": "Test hotel (not real)",
"containsPlace":[
{
"@type": ["HotelRoom", "Offer"],
"occupancy": {
"@type": "QuantitativeValue",
"value": "1"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name": "breakfast"
},
"additionalProperty":{
"@type": "PropertyValue",
"name": "room type",
"value": "normal"
}
},
{
"@type": ["HotelRoom", "Offer"],
"occupancy": {
"@type": "QuantitativeValue",
"value": "2"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name": "breakfast"
},
"additionalProperty":{
"@type": "PropertyValue",
"name": "room type",
"value": "normal"
}
},
{
"@type": ["HotelRoom", "Offer"],
"occupancy": {
"@type": "QuantitativeValue",
"value": "1"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name": "half board"
},
"additionalProperty":{
"@type": "PropertyValue",
"name": "room type",
"value": "normal"
}
},
{
"@type": ["HotelRoom", "Offer"],
"occupancy": {
"@type": "QuantitativeValue",
"value": "1"
},
"includesObject": {
"@type": "TypeAndQuantityNode",
"typeOfGood": "http://schema.org/FoodService",
"name": "breakfast"
},
"additionalProperty":{
"@type": "PropertyValue",
"name": "room type",
"value": "comfort"
}
}
],
"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"
},
"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"
}
}
}