On 9/13/22 5:43 AM, 'John Dziurlaj' via cdf-ballot-styles wrote:
> I want to report that we have updated the BallotDefinition GitHub with
> example
> <
https://github.com/usnistgov/BallotDefinition/tree/examples/examples>
> files using the latest version of the CDF schemas. Additionally, we now
> have examples in both XML and JSON.
Thanks for adding these! It will help in the discussions. I realize they
are excerpts, so not indended to be the complete match to the PDF, but
adding the PDF is helpful.
Some comments on what I noticed in physical_ballot_def_1.json
The BallotFormat[0].ExternalIdentifier[].Type is "stable", not a valid
enumeration. Do you mean "local-level"? Fine to use "stable" if it's in
the enumeration with a definition.
The OptionPosition used to have Indicator (in the 8/31 review) but now
that is removed. OptionPosition is now correctly identified as a
BoundedObject, but the association with a shape is now lost. The Class
Geometry says it is for associating with OptionPosition. But the shape
IDs are not reference Do you mean to add GeometryId: "g-1" to
OptionPosition?
Seems like Shape should be required with 1 instance to define the shape
of the bounded object.
The Contest[0].Name seems a little weird, probably should be "President
and Vice President of the United States". (Also nice to make an example
that does not derive from an IBM 026 keypunch.) If this name is supposed
to be a shorter heading, then "US President/Vice-President". Since it's
a 2 ticket office (thanks for that example), implying that in the
heading is good.
The Election.ElectionScopeID seems wrong. The physical_ballot_def_1.pdf
shows "Williams County", so I would say an appropriate example is
"gpu-williams-county".
How about capitalizing names properly in examples, instead of using 026
keypunch text, e.g. "STATE OF OHIO"? Don't suggest an EMS should be
implemented with SHOUTING improper capitalization.
Since you have a PDF, it would be useful to add the
BallotStyle[0].ImageUri[0].Content:"physical_ballot_def_1.pdf". A URI as
a file name is assumed to be in the same directory as the json. A github
URL would be another option. I am assuming the coordinates match within
the PDF, and sheets are in pages front to back.
There are no fiducials to align a scan defined. In the PDF, there are
rectangles around the three columns with a border that could be used as
a fiducial. A shape for the Extent on a PhysicalContest could include a
stroke width to match the rectangle around the contest. There is a
separator that is thicker between contests, but could be represented by
an overlapping fiducial that is a filled rectangle.
There is no defined way in the spec to identify the ballot style on a
scan. One way to do this is create an extent on the sheet that is a
consistent location to identify the extent of the reporting unit. The
area in the upper right of the ballot with "Precinct 001-BRA" is
presumably the same, though the phrase is right aligned so "Precinct
111-III" might have "Precinct" in a shifted location. The scanner can
use pixel extracts from the PDF to match the reporting unit, and in-turn
the ballot style associated with that unit.
It is helpful to be able to put an extent on the PhysicalContestOption,
similar to PhysicalContest.Extent[] so the whole option area including
the candidate name is identified.
Some comments on physical_ballot_def_2.json:
It's not clear (without measurements) where the FiducialMark applies.
It's too much work to put all of them in the example, but maybe the 4
corners? I think in the physical_ballot_def_2.pdf the narrow vs wide
fiducials code the precinct and in-turn ballot style. The reporting unit
identification extent could group the fiducials for a match. (I wonder
what the numbers are next to the fat fiducials.)
Same comment as above, we need a GeometryId (or better ShapeID) in the
OptionPosition to identify the oval shape and stroke width. On my
ballots, the oval is in red ink, presumably so scanners can use red
light (detect green/blue ink).
Comments in physical_ballot_def_3.json:
The Candidate.BallotName is full of inappropriate formatting characters,
\n and \t. It should be "Edward FitzGerald and Sharen Swartz Neuhardt"
not "Edward FitzGerald and Sharen\n\t\t\t\t\t\t\t\t\tSwartz Neuhardt".
This is an illustration of an error/bug, and could indicate the JSON be
flagged as invalid. This reminds me of times past when MS-Word users
used spaces to wrap and align words instead of using paragraphs.
> Several substantive changes to the model have occurred:
>
> * The class Geometry is now called Shape. This new name reflects the
> narrower usage of the class (i.e. for associating a shape appearing
> on parts of the ballot with its meaning)
Seems that you only partly change the name of the class, as "Geometry"
is still a top-level object, presumably so it can be referenced by ID.
> * The classes ending in *Selection have been renamed *Option. This is
> a to better distinguish an /option for selection/ and a /voted
> selection/.
Sounds good to me.
> * Documentation has been updated for completeness and clarity.
>