xml - OWL2 XML 到 AnyLogic ALP
问题描述
我目前正在开展一个项目,该项目需要将描述现实生活场景的某些 OWL2 XML 文件“转换”为 AnyLogic 模型的 ALP(XML 类型)格式,以便可以在应用程序中打开它们。这种翻译最终应该通过另一个应用程序自动发生。
这些情景描述了荷兰某些地区的旅游流量。这些场景以 RDF-OWL2 格式在本地 Semantic MediaWiki 中定义和导出。在 AnyLogic 中,我们已经设法创建了我们想要的仿真模型和场景。现在,我们希望将这些场景从 MediaWiki 直接“翻译”到 AnyLogic,以便创建仿真模型而无需接触 AnyLogic 应用程序。参数类型、类、代理等都是我们已经定义好的,所以这只是“语义维基页面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 格式的资源,但无济于事。我通常在寻求有关这两个想法的总体合理性以及我可以在我的任务中使用的最终资源的帮助。
解决方案
您可以使用 XML 文件创建 AnyLogic 模型,但您不想通过直接编辑 alp 文件来创建。相反,找到一个读取 XML 文件的 java 库,并在您的启动代码中使用您的源 XML 文件。然后,您可以在模型中动态实例化您想要的任何对象 - 墙壁、车站、延迟等。
如果你只是修改了 alp 文件,那将迫使人们不得不打开 AnyLogic,因为 alp 文件是源代码,而不是编译后的模型。如果您在初始化时实例化对象,则可以通过命令行或其他应用程序调用已编译的 AnyLogic 模型(阅读有关基于服务器的应用程序上的 AnyLogic 模型的最终用户协议,并在需要时与他们联系以进一步讨论)。
此外,alp 文件不是为直接编辑而设计的(尽管我在通过源代码控制合并版本时不时这样做)。鉴于您正在查看超出预期用途的内容,AnyLogic 的新版本可能不会向后兼容您正在尝试执行的操作。
我发现动态构建空间标记项可能比基本对象更麻烦,所以准备花一些时间在那里。您还需要准备好投入时间来捕获错误输入。由于您要跨入构建模型的文件,因此您需要确保该文件没有会导致模型崩溃或违反基本假设的项目。
推荐阅读
- python - Sending HTML POST data to a Python script
- r - r中的for循环问题:要替换的项目数不是替换长度的倍数
- python - TypeError:图像数据无法在 wordcloud 项目上转换为浮点数
- java - Leetcode:计算 O(n) 时间复杂度的元素
- typescript - How to implement "Either" functionality of Functional language in typescript
- uiscrollview - SwiftUI ScrollView horizontal RTL not working correctly
- oracle - oracle Form Alert syntax
- c - 关于不透明指针,链接在 C 中如何工作?
- timezone - 测试 isContains 是否具有多个世界的可能性
- reactjs - 开发工具显示了许多由带有功能组件的反应钩子构建的聊天应用程序的 websocket 请求