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

标签 semantic-web

据我了解语义网的一些基本原理(尤其是资源描述框架 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
处理步骤、条件
“使用黄油或人造黄油”的三重表达是什么?
时间相关语句
语义网三元组如何表达按时间顺序排列的事件或状态?例如,一个城市的煎饼销量(或者更实际的用例:历史上一个城市的市民数量)?可能有这样的事情:
Berlin soldPancakes2018 12345678
Berlin soldPancakes2019 14567890
Berlin soldPancakes2020 20123456
或者 Berlin soldObjects[object Pancake, periodFrom 2018-01-01, periodTo 2018-12-31] 12345678
这在 RDF 中如何表达?

最佳答案

有许多子问题与主要问题并不真正相关,可以完全回答每个问题。您也没有说明您是在寻找特定的词汇,还是只是为了将现实世界的实体转换为语义三元组的想法。假设我们目前正在创建一个本体。

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


我们可以从成分或步骤链接到替代品:
  [
    :action :add ;
    :object [
      :product :flour ;
      :amount "200"^^:g
    ]
    :alternative [
      :action :add ;
      :object [
        :product :magicFlour ;
        :amount "10"^^:g
      ]
    ]
  ]

如您所见,不难构思一种将想法转化为合理的三元组的方法。困难的是找到一种一致的方法将所有这些明智的想法转化为三元组。幸运的是,我们已经被现有的本体所覆盖。
我找到了 RDFa Core Initial Context检查推荐和常用词汇的有用地方。从那里我们可以选择有用的东西:
  • 为了描述复杂的时间点或间隔,有 Time Ontology .
  • 详细程度高的优惠可以用GoodRelations来描述.
  • 对于统计和测量,有Data Cubes .
  • 最后,Schema.org涵盖了许多现实世界的实体,包括 recipes .
  • 关于semantic-web - 以语义网三元组表示的煎饼食谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66730304/

    相关文章:

    owl - OWL 基数限制的推理

    rdf - 如何知道 RDF 图是否精益?

    prolog - Allegrograph地理空间序言查询

    rdf - sparql - 花括号的使用

    rdf - 将属性(property)值(value)限制为单一值?

    java - 线程 "main"java.lang.UnsupportedClassVersionError : org/apache/jena/fuseki/cmd/FusekiCmd : Unsupported major. 次要版本 51.0 中出现异常

    xml - 关于数据模型与数据格式之间的区别

    rdf - 猫头鹰 rdfs :langString and restricting its allowed languages

    html - HTML 中的发音