我想对几个主题有所了解:“EMF 比较”和“模型到模型比较”。
我试图实现两个 XMI 模型之间的比较,它们彼此不同(i)第一个是输出模型,它是我在输入元模型的实例上运行的转换的结果,(ii)第二个是一个实例(符合输出元模型),我创建它以表示转换后正确的预期输出形式应该是什么(又名预言模型)。
我尝试使用“EMF 比较”来实现多个不同的输出模型(我在对多个不同的输入模型运行转换后得到)和 oracle 的“正确”模型之间的比较,目的是验证我提出的转换。
但是,每当我尝试运行“与 -> 相互比较”时,我都会收到以下错误消息并且没有结果:
An internal error occurred during: "Computing Model Differences".
loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @477ad3b6 wants to load interface com.google.common.collect.Multimap. A different interface with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @3a161902. (com.google.common.collect.Multimap is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @3a161902, parent loader 'platform')
我试图删除 /.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi 并重新启动我的工作区。然而,问题持续存在。
而且我还验证了没有冲突的 Guava 版本(实际上我没有安装 guava,所以我尝试安装它,但没有解决问题),我还尝试安装 Orbit 插件,因为它被推荐给我它也没有帮助,因为同样的错误仍然存在。我的问题是:
(i) 根据我的描述,使用 EMF 比较是否适合我的要求?如上所述,我需要将每个输出模型与相同的 oracle 模型进行比较,并得到一个分数或其他东西来决定转换是否给出了正确的输出。(ii) 如果是,是什么导致了这个问题,我该如何解决?(iii) 如果不是,什么是合适的工具或插件来实现我的需要?
另一个可能有点超出问题范围的问题是: (iv)我看过将输出模型与预言机进行比较并将这些结果分类为超空间和超车道(误报、误报等)的作品),之后,他们计算他们的方法的精度和召回率。最终,基于此,他们将评估他们提出的转换的正确性。但是,我找不到关于如何自己实现这一目标的适当文档(以学术实验的方式)。谁能向我提供有关如何进行适当比较并评估我的转换有效性的指导或文档?
先感谢您。问候。