OWL2 XML到AnyLogic ALP

时间:2018-06-20 09:13:20

标签: xml xslt owl anylogic

我目前正在从事一个项目,该项目需要将描述真实场景的某些OWL2 XML文件“转换”为AnyLogic模型的ALP(XML类型)格式,以便可以在应用程序中打开它们。最终,该翻译应通过另一个应用程序自动进行。

这些情景描述了荷兰某些地区的旅游流量。这些场景是在本地Semantic MediaWiki中以RDF-OWL2格式定义并从中导出的。在AnyLogic中,我们已经设法创建所需的仿真模型和场景。现在,我们想将这些场景直接从MediaWiki“翻译”到AnyLogic,以便创建仿真模型而无需接触AnyLogic应用程序。参数,类,代理等的类型都已经由我们定义,因此这只是“语义Wiki页面A中的旅游区域应变成AnyLogic中的旅游区域A”的情况。

例如,零件输入RDF文件可能如下所示:

<genericTrainStation>
   <name>Station Amsterdam</name>
   <size>20km</size>
   ....    
</genericTrainStation>

在AnyLogic中,如果我要在应用程序中创建同一工作站,则.alp文件中的输出将类似于...。

<EmbeddedObject>
 <stuffIrrelevant></stuffIrrelevant>
 <stuffIrrelevant2></stuffIrrelevant2>
 <name>Station Amsterdam></name>
 <size>20km</size>

问题是,是否有可能通过某种方式使用RDF补充或替换AnyLogic ALP文件中的某些值来直接在输入和输出之间转换。

到目前为止,我有两个想法:

  • 使用XSLT尝试执行翻译

  • 使用AnyLogic ALP格式作为基础,并构建一个编译器来执行翻译

对于涉及操纵ALP AnyLogic格式的任何资源,我已经走了很长时间,但无济于事。通常,我正在寻求有关这两个想法总体合理性的帮助,以及最终可以在任务中使用的资源。

1 个答案:

答案 0 :(得分:4)

您可以使用XML文件来创建AnyLogic模型,但是您不想通过直接对alp文件进行编辑来做到这一点。而是找到一个读取XML文件的Java库,并在您的启动代码中加上源XML文件。然后,您可以动态实例化模型中所需的任何对象-墙壁,桩号,延迟等。

如果仅修改了alp文件,这将迫使人们不得不打开AnyLogic,因为alp文件是源代码,而不是编译后的模型。如果在初始化时实例化对象,则可以通过命令行或其他应用程序调用已编译的AnyLogic模型(请阅读有关基于服务器的应用程序上的AnyLogic模型的最终用户协议,并在需要时与他们联系以进一步讨论)。 / p>

此外,alp文件也不是为直接编辑而设计的(尽管在通过源代码控制合并版本时,我有时会这样做)。如果您正在寻找超出预期用途的东西,那么AnyLogic的新版本可能就不会向后兼容您的尝试。

我发现,动态构建空间标记项比基本对象要麻烦得多,因此请准备在该处花费一些时间。您还需要准备投入时间来捕获错误的错误输入。由于您正在进入构建模型的文件,因此,您需要确保文件中没有会导致模型崩溃或违反基本假设的项目。