Neatbo.

本地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不改。

与示例字节匹配的独立Schema
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行或节点,成功下载包含完整结果;失败没有部分结果。

当前支持预算
任务输入附加预算
Protobufbinary2 MiB / 编码文本6 MiB;Schema1 MiBwire与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、轴顺序后再跑。
  • 超出工作预算时,仅在不改变数据集含义的前提下分区;改扩展名不会改变支持范围。

参考资料

本分类工具使用说明

展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。

按Schema解码Protobuf消息使用独立proto2/proto3 Schema和明确消息类型检查二进制Protobuf,保留64位整数、字段存在性和未知wire记录。

排查已有Schema的消息字节,不猜字段含义。解码报告区分最终值、显式字段存在性、默认值和wire出现记录,并保留原始二进制下载用于核对。

操作步骤

  1. 选择二进制文件,或选择hex/base64并粘贴字节编码。
  2. 粘贴确切的原始.proto,填写完整消息类型。
  3. 比较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。
打开按Schema解码Protobuf消息 →
Avro写入与读取Schema兼容检查检查两份本地Avro JSON Schema的双向读取兼容性,区分类型提升、别名、默认值与不兼容原因。

明确谁写数据、谁读取,再检查两种方向。合法但不兼容的Schema会生成完整报告,帮助确认字段新增、改名与类型变化的影响。

操作步骤

  1. 提供原始写入Schema和目标读取Schema。
  2. 先检查写入→读取,再检查反向;查看false结果的底层解析原因。
  3. 确认本工具支持边界与业务的数据值约束,再下载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。
打开Avro写入与读取Schema兼容检查 →
离线JSON-LD展开与压缩使用内联上下文或用户提供的本地URL映射展开、压缩JSON-LD 1.1,不请求远程文档。

查看JSON-LD文档实际指向的完整IRI,或用选定上下文压缩展开数据。所有远程上下文均由你在本地提供;处理后可核对节点、上下文加载数量并下载结果。

操作步骤

  1. 打开或粘贴JSON-LD对象、数组,选择展开或压缩。
  2. 在辅助JSON信封中提供精确URL对应的本地上下文;压缩时加入compactContext。需要解析相对IRI时显式设置文档基准。
  3. 核对节点数量、所用本地映射和空结果,再下载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;超限时整次拒绝,不输出部分文件。
打开离线JSON-LD展开与压缩 →
RDF数据集规范化比较使用RDFC-1.0比较两份本地RDF N-Quads,识别空白节点重命名,并保留命名图。

判断两份RDF导出是否只是空白节点标签不同。分别下载规范化数据集,查看两个规范行集合之间的新增和删除。

操作步骤

  1. 两侧粘贴严格N-Quads,或打开左侧本地导出并粘贴右侧内容。
  2. 运行规范化比较,核对等价状态、去重quad数及新增、删除数量。
  3. 下载左右规范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下载完整。
打开RDF数据集规范化比较 →
GeoJSON坐标系重投影在显式WGS84经纬度与Web Mercator之间重投影严格二维GeoJSON,保留Feature元数据与多边形孔洞。

把本地几何转成下一应用需要的坐标系。显式选择源、目标CRS,核对轴顺序与有效区域,再下载保留Feature ID和属性的GeoJSON。

操作步骤

  1. 打开严格二维GeoJSON,选择已知源CRS和所需目标CRS。
  2. 检查轴顺序、有效区域及坐标预览;需要移除未支持边界或第三坐标时先单独保存。
  3. 下载重投影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及轴单位。
打开GeoJSON坐标系重投影 →

本文相关工具

按Schema解码Protobuf消息 →使用独立proto2/proto3 Schema和明确消息类型检查二进制Protobuf,保留64位整数、字段存在性和未知wire记录。Avro写入与读取Schema兼容检查 →检查两份本地Avro JSON Schema的双向读取兼容性,区分类型提升、别名、默认值与不兼容原因。离线JSON-LD展开与压缩 →使用内联上下文或用户提供的本地URL映射展开、压缩JSON-LD 1.1,不请求远程文档。RDF数据集规范化比较 →使用RDFC-1.0比较两份本地RDF N-Quads,识别空白节点重命名,并保留命名图。GeoJSON坐标系重投影 →在显式WGS84经纬度与Web Mercator之间重投影严格二维GeoJSON,保留Feature元数据与多边形孔洞。