Schema.org 中的 LRMI 协作贡献:从 collab 元数据文件到 AlignmentObject 与 EducationalAudience 类

📅 发布时间:2026/10/7 21:19:06
Schema.org 中的 LRMI 协作贡献:从 collab 元数据文件到 AlignmentObject 与 EducationalAudience 类
知识图谱数据【免费下载链接】schemaorgSchema.org - schemas and supporting software项目地址https://gitcode.com/gh_mirrors/sc/schemaorg点击查看免费下载Schema.org 词汇表的演进离不开外部协作项目的贡献其中 LRMILearning Resource Metadata Initiative学习资源元数据倡议就是典型的代表它通过仓库中一份轻量的协作元数据文件data/collab/LRMIClass.md被登记为来源贡献方并为 Schema.org 带来了AlignmentObject、EducationalAudience两个教育领域核心类。本文将以data/collab/LRMIClass.md为骨架结合仓库内发布产物data/releases/下的 TTL 文件与解析软件software/SchemaTerms/sdocollaborators.py的源码实现完整讲解协作方元数据的文件格式、解析管线、发布链路与最终在 schema 数据中呈现的形态帮助读者理解并复用以同样机制扩展 Schema.org 词汇表。一、协作方collaborator机制概述Schema.org 是一个开放协作的词汇表项目其data/collab/目录下存放着一批协作方元数据文件每个文件对应一个为 Schema.org 贡献过术语的外部项目或工作组例如ActionCollabClass.md、Automotive_Ontology_Working_Group.md、FIBO.md、GoodRelationsClass.md、QAStackExchange.md以及本文主角LRMIClass.md。这些文件的核心作用有二登记来源归属声明某个 schema 类/属性源自哪个外部项目形成可追溯的出处链驱动页面渲染在生成 schema.org 术语页面时将协作方信息标题、链接、描述、致谢文本渲染进页面并在页面上列出该协作方贡献的术语清单。LRMIClass.md是这一机制的最小但完整的示例全部内容如下含前导元数据与两个内容区块--- img: https://www.dublincore.org/specifications/lrmi/images/LRMI_400w.png title: LRMI project url: http://lrmi.net --- DescriptionText.md --- AcknowledgementText.md This class is based on the work of the LRMI project, see lrmi.net for details.文件虽然只有 7 行却完整覆盖了协作方文件格式的全部要素元数据头、描述区块此处留空、致谢区块。围绕它仓库内同时存在发行版 TTL 中的对应来源声明与两类 LRMI 贡献类可展开的内容远比表面丰富。二、LRMIClass.md 文件格式详解2.1 前导元数据front matter文件前三行是key: value形式的属性声明用---与正文分隔。data/collab/下所有协作方文件统一采用该约定。LRMIClass.md声明了三个属性属性取值用途imgLRMI 项目标识图的外部 URL页面渲染时展示的协作方标识图titleLRMI project协作方的显示名称urlhttp://lrmi.net协作方主页链接从源码看这三个属性是解析器明确识别并消费的键在software/SchemaTerms/sdocollaborators.py的_parseDesc方法中self.url attributes.get(url)、self.title attributes.get(title)、self.img attributes.get(img)随后这三个键会从属性字典中移除attributes.pop(...)。如果文件中还出现其他未知属性键解析器会输出警告日志Unknown attributes found in collaborator file ...sdocollaborators.py。这提示协作方文件维护者目前只支持img、title、url三个元数据属性不要自行添加新键。2.2 内容区块section元数据之后用---加区块名的方式划分内容区块。LRMIClass.md声明了两个区块--- DescriptionText.md协作方描述文本本文件中该区块为空LRMIClass.md未提供独立描述直接以致谢文本为主体--- AcknowledgementText.md致谢/声明文本内容为 This class is based on the work of the LRMI project, see lrmi.net for details.本类基于 LRMI 项目的工作成果详见 lrmi.net。解析器通过正则INCLUDE_RE re.compile(R---\s([^.])\.md)识别区块名sdocollaborators.py并把DescriptionText.md名下的行解析为description、AcknowledgementText.md名下的行解析为acknowledgementsdocollaborators.py。两个区块名之外的未知区块同样会触发警告日志。这些文本最终经由localmarkdown.Markdown.parseLines做本地 Markdown 解析后进入collaborator对象。三、解析管线sdocollaborators.py 源码解读software/SchemaTerms/sdocollaborators.py是整个协作方机制的软件实现核心类是collaboratorsdocollaborators.py。其关键设计如下全局注册表COLLABORATORS与CONTRIBUTORS两个类级字典前者收录全部协作方后者仅收录被 schema 数据确认为贡献者contributor的协作方。loadCollaborators()通过paths.DefaultInputLayout().domain_files(paths.Domain.DATA, collab/*.md)扫描data/collab/*.md并逐个调用createCollaborator()加载sdocollaborators.pyLRMIClass.md即在此扫描范围内。URI 规约每个协作方对象的urirel形如/docs/collab/LRMIClassos.path.join(/docs, collab, ref)uri则为schema.constants.HOMEPAGE urirel。这意味着协作方在 schema 数据中拥有一个可解析的 URI 身份。贡献者判定loadContributors()使用 SPARQL 查询SELECT distinct ?val WHERE { [] schema:contributor ?val. }从 schema 图数据中找出所有schema:contributor指向的实体再调用createContributor()把匹配的协作方标记为 contributorsdocollaborators.py。也就是说一个协作方是否算贡献者取决于 schema 本体中是否存在指向其 URI 的schema:contributor三元组。术语反查getTerms()调用sdotermsource.SdoTermSource.getAcknowledgedTerms(self.uri)反查出所有在致谢acknowledgement中指向该 URI 的术语用于在术语页面上生成该协作方贡献了哪些词条的清单sdocollaborators.py。这套设计的直接推论是修改或新增data/collab/*.md后需要重新运行构建/发布流程让解析结果与生成页面、TTL 产物保持一致。四、LRMI 在 schema 本体中的落地两类贡献在发布产物data/releases/10.0/schema.ttl中LRMI 的来源声明被序列化为一个Organization节点schema.ttlhttp://www.w3.org/wiki/WebSchemas/SchemaDotOrgSources#source_LRMIClass a :Organization ; rdfs:label LRMIClass ; rdfs:comment This class is based on the work of the LRMI project, see lrmi.net for details. .注意其rdfs:comment与LRMIClass.md的AcknowledgementText.md区块文本完全一致——这正是致谢文本从 collab 元数据流入发行版本体的直接证据。同样的声明早在data/releases/3.0/schema.ttlschema.ttl中就已存在说明 LRMI 合作从早期版本延续至今。4.1 AlignmentObject学习资源与教育框架的对齐AlignmentObject是 LRMI 贡献的核心类定义于 schema.ttl:AlignmentObject a rdfs:Class ; rdfs:label AlignmentObject ; :source http://www.w3.org/wiki/WebSchemas/SchemaDotOrgSources#source_LRMIClass ; rdfs:comment An intangible item that describes an alignment between a learning resource and a node in an educational framework. Should not be used where the nature of the alignment can be described using a simple property, for example to express that a resource [[teaches]] or [[assesses]] a competency. ; rdfs:subClassOf :Intangible .关键信息点通过:source属性显式指向source_LRMIClass即声明本类源自 LRMI 项目语义为描述学习资源与教育框架中某个节点之间对齐关系的无形条目并给出明确的边界约束若对齐关系可以用简单属性表达如资源teaches教授或assesses评估某能力则不应使用本类作为Intangible的子类属于无形实体分支通常需要配合alignmentType、educationalFramework、targetName、targetUrl等属性一起使用来具体化对齐信息。4.2 EducationalAudience教育受众类型第二类 LRMI 贡献是EducationalAudience定义于 schema.ttl:EducationalAudience a rdfs:Class ; rdfs:label EducationalAudience ; :source http://www.w3.org/wiki/WebSchemas/SchemaDotOrgSources#source_LRMIClass ; rdfs:comment An EducationalAudience. ; rdfs:subClassOf :Audience .它作为Audience受众的子类存在用于标注内容面向的教育受众群体同样带有source_LRMIClass来源声明。它与AlignmentObject共同构成了 LRMI 在教育元数据标注上的双支柱一个描述内容与课程框架的对应关系一个描述内容的受教育对象。4.3 source 属性的全局传播source关联不仅存在于上述两个类的定义处还会随每次发布传播到所有格式产物中。例如在software/SchemaTerms/example-code/data/schemaorg-all-http.nt中可以看到source_LRMIClass以http://schema.org/source三元组形式出现的记录对齐AlignmentObject与EducationalAudience两类的声明与source_GoodRelationsClass、source_GoodRelationsTerms、FIBO等协作方来源并列。这意味着使用者可以从 NT/JSON-LD/RDF 等任一发布格式中反查某术语的出处。五、协作机制在软件层面的完整闭环LRMI 协作的完整生命周期贯穿了仓库的三个部分可归纳为元数据定义data/collab/LRMIClass.md以伪 Markdown 格式登记协作方身份与致谢文本解析与渲染sdocollaborators.py将文件解析为collaborator对象供页面模板templates/下的相关 J2 模板与构建脚本消费术语对象SdoTerm也维护acknowledgements列表sdoterm.py并通过 protobuf 定义的acknowledgements字段对外输出见 schematermsprotobuf.py发布物序列化构建后source_LRMIClass以rdfs:comment:source形式固化进各版本schema.ttl及衍生格式中。如果希望确认某个类是否由 LRMI 贡献最快的方式是在发布 TTL 中搜索source_LRMIClass关键字即能定位到AlignmentObject与EducationalAudience两条声明以及 LRMI 来源节点本身。六、如何基于该机制新增/维护协作方LRMIClass.md是最简洁的范本新增一个协作方文件只需三步在data/collab/下创建名称.md文件名为协作方的ref如FIBO.md、GLEIF.md头部按序声明img可选、title、url三个属性并以---与正文分隔正文按需声明--- DescriptionText.md与--- AcknowledgementText.md两个区块在对应区块下写入描述与致谢文本若两个区块都未提供内容解析器会将其视为空字符串处理。维护时需注意的约束属性键仅支持img、title、url多余键会触发Unknown attributes警告区块名仅支持DescriptionText.md与AcknowledgementText.md未知区块会触发Unknown sections警告若希望该协作方被计入CONTRIBUTORS贡献者列表并展示其贡献术语schema 数据中必须存在schema:contributor指向其 URI 的三元组修改文件后需重新构建发布产物保证data/releases/下的 TTL/JSON-LD/NT 与页面保持一致。结语data/collab/LRMIClass.md虽只有寥寥数行却是理解 Schema.org 外部协作机制的钥匙它展示了协作方元数据的最小完备结构其致谢文本被原样写入发行版本体其来源标识source_LRMIClass关联着AlignmentObject与EducationalAudience两个教育领域的实际类定义。结合 sdocollaborators.py 的解析实现与 schema.ttl 的序列化产物读者可以完整掌握外部项目 → collab 元数据 → 软件解析 → 发布本体的整条链路并据此为 Schema.org 贡献新的协作方与术语。赞分享知识图谱数据【免费下载链接】schemaorgSchema.org - schemas and supporting software项目地址https://gitcode.com/gh_mirrors/sc/schemaorg点击查看免费下载相关推荐PI0 模型昇腾 Atlas A2 分布式训练实战基于 LeRobot 的 LIBERO 训练全流程解析PI0 模型昇腾 Atlas A2 分布式训练实战基于 LeRobot 的 LIBERO 训练全流程解析 本文档系统讲解在 CANN 平台上将物理智能体基础模知识图谱数据文档标题使用祈使句或名词短语文档标题使用祈使句或名词短语 概述必选 简要说明功能用途、适用场景及核心价值 基本用法必选 提供最小化可用示例包含命令语法和输出效果 高级配置可CLI云原生interactive-coding-challenges 贡献指南从 Fork 到 Notebook 与单元测试的完整协作流程interactive coding challenges 贡献指南从 Fork 到 Notebook 与单元测试的完整协作流程 本篇技术指南围绕 CONTR示例工程教程上一篇ToolJet Text Input 文本输入组件完全指南属性、事件、校验、CSA 动作与样式配置下一篇Metabase Embedding SDKActionResultForSql 类型详解 —— 自定义 SQL Action 响应结果的结构、判别与前端消费创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考