以语义网三元组表示的煎饼食谱

Pancake recipe expressed in Semantic Web triples

据我了解语义网的一些基本原理(尤其是资源描述框架RDF),语义是用subject, predicate and object.

三元组描述的

例如我可以表达

Pancake consistsOf Egg
Pancake consistsOf Flour
Pancake consistsOf Milk
Pancake producibleBy PancakeRecipe1
Pancake producibleBy PancakeRecipe2

主要问题:如何用语义网三元组描述流程步骤和时间依赖语句?

处理步骤,金额

如何使用三元组表示流程步骤中的金额?例如说明“使用 2 个鸡蛋”。也许这是一种方法:PancakeRecipe1 useEggs 2。但这意味着当我想提供一个通用的过程描述时(不仅针对煎饼),我必须为可能成为其他一切的一部分的每件事添加一个谓词(即使是那些目前未知的事情)。

另一种方法:PancakeRecipe1 use2 Egg。这意味着我必须为每个金额(甚至是浮点数)添加一个谓词。不实用。

第三种方法:

PancakeRecipe1 use 2Eggs
2Eggs isAmountOf Egg
2Eggs value 2

这样至少谓词的数量是恒定的。

第四种方法:可能会误用将文字添加到对象中并将数量和对对象的引用合并到文字中的可能性:PancakeRecipe1 use 2,Egg.

第五种方法:谓词处可以有谓词吗?例如 PancakeRecipe1 use[amount 2] Egg?

流程步骤、顺序

我如何表达订购带有三元饼的煎饼食谱?我想这将是谓词的附加信息(如果谓词可能有任何附加信息):

PancakeRecipe1 use[amount 2, order 1] Egg
PancakeRecipe1 use[amount 200, unit g, order 2] Flour
PancakeRecipe1 use[amount 200, unit ml, order 3] Flour

流程步骤、条件

“Use either butter or margarine”的三重表达式是什么?

时间相关语句

语义网三元组如何表达按时间顺序排列的事件或状态?例如,一个城市售出的煎饼数量(或者更实际的用例:历史上一个城市的公民数量)?可能是这样的:

Berlin soldPancakes2018 12345678
Berlin soldPancakes2019 14567890
Berlin soldPancakes2020 20123456

或者 Berlin soldObjects[object Pancake, periodFrom 2018-01-01, periodTo 2018-12-31] 12345678

这在 RDF 中如何表达?

有许多子问题与主要问题没有真正的关系,无法完整回答其中的每一个问题。您也没有具体说明您是在寻找特定的词汇表,还是只是想了解将现实世界的实体转换为语义三元组的想法。假设我们目前正在创建一个 ontology。

Process steps, amounts

配方类似于编程功能:它有一些成分(参数)和步骤(语句)来产生结果。您可能想分别描述它们。

<recipe> :uses [
  :product :egg ;
  :minAmount 2
] .

Process steps, order

各个步骤可以以类似的方式工作,只是在一个列表中:

<recipe> :steps (
  [
    :action :break ;
    :object [
      :product :egg ;
      :amount 2
    ] ;
    :result _:x
  ]
  [
    :action :add ;
    :object _:x
  ]
  [
    :action :add ;
    :object [
      :product :flour ;
      :amount "200"^^:g
    ]
  ]
  [
    :action :mix
  ]
) .

Process steps, conditions

我们可以link从成分或步骤到替代品:

  [
    :action :add ;
    :object [
      :product :flour ;
      :amount "200"^^:g
    ]
    :alternative [
      :action :add ;
      :object [
        :product :magicFlour ;
        :amount "10"^^:g
      ]
    ]
  ]

如您所见,不难设想一种将想法转化为合理的三元组的方法。困难的是找到一种一致的方法来将 所有 这样明智的想法转化为三元组。幸运的是,我们已经被现有的本体所涵盖。

我发现 RDFa Core Initial Context 是检查推荐词汇和常用词汇的有用场所。从那里我们可以选择有用的: