# Locust2.0 **Repository Path**: yixuan94/locust2.0 ## Basic Information - **Project Name**: Locust2.0 - **Description**: It includes ontology learning for Competency questions (CQ) and heterogeneous input from multiple sources, and has a complete front-end user interface. CQ can be used to generate ontology validation. - **Primary Language**: Java - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 87 - **Forks**: 59 - **Created**: 2024-01-02 - **Last Updated**: 2025-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Locust2.0 #### 背景知识 能力问题(Competency Question,CQ)是本体工程中的一个关键概念,用于验证和评估本体是否能够满足特定领域的需求。CQ 通常是一组问题,通过这些问题可以检验本体是否能够正确地表示和推理领域知识。 多源异构输入的本体学习是指从多种来源和不同结构的数据中提取知识,并构建或扩展本体的过程。这些数据源可能包括关系型数据库、非关系型数据库、API 接口、文件系统等。由于数据来源和格式的多样性,处理多源异构数据需要经过数据接入、转换、清洗和整合等步骤 。 #### 介绍 新版本本体学习工具,在1.0版本基础上大幅改动和增强,纳入对能力问题(Competency Question,CQ)及多源异构输入的本体学习,提供后端接口,CQ可用于生成本体的验证。 另外新增功能:集成LLM进行来自文本的本体元素抽取;支持模糊逻辑的安全本体构建(进行中)。 #### 配置运行 1. 拉取仓库,另需安装Postman或者RestClient(类似的REST测试工具均可); 2. 安装数据库,本仓库使用的是MySQL,数据库Schema见resources目录下的myontology.sql文件; 3. 仓库解压路径,目前项目路径设置为系统D盘下的“D:\Lowcode-ontology-generator\Lowcode-ontology-generator-backend\backend”路径,安装配置时,需将仓库中涉及设置信息的字段更换为实际路径,主要配置信息在basicConfig.properties文件中,另外还有InputAnalyzerController中的一些前缀字符串需要修改,或者更改为自动识别路径; 4. 环境依赖可由Maven识别pom.xml自动拉取,无需更改; 5. 运行启动前,先创建数据序列化路径,目前仓库中的序列化路径为“D:\CybersecurityOntologies”; 6. 启动需先启动本仓库,再使用Rest工具测试,测试需先导入结构化数据源,再导入非结构化数据源,输出本体则是调用对应的export接口; 7. 若使用大模型Agent辅助识别本体元素功能,则需要更换有效的APIKey; 8. 输出得到的本体文件可以用protege工具打开查看,可进行二次编辑; 9. 补充:本仓库可以通过debug模式配合Rest调用的方式进行调试,暂未开发对应的前端操作界面。本仓库是个人开发,主要用作学习研究,仍有很多需修改完善的地方,欢迎批评指正。 #### 软件架构 软件架构说明 1. 框架 后端使用SpringBoot为主要开发框架,需适配低代码前端。开发中,初版形成之后完善。 2. Restful-API 提供输入数据分析、验证、输出等控制器,暂以Restful-API的形式开放接口调用。 3. 开发依赖 部分开发依赖由Maven管理,具体依赖及其版本详见pom.xml文件。 4. Apache Jena 此开发依赖为导入库,版本为4.7.0。 5. 文件路径 在Windows下执行,很多路径还用的绝对路径,在D盘中。 6. 数据库 使用MySQL数据库,schema名为myontology,建立库表的sql文件在resources目录下。 7. 序列化与反序列化 程序中涉及的全局变量使用反序列化进行初始化,使用序列化进行输出,对应逻辑在程序启动、退出时执行。 8. 能力问题库 能力问题库使用BigCQ,有若干能力问题模板和SPARQL-OWL查询模板。 9. 双向同步 处理完输入,若不是直接进入本地叙词表的,都要和本地叙词表之间进行一次双向同步,确保出现的词组在本地叙词表中都有。 10. LLM代理 使用LangChain4J实例化AI Agent,对本体元素提取进行封闭式提问。在后续的功能补充过程中,LLM可以处理多数以文本为输入的任务(模糊元素提取等)。 11. 模糊元素 暂定概念隶属度、对象属性关系强度、数据属性关系等作为模糊元素(后续开发过程中需进一步明确)。 12. Fuzzy OWL标准 需先调研模糊本体相关文献后,再思考具体方法。一个简单粗暴的思路是延用LLM代理,但意义不太大,应考虑深入,提高质量。 13. 代理API KEY 由于API KEY需付费,仓库里留空,运行时再替换为有效的API KEY。 #### 补充说明 1. 有关硬编码的文件路径等:第一版开发结束后改为读取配置文件的形式; 2. 提供Restful-API:二次开发前后端联调,初衷是支持领域专家和知识工程师协作; 3. 作为课题《安全本体工程》的开源代码; 4. 作者将长期维护该开源仓库; 5. 前端本身作为低代码平台实现,是一个创新点,但低代码平台开发量很大,且后端逻辑需十分完善,自身工作又比较偏工程; 6. 使用Apache Jena的TDB作为RDF数据库; 7. 关于仓库命名,没有特别的深意。Locust可以译为蝗虫或者蚱蜢,本体工程作为一个传统知识库的方向,构建缓慢且费力。而蝗虫在成群的情形下可以快速扩张,这里只是想体现工具可以助力提升安全本体构建效率; 8. 之所以是针对安全领域的本体,主要是因为安全领域“标准”在作为本体骨架方面有突出优势,可以直接支撑单个本体模块; 9. 资源resources文件夹下存放外部数据集、代码库、能力问题库,以及为特定问题编写的Python脚本。 #### 相关论文 1. 延续Locust1.0内容,以及延伸修改内容; 2. Locust1.0: 中科院二区期刊,已录用; 3. Locust2.0: 进一步功能细分,包括1)需求驱动;2)大模型驱动;3)模糊逻辑。其中,模糊逻辑相关内容持续展开; 4. 工程角度的文章暂时就这些,深入探讨很困难,缺少团队和资源; 5. 毕业设计相关:开题。 #### 相关调研 1. [模糊本体](AddDocs/fuzzyOntology.md) 2. [本体嵌入](AddDocs/ontologyEmbedding.md) 3. [最新热点](AddDocs/latest.md) 4. [开源仓库学习](AddDocs/openSource.md) #### 实验结果分析与描述 1. 有哪些要点?环境,构建(获取怎样的输入,获得怎样的输出?),验证(跑具体化能力问题,挨个儿验证)。操作手册式,按步骤呈现。 #### 问题思考 1. 通用的方法更有意义,那么在考虑领域特定方法时,就要更关注该领域的特点。安全本体工程和通用的本体工程,领域大模型和通用大模型,怎么看都是后者更有意义,除非前者可以有特别大的优势。 2. 可解释性和向量表示,大模型起飞后,知识图谱又说有可解释性,但在过去工作中,知识图谱用了很多深度学习的技术。 #### 参与贡献 1. 我,导师,以及B409的另外两位同学(实验讨论、课题申报等); 2. 开源竞赛申报; 3. 持续深化:向好的开源仓库看齐。 欢迎使用本项目,也欢迎对本项目进行批评、探讨,非常感谢。