Я использую генератор типов схемы платформы API, но борюсь с типом, который определен в schema.org, но не имеет собственных свойств (http://schema.org/Duration).
Когда я запускаю vendor / bin / schema generate-types, я получаю
[error] The property "potentialAction" (type "Duration") has an unknown type. Add its type to the config file.
[warning] The property "identifier" (type "Duration") has several types. Using the first one ("URL") or possible options("URL", "Text").
Мой тип конфигурации:
types:
Thing:
properties:
name: ~
Duration: ~
Recipe:
properties:
cookTime: ~
recipeCuisine: ~
Если я определяю одно из свойств, которое Duration наследует от родителя (например, Thing-> Name), оно генерирует OK, но я не уверен, как затем установить для него свойство duration (предположительно text).
Возможно, я перепутал, как использовать / определять типы, которые не имеют собственных свойств — есть ли способ сообщить схеме «Это всего лишь одно текстовое значение»?
Я не знаком с API Platform, но думаю, что на ваш вопрос можно ответить с точки зрения разработки структурированных данных Schema.org:
Вы обычно не указали бы Duration
как тип. Просто укажите текстовое значение.
На примере Schema.org cookTime
свойство (которое ожидает Duration
значение):
"cookTime": "PT1H",
Cook time: <meta itemprop="cookTime" content="PT1H">1 hour
Cook time: <meta property="cookTime" content="PT1H">1 hour
Таким образом, его использование похоже на типы данных.
если ты делать необходимо предоставить его как тип (по какой-либо причине), вы можете указать его как значение для name
свойство, так как нет другого подходящего свойства, определенного:
"cookTime": {
"@type": "Duration",
"name": "PT1H"},
<div itemprop="cookTime" itemscope itemtype="http://schema.org/Duration">
Cook time: <meta itemprop="name" content="PT1H">1 hour
</div>
<div property="cookTime" typeof="Duration">
Cook time: <meta property="name" content="PT1H">1 hour
</div>
Но это обычно не делается, и потребители могут не справиться с этим правильно. Например, SDTT от Google выдает предупреждение о том, что оно не понимает значение «PT1H» как дату / время ISO 8601, в то время как не указывает предупреждение при указании его в качестве текстового значения.
Других решений пока нет …