| // |
| // Copyright 2019 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| // This file defines the input/output data format accepted by the differentially |
| // private algorithms. |
| |
| syntax = "proto2"; |
| |
| package differential_privacy; |
| |
| import "proto/confidence-interval.proto"; |
| |
| option java_package = "com.google.privacy.differentialprivacy.proto"; |
| |
| // Defining our own value type to restrict the acceptable data types. |
| // It would change as per the future extensions. |
| message ValueType { |
| oneof value { |
| int64 int_value = 1; |
| double float_value = 2; |
| string string_value = 3; |
| } |
| } |
| |
| // Output data produced by a differentially private algorithm. |
| message Output { |
| message Element { |
| // Diff. priv. result of the operation performed over the input data. |
| optional ValueType value = 1; |
| // DEPRECATED: Use Element.noise_confidence_interval instead. |
| optional ValueType error = 2 [deprecated = true]; |
| // Confidence interval of the noise added to the result |
| optional ConfidenceInterval noise_confidence_interval = 3; |
| } |
| repeated Element elements = 1; |
| |
| // Contains information about algorithm accuracy. |
| message ErrorReport { |
| // DEPRECATED: Use Element.noise_confidence_interval instead. |
| optional ConfidenceInterval noise_confidence_interval = 1 |
| [deprecated = true]; |
| optional BoundingReport bounding_report = 2; |
| } |
| // Error report is attached if either the noise confidence interval or the |
| // bounding report is available. |
| optional ErrorReport error_report = 3; |
| |
| reserved 2; |
| } |
| |
| // Accuracy information about results of automatic bounding algorithms. |
| // When ApproxBounds is called by bounded algorithms, the BoundingReport can |
| // be used to pass differentially private intermediate results to help users |
| // understand the accuracy implications of the output. |
| message BoundingReport { |
| // Lower and upper bounds produced by the ApproxBounds algorithm. |
| optional ValueType lower_bound = 1; |
| optional ValueType upper_bound = 2; |
| |
| // Noisy number of total inputs to the bounding algorithm. |
| optional double num_inputs = 3; |
| |
| // Noisy number of inputs lying outside the bounds. |
| optional double num_outside = 4; |
| } |