【发布时间】:2018-09-20 16:25:07
【问题描述】:
我想创建一个抽象模型,然后从中自动生成各种特定于数据格式的模型,例如 XML 模型(即自动生成从抽象模型生成一个 XML 模式)、一个 JSON 模型(即从抽象模型自动生成一个 JSON 模式)等等。
如果使用 Alloy 作为表达抽象模型的语言会很棒。
但我不确定是否能够从合金模型自动生成所需的特定数据格式模型。请允许我解释一下。
考虑这个简单的合金模型:
sig Test {
A: Int,
B: Int
} {
A > B
}
该模型包含两种类型的东西:(1) 它包含有关数据结构的信息,以及 (2) 它包含相互依赖的信息(“A”必须大于“B”)。
从合金模型中,我可以自动生成各种表达结构信息的特定于数据格式的模型;方法如下:
我可以做Execute > Show Metamodel,它会生成一个显示结构的实例。在这种情况下,我可以做File > Export As XML。然后我可以将 XML 转换为 XML 模式或 JSON 模式或其他任何东西。
Alloy 似乎适合作为一种抽象语言,从中可以自动生成各种表达结构信息的特定于数据格式的模型。
请注意,在上述模型中,“A”必须大于“B”。 Alloy 实例中未描述该约束。但是该约束需要在特定格式的模型中表达(例如,对于 XML 格式,约束将在 Schematron 规则中表达)。
如何提取合金模型中表达的约束,并将其转换为特定于数据格式的规则?
我想我可以尝试直接从 .als 文件中提取约束。但这似乎极具挑战性。
我寻求您的建议。
【问题讨论】:
标签: alloy