
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
mu-migrations-service是一款用于在数据库上运行迁移的服务,目前支持SPARQL查询(.sparql)和Turtle文件(.ttl)格式,未来计划扩展支持更多格式。该服务确保迁移按序执行、状态可追踪,适用于RDF数据库(如Virtuoso)的数据更新、初始化及模式变更场景。
适用于需要对RDF数据库进行结构化数据迁移的项目,包括但不限于:
将迁移服务添加到项目栈
在mu-project的docker-compose.yml中添加以下配置,将迁移服务集成到项目:
yamlmigrations: image: semtech/mu-migrations-service links: - triplestore:database # "triplestore"为数据库服务名称(通常是Virtuoso实例) volumes: - ./config/migrations:/data/migrations # 本地迁移文件目录映射到容器内
使用docker-compose up -d启动服务栈,通过docker-compose logs -ft migrations查看日志,确认服务启动成功(初始无迁移执行)。
编写迁移以更新数据集中的谓词
以下示例将数据集中所有schema:name谓词替换为foaf:name:
./config/migrations/20200329140538-replace-schema-name-with-foaf-name.sparqlsparqlPREFIX schema: <http://schema.org/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> DELETE { GRAPH ?g { ?s schema:name ?o . } } INSERT { GRAPH ?g { ?s foaf:name ?o . } } WHERE { GRAPH ?g { ?s schema:name ?o . } }
执行docker-compose restart migrations重启服务,通过docker-compose logs -ft migrations查看迁移执行状态及结果。
使用SPARQL查询操作数据
创建SPARQL迁移文件(如./config/migrations/20160808225103-statuses.sparql),示例内容:
sparqlPREFIX dct: <http://purl.org/dc/terms/> PREFIX tac: <http://tasks-at-hand.com/vocabularies/core/> PREFIX mu: <http://mu.semte.ch/vocabularies/core/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> INSERT DATA { GRAPH <http://mu.semte.ch/application> { <http://tasks-at-hand.com/resources/statuses/not_started> a tac:Status; mu:uuid "wellknown-status-not_started"; dct:title "not started". <http://tasks-at-hand.com/resources/statuses/ongoing> a tac:Status; mu:uuid "wellknown-status-ongoing"; dct:title "ongoing". <http://tasks-at-hand.com/resources/statuses/done> a tac:Status; mu:uuid "wellknown-status-done"; dct:title "done". } }
使用Turtle文件在默认图中插入数据
创建Turtle迁移文件(如./config/migrations/20160808225103-statuses.ttl),示例内容:
turtle@prefix dct: <http://purl.org/dc/terms/> . @prefix tac: <http://tasks-at-hand.com/vocabularies/core/> . @prefix mu: <http://mu.semte.ch/vocabularies/core/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . <http://tasks-at-hand.com/resources/statuses/not_started> a tac:Status; mu:uuid "wellknown-status-not_started"; dct:title "not started". <http://tasks-at-hand.com/resources/statuses/ongoing> a tac:Status; mu:uuid "wellknown-status-ongoing"; dct:title "ongoing". <http://tasks-at-hand.com/resources/statuses/done> a tac:Status; mu:uuid "wellknown-status-done"; dct:title "done".
默认情况下,Turtle数据将导入到图<http://mu.semte.ch/application>中。
使用Turtle文件在特定图中插入数据(实验性)
创建与Turtle文件同名的.graph文件(如20160808225103-statuses.graph),文件内容为目标图名称:
http://mu.semte.ch/graphs/custom-graph
迁移的命名和组织
[Unix时间戳]-[描述].sparql或.ttl(如20200329140538-replace-schema-name-with-foaf-name.sparql)/data/migrations目录(可通过卷映射),支持子文件夹,执行状态仅与文件名相关,与路径无关执行保证
数据库中的迁移管理
迁移完成状态存储在MU_APPLICATION_GRAPH(默认:<http://mu.semte.ch/application>)中,每条记录为类型muMigr:Migration的资源,包含:
muMigr:filename:迁移文件名muMigr:executedAt:执行完成时间戳muMigr: <http://mu.semte.ch/vocabularies/migrations/>)配置
支持通过环境变量配置:
BATCH_SIZE:Turtle迁移的单次插入三元组数量(默认:***)MINIMUM_BATCH_SIZE:批处理大小下限,低于此值时报错(默认:100)COUNT_BATCH_SIZE:单次从数据库查询的已执行迁移数量(默认:***)大型数据集和批处理大小
三元组存储通常有单次请求数据量限制,服务通过批处理拆分大型数据集。配置BATCH_SIZE控制单次插入量,失败时自动减半重试,直至达到MINIMUM_BATCH_SIZE。数据先导入临时图,成功后通过SPARQL Graph查询合并到目标图,确保完整性。
与mu-authorization配合使用(实验性)
可与mu-authorization集成,服务会添加mu-auth-sudo头以提升权限执行迁移。此功能为实验性,欢迎反馈以改进。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务