02 推理与查询
本章覆盖:推理引擎与业务规则、REST API、CLI 双通道。示例均为实测输出。
2.1 推理引擎与业务规则
系统加载 OWL 本体后执行 OWL 2 RL 物化推理,并叠加业务规则:
| 规则 | 含义 | 示例 |
|---|---|---|
| R1 能力匹配 | 属性链:has_capability ◦ required_by ⊑ can_execute |
任务需要"编码实现"→ 具备 Coding 能力的研发 Agent 可执行 |
| R2 任务聚合 | 可执行全部子任务 ⇒ 可执行复合任务 | 复合任务"新功能上线"由子任务构成 |
| R3 依赖传递 | depends_on 传递闭包 |
复合任务按依赖拓扑排序 |
| R4 合规冲突 | 任务要求合规认证而 Agent 未认证 ⇒ 冲突报告 | 敏感数据报表开发 → 初级研发 Agent 未认证 |
每个推理结论附带可解释推导链(explain),并支持结构化证明导出(MCP explain_proof,mode=asserted/derived/unproven),可用于审计与程序化问答。
边界:领域推理 R1–R4 仅默认本体可用;通用查询(SPARQL/个体/类/类型/属性/重推理)与本体无关,任意 .owl 均可。
2.2 REST API(20+ 端点)
入口:启动后访问 http://127.0.0.1:8000/docs(Swagger UI,可直接调试)。
领域推理:
# 能力匹配:哪些智能体能执行登录模块开发
curl -s -X POST http://127.0.0.1:8000/api/reason \
-H "Content-Type: application/json" \
-d '{"type":"capability_match","task":"t_login_dev"}'
# 任务编排(复合任务拆解 + 依赖排序 + 逐环节匹配)
curl -s -X POST http://127.0.0.1:8000/api/reason \
-H "Content-Type: application/json" \
-d '{"type":"orchestrate","task":"t_feature"}'
# 分配 + R4 合规冲突检测
curl -s -X POST http://127.0.0.1:8000/api/reason \
-H "Content-Type: application/json" \
-d '{"type":"assign","task":"t_compliance_dev","agent":"junior_dev"}'
# 新增任务个体并自动分类
curl -s -X POST http://127.0.0.1:8000/api/classify \
-H "Content-Type: application/json" \
-d '{"name":"t_chat_task","capabilities":["Coding"],"constraints":["ComplianceRequirement"],"risk":5}'
# 最近一次推理的推导链(中文)
curl -s -X POST http://127.0.0.1:8000/api/explain
# 一致性 / 合规冲突全量检查
curl -s -X POST http://127.0.0.1:8000/api/consistency
通用查询(与本体定义无关):
curl -s -X POST http://127.0.0.1:8000/api/query -H "Content-Type: application/json" \
-d '{"sparql":"SELECT ?i WHERE { ?i a <http://demo.example.org/agent-task-ontology#Agent> }"}'
curl -s -X POST http://127.0.0.1:8000/api/individuals -H "Content-Type: application/json" -d '{"class_name":"Agent"}'
curl -s -X POST http://127.0.0.1:8000/api/classes
curl -s -X POST http://127.0.0.1:8000/api/types -H "Content-Type: application/json" -d '{"individual":"dev_agent"}'
curl -s -X POST http://127.0.0.1:8000/api/property -H "Content-Type: application/json" -d '{"subject":"dev_agent","property":"has_capability"}'
curl -s -X POST http://127.0.0.1:8000/api/infer # 重新推理,返回三元组/个体统计
实测 types 返回:dev_agent → ["Agent","DevAgent","NamedIndividual","Thing"];infer 返回:triples_before/after=676,classes=27,individuals=14。
本体管理 / 运维接口(热重载、状态、删除、撤销、批量导入、在线编辑)见 04 运维。
2.3 CLI 双通道(scripts/query.py)
默认 HTTP 优先、失败自动回退内嵌引擎(--local 零依赖跑通全部查询)。
# 领域命令(默认本体)
.venv/bin/python scripts/query.py capability_match --task t_login_dev --pretty
.venv/bin/python scripts/query.py orchestrate --task t_feature --pretty
.venv/bin/python scripts/query.py assign --task t_compliance_dev --agent junior_dev --pretty
.venv/bin/python scripts/query.py classify --name t_chat_task --capabilities Coding --constraints ComplianceRequirement --risk 5 --pretty
.venv/bin/python scripts/query.py consistency --pretty
.venv/bin/python scripts/query.py explain --pretty
# 通用命令(任意本体)
.venv/bin/python scripts/query.py query-sparql --sparql "SELECT ?i WHERE { ?i a <http://demo.example.org/agent-task-ontology#Agent> }" --pretty
.venv/bin/python scripts/query.py individuals --class Agent --pretty
.venv/bin/python scripts/query.py classes --pretty
.venv/bin/python scripts/query.py types --individual dev_agent --pretty
.venv/bin/python scripts/query.py property --subject dev_agent --property has_capability --pretty
.venv/bin/python scripts/query.py infer --pretty
通道控制:--http 强制 HTTP(服务不在时报错);--local 强制内嵌引擎;环境变量 DOUBAO_API_BASE 覆盖 API 地址(默认 http://127.0.0.1:8000)。
实测输出示例(--local,与默认本体 HTTP 通道一致):
// capability_match --task t_login_dev
{"task":"t_login_dev","task_label":"登录模块开发","matches":[
{"agent":"dev_agent","agent_label":"研发Agent","certified":true,
"shared_capabilities":["Coding"],"rule":"R1", ...}]}
// assign --task t_compliance_dev --agent junior_dev
{"task":"t_compliance_dev","agent":"junior_dev","assigned":true,
"conflict":{"type":"合规认证冲突","message":"任务「敏感数据报表开发」要求合规认证,但 Agent「初级研发Agent」未通过认证","rule":"R4"}}
// orchestrate --task t_feature(复合任务)
{"task":"t_feature","is_complex":true,"steps":[{"task":"t_req","executor":"req_agent","idx":1}, ...]}
常用个体短名:任务 t_req / t_login_dev / t_login_review / t_login_test / t_deploy / t_compliance_dev / t_feature / t_double_dev;智能体 req_agent / dev_agent / junior_dev / test_agent / deploy_agent;能力类 RequirementAnalysis / Coding / CodeReview / Testing / Deployment。