private void appendEvent(Span.Builder span, String eventName, SpanAttachedEvent event) {
        span.addAnnotation(
            TimeUnit.SECONDS.toMicros(event.getStartTime().getSeconds()) + TimeUnit.NANOSECONDS.toMicros(event.getStartTime().getNanos()),
            "Start " + eventName);
        span.addAnnotation(
            TimeUnit.SECONDS.toMicros(event.getEndTime().getSeconds()) + TimeUnit.NANOSECONDS.toMicros(event.getEndTime().getNanos()),
            "Finished " + eventName);

        final Yaml yaml = new Yaml();
        if (event.getSummaryList().size() > 0) {
            final Map<String, Long> summaries = event.getSummaryList().stream().collect(Collectors.toMap(
                KeyIntValuePair::getKey, KeyIntValuePair::getValue, (s1, s2) -> s1));
            String summary = yaml.dumpAs(summaries, Tag.MAP, DumperOptions.FlowStyle.AUTO);
            span.putTag(formatEventTagKey(eventName + ".summary"), summary);
        }
        if (event.getTagsList().size() > 0) {
            final Map<String, String> tags = event.getTagsList().stream().collect(Collectors.toMap(
                KeyStringValuePair::getKey, KeyStringValuePair::getValue, (s1, s2) -> s1));
            String summary = yaml.dumpAs(tags, Tag.MAP, DumperOptions.FlowStyle.AUTO);
            span.putTag(formatEventTagKey(eventName + ".tags"), summary);
        }
    }
Reference from zipkin2.server.internal.ZipkinQueryApiV2 for the API consistent.
oap-server/server-query-plugin/zipkin-query-plugin/src/main/java/org/apache/skywalking/oap/query/zipkin/handler/ZipkinQueryHandler.java