本地Schema与语义数据指南:Protobuf、Avro、JSON-LD、RDF及CRS
按原Schema检查Protobuf,比较Avro双向读取兼容性,离线处理JSON-LD、规范比较RDF,并按显式CRS重投影GeoJSON。核对含义、预算及接收端交付。
根据接收任务选择解释规则
已有二进制和.proto时,按明确消息类型检查Protobuf;已有写入和读取Schema时,比较Avro解析方向。字节检查与Schema兼容是不同交付:前者解释一条具体消息,后者判断两套声明能否按某方向读取。
需要查看术语IRI或用选定上下文压缩时,使用离线JSON-LD处理;需要判断完整N-Quads数据集是否仅临时空白节点标签不同,使用RDF规范化比较;几何需要在已支持的经纬度与Web Mercator之间转换时,使用显式CRS重投影。这是不同任务,JSON格式化不会替代它们。
| 任务 | 需提供 | 随结果保留 |
|---|---|---|
| 检查Protobuf消息 | 原始字节、独立proto2/proto3及完整消息类型 | 最终值、presence/未知wire报告与未改动original.bin |
| 比较Avro读取关系 | 明确标注的写入与读取JSON Schema | 双向兼容结果、底层解析原因及两份Schema |
| 检查JSON-LD术语 | 文档及内联上下文,或精确URL本地映射信封 | 展开/压缩JSON-LD、基准IRI选择和上下文映射 |
| 比较RDF导出 | 两份严格RDF 1.1 N-Quads | 两份规范N-Quads、算法及完整差异报告 |
| 重投影几何 | 严格二维GeoJSON和已知源、目标CRS | 转换GeoJSON、CRS/轴报告及原元数据 |
按原Schema检查Protobuf,保留存在性
提供二进制文件或严格hex/base64字节,在第二区粘贴独立proto2/proto3,明确消息路径。示例087b120161在demo.Event中表示seq=123和payload字节a;解码把seq写为字符串"123"、payload写为base64"YQ=="。无需也不会猜类型、抓取import或执行service。
看decoded最终值和presence,而不是把默认值当作已经传入。proto3 implicit零值可以省略,optional零值和oneof的零值仍保留存在性。重复singular子消息先合并,再对最终状态递归检查required;不同oneof成员以后者为准,同一个message成员的片段仍合并。未知字段、错误wire类型与closed enum未知值给出原始片段;原始binary完整保留,JSON不是无损重编码。
声明group、extensions、editions、service、外部import与features覆写不支持;保护标识符拒绝。proto2显式bytes默认值和不安全/非有限数值Schema默认值也拒绝。Schema只作数据,用户脚本或服务不会执行;受控内部decoder在同源独立HTTP Worker运行,页面CSP不改。
syntax = "proto3";
package demo;
message Event { int64 seq = 1; bytes payload = 2; }明确Avro谁写、谁读,再看双向结果
主输入是写入Schema,第二输入是目标读取Schema。int写入、long读取可提升;反向无法保证所有long值放入int。合法但不兼容得到完整false报告,JSON或Schema本身无效才失败。别把forward/backward标签当成不需指定参与者的结论。
新增读取字段需要合适default;读取方record/field aliases可处理支持范围内的改名,完整名称包含namespace。保留底层resolutionError,但不从错误字符串伪造精确字段路径。具名递归Schema受预算控制,不解析数据、IDL或Schema Registry历史策略。
固定avsc5.7.9,union字段默认值必须匹配第一分支;logicalType和保护标识符明确不支持。不要移除logicalType后把结果当成原Schema结论。比较是解析关系,不验证业务取值约束或Registry整体策略。
在本地提供每份JSON-LD上下文
粘贴对象或数组,选择展开、压缩,在辅助信封中提供contexts及可选compactContext。每个映射文档必须含@context,URL键需与请求的绝对HTTP(S) URL精确匹配;缺少映射即失败,工具不会访问该地址。压缩必须提供非null的compactContext。
例如,将name绑定到https://example.com/name的上下文会把name:"Alice"展开为该IRI下的@value:"Alice"。未绑定字段可能消失,空展开是有效结果;先检查术语绑定,不把空数组直接认作处理错误。相对IRI需要明确文档基准;本地文件名不会自动成为基准IRI。
{"contexts":{"https://example.com/context":{"@context":{"name":"https://example.com/name"}}},"compactContext":"https://example.com/context"}先比较RDF数据集,再解释差异
粘贴右侧数据集,左侧可粘贴或打开导出文件。两份都须为严格N-Quads,使用绝对IRI和受支持RDF 1.1项;RDF/XML或Turtle需先导出。保留命名图、数据类型和语言含义;重复quad按集合语义去重,语言标签规范为小写。
仅把_:alice改为_:person可能没有改变数据集。RDFC-1.0及SHA-256会给同构数据共同规范形式。若不等价,新增和删除比较的是各自规范化后的行集合;图修改可能改变许多空白节点标签,因此不是最小修改方案或持久节点对应。下载两份规范文件再审阅。
明确CRS与轴顺序
当前支持EPSG:4326经度、纬度(度)与EPSG:3857东距、北距(米)这一对,源、目标须不同。六位数字不能证明CRS,请向来源获取准确声明。未知CRS、三维/M坐标及有效域之外的坐标拒绝。
经度120、纬度30的Web Mercator约为[13358338.895192828,3503549.843504374]米。核对一个已知点,并按明确数值容差反向检查。保留几何、环、孔洞顺序及Feature ID、属性;元数据数字保留原token。已有bbox/crs成员拒绝,以免留下旧边界;主动移除前先单独保存。不提供UTM、基准面/网格变换或拓扑修复。
按预算处理并从错误恢复
这些预算约束输入和计算,不证明接收应用能正确使用下载。预览最多200行或节点,成功下载包含完整结果;失败没有部分结果。
| 任务 | 输入 | 附加预算 |
|---|---|---|
| Protobuf | binary2 MiB / 编码文本6 MiB;Schema1 MiB | wire与decoded20000值/32层;产物总10 MiB |
| Avro | 写入、读取Schema各1 MiB | 各10000JSON值/32层;双向完整报告 |
| JSON-LD | 文档1 MiB、信封1 MiB分别限制 | 各10000个JSON值/32层;32个映射URL/64次加载;结果10 MiB |
| RDF比较 | 总计2 MiB/10000条已解析quad | 空白分量256节点/10000次深度工作迭代/10秒期限 |
| CRS重投影 | 2 MiB/50000个严格二维位置 | 几何20层;结果10 MiB;纬度±85.0511287798066° |
- 保留原始数据及精确上下文、CRS选择,在接收应用重新打开下载。
- 按精确URL补齐JSON-LD映射、修正N-Quads语法,或修正源CRS、轴顺序后再跑。
- 超出工作预算时,仅在不改变数据集含义的前提下分区;改扩展名不会改变支持范围。
参考资料
- Protobuf按原Schema解码问题
需求来源:提问者已有.proto及coredump字节,需要读取内容;截断字节不能修复,不是需求规模证据。
- 本地Avro兼容检查问题
需求来源:提问者希望不用Registry,在本地核对新旧Schema有效性与读写方向,不证明特定Registry策略。
- Protocol Buffers wire编码
正确性来源,说明重复消息合并、oneof及编码规则;不是需求来源。
- Protocol Buffers字段存在性
正确性来源,区分explicit与implicit presence;不是需求来源。
- Apache Avro规范与Schema resolution
正确性来源;本站固定解析器支持首分支union default,不能把更新规范的其他默认值规则说成已支持。
- JSON-LD展开的真实提问
任务来源:正文中的上下文展开与预期不同问题;本地工作流是解释,不表示需求规模。
- RDF比较的真实提问
任务来源:正文比较来源为RDF/XML;本站需先导出N-Quads,不声称OWL推理。
- GeoJSON坐标的真实提问
任务来源:正文中的坐标接收问题;数字大小不能证明源CRS。
- W3C JSON-LD 1.1处理算法
正确性参考;本站范围、预算与恢复以当前工具正文为准,不作为需求证据。
- W3C RDF数据集规范化
正确性参考;本站范围、预算与恢复以当前工具正文为准,不作为需求证据。
- PROJ Web Mercator投影
正确性参考;本站范围、预算与恢复以当前工具正文为准,不作为需求证据。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
按Schema解码Protobuf消息使用独立proto2/proto3 Schema和明确消息类型检查二进制Protobuf,保留64位整数、字段存在性和未知wire记录。
排查已有Schema的消息字节,不猜字段含义。解码报告区分最终值、显式字段存在性、默认值和wire出现记录,并保留原始二进制下载用于核对。
操作步骤
- 选择二进制文件,或选择hex/base64并粘贴字节编码。
- 粘贴确切的原始.proto,填写完整消息类型。
- 比较decoded、presence、oneof和unknown记录;下载检查报告及原始字节,并用接收端Schema复核。
可调选项
- 主文本编码
- Hex · Base64
- 完整消息类型
- demo.Event
- 保护电子表格CSV单元格
- 默认开启
能力与限制
- 一份二进制文件最多2 MiB,或最多6 MiB的hex/base64主文本;解析出的字节仍最多2 MiB。编码中只允许ASCII空格、制表与换行作为分隔,hex不接受0x前缀,base64必须标准字符、正确填充与规范padding bits。选中文件优先,零字节可用于合法空消息。
- 第二输入区粘贴独立proto2/proto3 .proto,最多1 MiB、10000个反射描述JSON值/32层。明确提供完整消息路径,例如demo.Event;不猜类型、不fetch import。editions、service、extensions、声明group和features覆写明确不支持。具名路径/标识符最多4096字符;__proto__、constructor、prototype等保护片段拒绝,防止库改名或原型问题。
- 先检查wire长度、tag、varint、UTF-8字符串及递归预算,再解码。wire遍历最多32层/20000条,包括容器与packed元素;最终解码JSON最多20000值/32层。重复singular message先合并,再递归检查最终required;oneof后值与map重复键按Protobuf规则处理。无效Schema、截断或最终required缺失原子失败。
- 输出使用原始protobuf字段名,所有64位整数为十进制字符串,bytes为base64,enum为数值并另给名称/alias。float NaN、Infinity和负零使用明确字符串。默认值只报告,不填入缺席字段;proto3 implicit零值可能不出现在decoded中,但wire记录可显示曾传入。proto2显式bytes默认值及不安全/非有限数值Schema默认值明确不支持;proto3不得显式default。
- 未知字段、已知字段的错误wire类型、proto2 closed enum未知值给出原始offset/长度/base64。packed closed enum记录包含原始整段packed字段,也可能含已知值;wire出现记录可能属于后来覆盖或丢弃的数据。检查JSON不是无损重编码,原始二进制完整保留。所有成功产物总计最多10 MiB,表格只预览前200字段,JSON/CSV完整。Schema只作数据,不执行用户脚本/服务或下载代码;受控库decoder仅在同源独立HTTP Worker运行,保持页面CSP。
Avro写入与读取Schema兼容检查检查两份本地Avro JSON Schema的双向读取兼容性,区分类型提升、别名、默认值与不兼容原因。
明确谁写数据、谁读取,再检查两种方向。合法但不兼容的Schema会生成完整报告,帮助确认字段新增、改名与类型变化的影响。
操作步骤
- 提供原始写入Schema和目标读取Schema。
- 先检查写入→读取,再检查反向;查看false结果的底层解析原因。
- 确认本工具支持边界与业务的数据值约束,再下载JSON或CSV报告。
可调选项
- 保护电子表格CSV单元格
- 默认开启
能力与限制
- 写入Schema可粘贴或选择一份UTF-8文件,读取Schema填在第二输入区;每份最多1 MiB、10000个JSON值与32层。选中文件优先于主文本。重复键、非有限数与不安全整数拒绝,不静默舍入默认值。
- 支持primitive、record、enum、fixed、array、map、union和具名递归引用,检查写入→读取与读取→写入。完整名称包含namespace;读取方alias、字段默认值和数值提升按Avro解析规则处理。fixed size为1至1048576,结构遍历最多10000节点/32层。
- 固定avsc5.7.9解析器:union字段默认值必须属于第一分支,暂不接受较新规范中其他匹配分支的默认值。任何logicalType明确拒绝。名称、namespace、alias、字段名或enum symbol出现__proto__、constructor、prototype片段均明确不支持。
- 只比较Schema解析兼容性,不执行数据、IDL、Schema Registry策略、脚本或服务,也不请求网络。库内部受控resolver代码只在同源独立HTTP Worker执行;Blob Worker和页面内运行受生产CSP限制。底层错误文字不被伪装成精确字段路径。报告含完整双向结果与CSV。
离线JSON-LD展开与压缩使用内联上下文或用户提供的本地URL映射展开、压缩JSON-LD 1.1,不请求远程文档。
查看JSON-LD文档实际指向的完整IRI,或用选定上下文压缩展开数据。所有远程上下文均由你在本地提供;处理后可核对节点、上下文加载数量并下载结果。
操作步骤
- 打开或粘贴JSON-LD对象、数组,选择展开或压缩。
- 在辅助JSON信封中提供精确URL对应的本地上下文;压缩时加入compactContext。需要解析相对IRI时显式设置文档基准。
- 核对节点数量、所用本地映射和空结果,再下载JSON-LD。
可调选项
- 处理方式
- 展开 · 压缩
- 文档基准IRI(空值不提供)
- 按需要填写
- 保护CSV电子表格公式单元格
- 默认开启
能力与限制
- 单个UTF-8文件或粘贴文档最多1 MiB,辅助JSON信封最多1 MiB;两份输入各最多10,000个JSON值、32层。重复键、非有限数字和不安全整数拒绝,不静默改值。结果最多10 MiB、200,000个JSON值、64层。选中文件优先于粘贴文本。
- 固定JSON-LD 1.1处理模式。辅助输入格式为 {"contexts":{"https://example.com/context":{"@context":{...}}},"compactContext":{...}},仅支持这两个信封键。每个映射文档必须有@context;最多32个精确绝对HTTP(S) URL、64次本地加载。缺少映射即拒绝,无网络请求、重定向、注册中心、HTTP头或脚本执行。
- 可选展开或压缩;压缩必须提供非null的compactContext,也可引用已有本地映射URL。文档基准IRI可为空或绝对IRI;空值表示不提供文档基准。内联@base声明仍按JSON-LD规则生效。未绑定术语可能在展开时消失,空数组是有效结果。
- 保留JSON-LD处理语义,不保留原键顺序和数字写法。数字使用有限IEEE-754双精度;不安全整数拒绝。不提供RDF推理、SPARQL、签名校验或原文重建。预览最多200个顶层节点,JSON-LD下载包含完整结果。 CSV下载是完整顶层节点摘要,含序号、IRI和字段列表,独立最多10 MiB;超限时整次拒绝,不输出部分文件。
RDF数据集规范化比较使用RDFC-1.0比较两份本地RDF N-Quads,识别空白节点重命名,并保留命名图。
判断两份RDF导出是否只是空白节点标签不同。分别下载规范化数据集,查看两个规范行集合之间的新增和删除。
操作步骤
- 两侧粘贴严格N-Quads,或打开左侧本地导出并粘贴右侧内容。
- 运行规范化比较,核对等价状态、去重quad数及新增、删除数量。
- 下载左右规范N-Quads和比较报告。空白节点较多时把差异视为数据集比较,不直接作为最小修改方案。
可调选项
- 保护CSV电子表格公式单元格
- 默认开启
能力与限制
- 左侧单个UTF-8文件或粘贴文本,加右侧粘贴文本,总计最多2 MiB、10,000条已解析quad。允许空数据集。完全相同的quad按集合语义去重,并报告重复数量。选中左侧文件优先于粘贴文本。
- 仅接受严格RDF 1.1 N-Quads:绝对IRI、空白节点、类型/语言字面量和命名图。Turtle前缀、RDF/XML、RDF-star、相对IRI和非法quad角色拒绝。解析器把语言标签规范为小写;保留IRI、数据类型的含义。无推理或自动IRI对齐。
- 明确使用RDFC-1.0和SHA-256,不暗中替换算法。每个空白节点连通分量最多256个节点,深度工作迭代最多10,000次,处理期限10秒。超限时整次拒绝;可通过专用Worker与算法中止信号取消。规范化下载总计最多10 MiB。
- 新增与删除比较的是分别规范化后的行集合,不是最小编辑距离,也不表示持久空白节点身份。小幅图结构变化可能重排许多空白节点标签,扩大差异。此工具不认证RDF签名。预览最多200行差异,JSON及规范N-Quads下载完整。
GeoJSON坐标系重投影在显式WGS84经纬度与Web Mercator之间重投影严格二维GeoJSON,保留Feature元数据与多边形孔洞。
把本地几何转成下一应用需要的坐标系。显式选择源、目标CRS,核对轴顺序与有效区域,再下载保留Feature ID和属性的GeoJSON。
操作步骤
- 打开严格二维GeoJSON,选择已知源CRS和所需目标CRS。
- 检查轴顺序、有效区域及坐标预览;需要移除未支持边界或第三坐标时先单独保存。
- 下载重投影GeoJSON及CRS、坐标报告,在接收应用中使用明确的目标轴顺序。
可调选项
- 源坐标系
- EPSG:4326 — 经度、纬度(度) · EPSG:3857 — 东距、北距(米)
- 目标坐标系
- EPSG:4326 — 经度、纬度(度) · EPSG:3857 — 东距、北距(米)
- 保护CSV电子表格公式单元格
- 默认开启
能力与限制
- 单个UTF-8文件或粘贴GeoJSON最多2 MiB、50,000个二维坐标位置、20层几何嵌套。原始JSON及元数据另受200,000个值、128层解析预算限制。结果最多10 MiB。选中文件优先;预览最多200个位置。
- 仅支持EPSG:4326经度、纬度(度)↔ EPSG:3857东距、北距(米)。源与目标必须不同,不猜测CRS。经度限±180度、纬度限±85.0511287798066度;Web Mercator两轴限±20037508.342789244米。仅对端点1e-10度或1e-6米以内的计算舍入误差归一化。
- 支持七种非空二维几何、GeometryCollection、Feature、FeatureCollection;保留Feature的null几何和空FeatureCollection。线至少两个位置,闭合环至少四个。三维/M坐标、非有限或不安全整数坐标、几何外来成员,以及几何/Feature/FeatureCollection上的bbox、crs成员拒绝。请先单独保存这些边界,不会留下过时范围。
- Feature ID、属性与其他Feature级元数据保留原JSON数字token,含大整数和高精度小数;坐标计算使用有限IEEE-754双精度。保留几何、环、孔洞顺序,不修复拓扑或方向,不支持UTM、网格/基准面转换、地理编码或地图。附带报告显式记录源、目标CRS及轴单位。