API 平台 - 无法从没有自有属性的模式生成实体

API Platform - can't generate Entity from schema with no owned properties

我正在 运行 宁 API 平台模式类型生成器,但在 schema.org 中定义的类型苦苦挣扎,但没有自己的属性(http://schema.org/Duration).

当我 运行 vendor/bin/schema 生成类型时,我得到

[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,但我不确定如何设置持续时间 属性(大概是文本)它。 也许我混淆了如何 use/define 没有自己属性的类型 - 有没有办法告诉模式 'This is just a single text value'?

我不熟悉 API 平台,但我认为您的问题可以从编写 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

所以它的用法和data types类似。

提供项目价值

如果您 do 必须将其作为类型提供(无论出于何种原因),您可以将其作为 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>

但这并不常见,消费者可能无法正确处理。例如,Google 的 SDTT 会报告一条警告,指出它无法将值 "PT1H" 理解为 ISO 8601 date/time,而将其指定为文本值时则不会报告任何警告。