Context: The growing size of graph-based modeling artifacts in model-driven engineering calls for techniques that enable efficient execution of graph queries. Incremental approaches based on the RETE algorithm provide an adequate solution in many scenarios, but are generally designed to search for query results over the entire graph. However, in certain situations, a user may only be interested in query results for a subgraph, for instance when a developer is working on a large model of which only a part is loaded into their workspace. In this case, the global execution semantics can result in significant computational overhead. Contribution: To mitigate the outlined shortcoming, in this paper we propose an extension of the RETE approach that enables local, yet fully incremental execution of graph queries, while still guaranteeing completeness of results with respect to the relevant subgraph. Results: We empirically evaluate the presented approach via experiments inspired by a scenario from software development and an independent social network benchmark. The experimental results indicate that the proposed technique can significantly improve performance regarding memory consumption and execution time in favorable cases, but may incur a noticeable linear overhead in unfavorable cases.
翻译:上下文:在模型驱动工程中,基于图的建模工件规模日益增长,这使得高效执行图查询的技术需求愈发迫切。基于RETE算法的增量方法在许多场景中提供了有效解决方案,但其通常旨在搜索整个图上的查询结果。然而,在某些情况下,用户可能只对子图上的查询结果感兴趣,例如当开发者处理大型模型时,仅将模型的部分内容加载至工作空间中。此时,全局执行语义会导致显著的计算开销。贡献:为缓解上述不足,本文提出RETE方法的扩展,支持局部且完全增量的图查询执行,同时保证相对于相关子图的结果完备性。结果:我们通过软件开发场景启发的实验以及独立社交网络基准测试,对所提出的方法进行了实证评估。实验结果表明,在有利情况下,所提技术能显著提升内存消耗和执行时间性能,但在不利情况下可能产生可感知的线性开销。