oppskrift/doc/Models.md
2019-03-05 23:20:59 +01:00

130 lines
3.8 KiB
Markdown

# Models specifications
## Recipe
### Entity properties
#### estimatedTime
`Array` of different estimated times : cookTime, prepTime, performTime, totalTime, waitTime
cookTime
- https://schema.org/Duration
- The time it takes to actually cook the dish
prepTime
- https://schema.org/Duration
- The length of time it takes to prepare the items to be used in instructions or a direction
performTime
- https://schema.org/Duration
- The length of time it takes to perform instructions or a direction (not including time to prepare the supplies)
totalTime
- https://schema.org/Duration
- The total time required to perform instructions or a direction (including time to prepare the supplies)
waitTime
- https://schema.org/Duration
- The total time needed to wait between steps, in ISO 8601 duration format
- waitTime is not in the schema : https://github.com/schemaorg/schemaorg/issues/2164
#### cookingMethod
→ Maybe just not use it, or analyse the text to excerpt it
The method of cooking, such as Frying, Steaming,...
Maybe have a checklist of methods ?
#### recipeCategory
`String (255)`
The category of the recipe—for example, appetizer, entree, etc.
#### recipeCuisine
`String (255)`
The cuisine of the recipe (for example, French or Ethiopian).
#### recipeIngredient
`String[]`
List of ingredients in text format
A single ingredient used in the recipe, e.g. sugar, flour or garlic.
#### recipeInstructions
`String[]`
A step in making the recipe, in the form of a single item (document, video, etc.) or an ordered list with HowToStep and/or HowToSection items.
The number of the step should never be the text.
#### recipeYield
`String (50)`
The quantity produced by the recipe (for example, number of people served, number of servings, etc).
#### suitableForDiet
`Array` of selected keywords (DiabeticDiet, GlutenFreeDiet, HalalDiet, HinduDiet, KosherDiet, LowCalorieDiet, LowFatDiet, LowLactoseDiet, LowSaltDiet, VeganDiet, VegetarianDiet)
Indicates a dietary restriction or guideline for which this recipe or menu item is suitable, e.g. diabetic, halal etc.
TODO : Decide the best way to store the list... maybe in the model
---
#### tool
`String[]`
A sub property of instrument. An object used (but not consumed) when performing instructions or a direction.
#### author
`ManyToOne:User`
The author, a user
Microdata, JSON-LD : Person with name, url (profile) and image.
#### comment
`OneToMany:Note`
A list of Note received from the fediverse
TODO : define a comment
#### commentCount
`Integer`
A property to be shown in microdata/json-ld but in the model
#### dateModified-
`DateTime`
The most recent modification date
#### datePublished
`DateTime`
The date the first time the recipe appeared online
#### licence
`String`
URL of the licence used for the recipe or a string such as "Public domain"
#### description
`Text`
The context of the recipe : history, source, ideas to serve it, personal notes, etc..
#### image
`String (255)`
URL of the image
#### name
`String (255)`
The name of the recipe
#### likesCount
`Integer`
Calculated from the likes in the database
#### difficulty
The degree of difficulty from a list to define
#### contributor
Maybe add this later. One of the future features is to let someone edit his own version of a recipe. The original author can know about it, accept the changes and add the contributor to the list. But maybe it's too much...
#### version
Unless there is a versioning system for the recipe there's no point to this
### Properties limited the microdata usage
#### url
schema.org value for microdata & JSON-LD linking to the url of the recipe, given by the framework's router
#### thumbnailUrl
schema.org value for microdata & JSON-LD linking to the thumbnail image of the recipe
#### dicussionUrl
schema.org value for microdata & JSON-LD linking to the comments section of the recipe