我想创建一个抽象模型,然后从中自动生成各种特定于数据格式的模型,例如XML模型(即,自动生成从抽象模型到XML模式),JSON模型(即从抽象模型自动生成JSON模式)等等。
使用Alloy作为表达抽象模型的语言会很棒。
但是我不确定能否从Alloy模型自动生成所需的特定于数据格式的模型。请允许我解释一下。
考虑以下简单的Alloy模型:
sig Test {
A: Int,
B: Int
} {
A > B
}
该模型包含两种类型的事物:(1)它包含有关数据结构的信息,并且(2)它包含互相关信息(“ A”必须大于“ B”)。
从Alloy模型中,我可以自动生成各种表示结构信息的特定于数据格式的模型;方法如下:
我可以做Execute > Show Metamodel
,生成一个显示结构的实例。在这种情况下,我可以做File > Export As XML
。然后,我可以将XML转换为XML模式或JSON模式或其他任何内容。
合金似乎适合作为一种抽象语言,从中可以自动生成各种表示结构信息的特定于数据格式的模型。
在上述模型中,请注意“ A”必须大于“ B”。在Alloy实例中没有描述该约束。但是该约束需要在格式特定的模型中表示(例如,对于XML格式,约束将在Schematron规则中表示)。
如何提取Alloy模型中表达的约束并将其转换为特定于数据格式的规则?
我想我可以尝试直接从.als文件中提取约束。但这似乎异常具有挑战性。
请寻求您的建议。
答案 0 :(得分:2)
是的,我也有相同的想法。我也知道如何实现它。略有细节,以找到一些资金:-(
我认为这可能是对Alloy的很好使用。
更新
这个答案有点滑稽。您可以完全在Alloy中做某事。您可以将模型导出为XML,然后可以通过XSLT或其他工具转换XML。但是,这并不容易并且很难实现自动化。理想的情况是,Alloy可以处理一些脚本,以便您可以转换为所需的格式。