digraph GVmap { label = "\n\ncoords_tessel data model" rankdir=TB node [ shape=tab style=filled ] subgraph cluster_packages { label="Model" rankdir=TB style=filled fillcolor="/set312/1" "domain" [ URL="#domain" label = "domain" fillcolor="/set312/2" ] ; subgraph cluster_domain { label="Package: domain" style=filled fillcolor="/set312/2" "domain.generic" [ URL="#domain.generic" label = "generic" fillcolor="/set312/3" ] ; "domain.spatial" [ URL="#domain.spatial" label = "spatial" fillcolor="/set312/4" ] ; "domain.spectral" [ URL="#domain.spectral" label = "spectral" fillcolor="/set312/5" ] ; "domain.temporal" [ URL="#domain.temporal" label = "temporal" fillcolor="/set312/6" ] ; "domain.polarization" [ URL="#domain.polarization" label = "polarization" fillcolor="/set312/7" ] ; } "dtypes" [ URL="#dtypes" label = "dtypes" fillcolor="/set312/8" ] ; } node [ shape=record fontsize=8 style=filled] "coords_tessel:DerivedCoordinate" [ URL="#DerivedCoordinate" label = "{DerivedCoordinate}" fillcolor="/set312/1" ] ; "coords_tessel:domain.generic.Measurement" [ URL="#domain.generic.Measurement" label = "{domain/generic/Measurement|+coord : coordsys:domain.generic.GenericCoord\l}" fillcolor="/set312/3" ] ; "coords_tessel:domain.generic.Error" [ URL="#domain.generic.Error" label = "{domain/generic/Error}" fillcolor="/set312/3" ] ; "coords_tessel:domain.generic.StatisticalError" [ URL="#domain.generic.StatisticalError" label = "{domain/generic/StatisticalError|+statError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/3" ] ; "coords_tessel:domain.generic.SystematicError" [ URL="#domain.generic.SystematicError" label = "{domain/generic/SystematicError|+sysError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/3" ] ; "coords_tessel:domain.generic.RandomError" [ URL="#domain.generic.RandomError" label = "{domain/generic/RandomError|+randError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/3" ] ; "coords_tessel:domain.generic.Resolution" [ URL="#domain.generic.Resolution" label = "{domain/generic/Resolution|+res : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/3" ] ; "coords_tessel:domain.spatial.Position" [ URL="#domain.spatial.Position" label = "{domain/spatial/Position}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Position1D" [ URL="#domain.spatial.Position1D" label = "{domain/spatial/Position1D|+coord : coordsys:domain.spatial.SpatialCoord\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Position2D" [ URL="#domain.spatial.Position2D" label = "{domain/spatial/Position2D|+coord : coordsys:domain.spatial.SpatialCoord\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Position3D" [ URL="#domain.spatial.Position3D" label = "{domain/spatial/Position3D|+coord : coordsys:domain.spatial.SpatialCoord\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Error1D" [ URL="#domain.spatial.Error1D" label = "{domain/spatial/Error1D}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.StatisticalError1D" [ URL="#domain.spatial.StatisticalError1D" label = "{domain/spatial/StatisticalError1D|+statError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.SystematicError1D" [ URL="#domain.spatial.SystematicError1D" label = "{domain/spatial/SystematicError1D|+sysError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.RandomError1D" [ URL="#domain.spatial.RandomError1D" label = "{domain/spatial/RandomError1D|+randError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Resolution1D" [ URL="#domain.spatial.Resolution1D" label = "{domain/spatial/Resolution1D|+res : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Error2D" [ URL="#domain.spatial.Error2D" label = "{domain/spatial/Error2D}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.StatisticalError2D" [ URL="#domain.spatial.StatisticalError2D" label = "{domain/spatial/StatisticalError2D|+statError : coords_tessel:dtypes.Uncertainty2D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.SystematicError2D" [ URL="#domain.spatial.SystematicError2D" label = "{domain/spatial/SystematicError2D|+sysError : coords_tessel:dtypes.Uncertainty2D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.RandomError2D" [ URL="#domain.spatial.RandomError2D" label = "{domain/spatial/RandomError2D|+randError : coords_tessel:dtypes.Uncertainty2D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Resolution2D" [ URL="#domain.spatial.Resolution2D" label = "{domain/spatial/Resolution2D|+res : coords_tessel:dtypes.Uncertainty2D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Error3D" [ URL="#domain.spatial.Error3D" label = "{domain/spatial/Error3D}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.StatisticalError3D" [ URL="#domain.spatial.StatisticalError3D" label = "{domain/spatial/StatisticalError3D|+statError : coords_tessel:dtypes.Uncertainty3D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.SystematicError3D" [ URL="#domain.spatial.SystematicError3D" label = "{domain/spatial/SystematicError3D|+sysError : coords_tessel:dtypes.Uncertainty3D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.RandomError3D" [ URL="#domain.spatial.RandomError3D" label = "{domain/spatial/RandomError3D|+randError : coords_tessel:dtypes.Uncertainty3D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Resolution3D" [ URL="#domain.spatial.Resolution3D" label = "{domain/spatial/Resolution3D|+res : coords_tessel:dtypes.Uncertainty3D\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spatial.Tile" [ URL="#domain.spatial.Tile" label = "{domain/spatial/Tile|+skyindex : coordsys:SkyIndex\l}" fillcolor="/set312/4" ] ; "coords_tessel:domain.spectral.DerivedSpectralCoordinate" [ URL="#domain.spectral.DerivedSpectralCoordinate" label = "{domain/spectral/DerivedSpectralCoordinate|+coord : coordsys:domain.spectral.SpectralCoord\l}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.Energy" [ URL="#domain.spectral.Energy" label = "{domain/spectral/Energy}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.Frequency" [ URL="#domain.spectral.Frequency" label = "{domain/spectral/Frequency}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.Wavelength" [ URL="#domain.spectral.Wavelength" label = "{domain/spectral/Wavelength}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.Error" [ URL="#domain.spectral.Error" label = "{domain/spectral/Error}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.StatisticalError" [ URL="#domain.spectral.StatisticalError" label = "{domain/spectral/StatisticalError|+statError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.SystematicError" [ URL="#domain.spectral.SystematicError" label = "{domain/spectral/SystematicError|+sysError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.RandomError" [ URL="#domain.spectral.RandomError" label = "{domain/spectral/RandomError|+randError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/5" ] ; "coords_tessel:domain.spectral.Resolution" [ URL="#domain.spectral.Resolution" label = "{domain/spectral/Resolution|+res : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/5" ] ; "coords_tessel:domain.temporal.Time" [ URL="#domain.temporal.Time" label = "{domain/temporal/Time|+coord : coordsys:domain.temporal.TimeCoord\l}" fillcolor="/set312/6" ] ; "coords_tessel:domain.temporal.Error" [ URL="#domain.temporal.Error" label = "{domain/temporal/Error}" fillcolor="/set312/6" ] ; "coords_tessel:domain.temporal.StatisticalError" [ URL="#domain.temporal.StatisticalError" label = "{domain/temporal/StatisticalError|+statError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/6" ] ; "coords_tessel:domain.temporal.SystematicError" [ URL="#domain.temporal.SystematicError" label = "{domain/temporal/SystematicError|+sysError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/6" ] ; "coords_tessel:domain.temporal.RandomError" [ URL="#domain.temporal.RandomError" label = "{domain/temporal/RandomError|+randError : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/6" ] ; "coords_tessel:domain.temporal.Resolution" [ URL="#domain.temporal.Resolution" label = "{domain/temporal/Resolution|+res : coords_tessel:dtypes.Uncertainty1D\l}" fillcolor="/set312/6" ] ; "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" [ URL="#domain.polarization.DerivedPolarizationCoordinate" label = "{domain/polarization/DerivedPolarizationCoordinate}" fillcolor="/set312/7" ] ; "coords_tessel:domain.polarization.Stokes" [ URL="#domain.polarization.Stokes" label = "{domain/polarization/Stokes|+coord : coordsys:domain.polarization.PolStokesCoord\l}" fillcolor="/set312/7" ] ; "coords_tessel:domain.polarization.Circular" [ URL="#domain.polarization.Circular" label = "{domain/polarization/Circular|+coord : coordsys:domain.polarization.PolCircularCoord\l}" fillcolor="/set312/7" ] ; "coords_tessel:domain.polarization.Linear" [ URL="#domain.polarization.Linear" label = "{domain/polarization/Linear|+coord : coordsys:domain.polarization.PolLinearCoord\l}" fillcolor="/set312/7" ] ; "coords_tessel:domain.polarization.Vector" [ URL="#domain.polarization.Vector" label = "{domain/polarization/Vector|+coord : coordsys:domain.polarization.PolVectorCoord\l}" fillcolor="/set312/7" ] ; "coords_tessel:dtypes.Uncertainty" [ URL="#dtypes.Uncertainty" label = "{<<datatype>>\ndtypes/Uncertainty}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Uncertainty1D" [ URL="#dtypes.Uncertainty1D" label = "{<<datatype>>\ndtypes/Uncertainty1D}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Uncertainty2D" [ URL="#dtypes.Uncertainty2D" label = "{<<datatype>>\ndtypes/Uncertainty2D}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Uncertainty3D" [ URL="#dtypes.Uncertainty3D" label = "{<<datatype>>\ndtypes/Uncertainty3D}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Symmetrical1D" [ URL="#dtypes.Symmetrical1D" label = "{<<datatype>>\ndtypes/Symmetrical1D|+radius : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Asymmetrical1D" [ URL="#dtypes.Asymmetrical1D" label = "{<<datatype>>\ndtypes/Asymmetrical1D|+plus : ivoa:RealQuantity\l+minus : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Bounds1D" [ URL="#dtypes.Bounds1D" label = "{<<datatype>>\ndtypes/Bounds1D|+loLimit : ivoa:RealQuantity\l+hiLimit : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Symmetrical2D" [ URL="#dtypes.Symmetrical2D" label = "{<<datatype>>\ndtypes/Symmetrical2D|+radius : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Asymmetrical2D" [ URL="#dtypes.Asymmetrical2D" label = "{<<datatype>>\ndtypes/Asymmetrical2D|+plus : ivoa:RealQuantity\l+minus : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Bounds2D" [ URL="#dtypes.Bounds2D" label = "{<<datatype>>\ndtypes/Bounds2D|+loLimit : ivoa:RealQuantity\l+hiLimit : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Symmetrical3D" [ URL="#dtypes.Symmetrical3D" label = "{<<datatype>>\ndtypes/Symmetrical3D|+radius : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Asymmetrical3D" [ URL="#dtypes.Asymmetrical3D" label = "{<<datatype>>\ndtypes/Asymmetrical3D|+plus : ivoa:RealQuantity\l+minus : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Bounds3D" [ URL="#dtypes.Bounds3D" label = "{<<datatype>>\ndtypes/Bounds3D|+loLimit : ivoa:RealQuantity\l+hiLimit : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Ellipse" [ URL="#dtypes.Ellipse" label = "{<<datatype>>\ndtypes/Ellipse|+semiAxis : ivoa:RealQuantity\l+posAngle : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Ellipsoid" [ URL="#dtypes.Ellipsoid" label = "{<<datatype>>\ndtypes/Ellipsoid|+semiAxis : ivoa:RealQuantity\l+posAngle : ivoa:RealQuantity\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Matrix" [ URL="#dtypes.Matrix" label = "{<<datatype>>\ndtypes/Matrix}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Matrix2x2" [ URL="#dtypes.Matrix2x2" label = "{<<datatype>>\ndtypes/Matrix2x2|+m11 : ivoa:real\l+m12 : ivoa:real\l+m21 : ivoa:real\l+m22 : ivoa:real\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.Matrix3x3" [ URL="#dtypes.Matrix3x3" label = "{<<datatype>>\ndtypes/Matrix3x3|+m11 : ivoa:real\l+m12 : ivoa:real\l+m13 : ivoa:real\l+m21 : ivoa:real\l+m22 : ivoa:real\l+m23 : ivoa:real\l+m31 : ivoa:real\l+m32 : ivoa:real\l+m33 : ivoa:real\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.CovarianceMatrix2D" [ URL="#dtypes.CovarianceMatrix2D" label = "{<<datatype>>\ndtypes/CovarianceMatrix2D|+matrix : coords_tessel:dtypes.Matrix2x2\l}" fillcolor="/set312/8" ] ; "coords_tessel:dtypes.CovarianceMatrix3D" [ URL="#dtypes.CovarianceMatrix3D" label = "{<<datatype>>\ndtypes/CovarianceMatrix3D|+matrix : coords_tessel:dtypes.Matrix3x3\l}" fillcolor="/set312/8" ] ; edge [color="red", arrowtail="none", arrowhead="empty"] "coords_tessel:domain.generic.Measurement" -> "coords_tessel:DerivedCoordinate" ; "coords_tessel:domain.generic.StatisticalError" -> "coords_tessel:domain.generic.Error" ; "coords_tessel:domain.generic.SystematicError" -> "coords_tessel:domain.generic.Error" ; "coords_tessel:domain.generic.RandomError" -> "coords_tessel:domain.generic.Error" ; "coords_tessel:domain.generic.Resolution" -> "coords_tessel:domain.generic.Error" ; "coords_tessel:domain.spatial.Position" -> "coords_tessel:DerivedCoordinate" ; "coords_tessel:domain.spatial.Position1D" -> "coords_tessel:domain.spatial.Position" ; "coords_tessel:domain.spatial.Position2D" -> "coords_tessel:domain.spatial.Position" ; "coords_tessel:domain.spatial.Position3D" -> "coords_tessel:domain.spatial.Position" ; "coords_tessel:domain.spatial.StatisticalError1D" -> "coords_tessel:domain.spatial.Error1D" ; "coords_tessel:domain.spatial.SystematicError1D" -> "coords_tessel:domain.spatial.Error1D" ; "coords_tessel:domain.spatial.RandomError1D" -> "coords_tessel:domain.spatial.Error1D" ; "coords_tessel:domain.spatial.Resolution1D" -> "coords_tessel:domain.spatial.Error1D" ; "coords_tessel:domain.spatial.StatisticalError2D" -> "coords_tessel:domain.spatial.Error2D" ; "coords_tessel:domain.spatial.SystematicError2D" -> "coords_tessel:domain.spatial.Error2D" ; "coords_tessel:domain.spatial.RandomError2D" -> "coords_tessel:domain.spatial.Error2D" ; "coords_tessel:domain.spatial.Resolution2D" -> "coords_tessel:domain.spatial.Error2D" ; "coords_tessel:domain.spatial.StatisticalError3D" -> "coords_tessel:domain.spatial.Error3D" ; "coords_tessel:domain.spatial.SystematicError3D" -> "coords_tessel:domain.spatial.Error3D" ; "coords_tessel:domain.spatial.RandomError3D" -> "coords_tessel:domain.spatial.Error3D" ; "coords_tessel:domain.spatial.Resolution3D" -> "coords_tessel:domain.spatial.Error3D" ; "coords_tessel:domain.spectral.DerivedSpectralCoordinate" -> "coords_tessel:DerivedCoordinate" ; "coords_tessel:domain.spectral.Energy" -> "coords_tessel:domain.spectral.DerivedSpectralCoordinate" ; "coords_tessel:domain.spectral.Frequency" -> "coords_tessel:domain.spectral.DerivedSpectralCoordinate" ; "coords_tessel:domain.spectral.Wavelength" -> "coords_tessel:domain.spectral.DerivedSpectralCoordinate" ; "coords_tessel:domain.spectral.StatisticalError" -> "coords_tessel:domain.spectral.Error" ; "coords_tessel:domain.spectral.SystematicError" -> "coords_tessel:domain.spectral.Error" ; "coords_tessel:domain.spectral.RandomError" -> "coords_tessel:domain.spectral.Error" ; "coords_tessel:domain.spectral.Resolution" -> "coords_tessel:domain.spectral.Error" ; "coords_tessel:domain.temporal.Time" -> "coords_tessel:DerivedCoordinate" ; "coords_tessel:domain.temporal.StatisticalError" -> "coords_tessel:domain.temporal.Error" ; "coords_tessel:domain.temporal.SystematicError" -> "coords_tessel:domain.temporal.Error" ; "coords_tessel:domain.temporal.RandomError" -> "coords_tessel:domain.temporal.Error" ; "coords_tessel:domain.temporal.Resolution" -> "coords_tessel:domain.temporal.Error" ; "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" -> "coords_tessel:DerivedCoordinate" ; "coords_tessel:domain.polarization.Stokes" -> "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" ; "coords_tessel:domain.polarization.Circular" -> "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" ; "coords_tessel:domain.polarization.Linear" -> "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" ; "coords_tessel:domain.polarization.Vector" -> "coords_tessel:domain.polarization.DerivedPolarizationCoordinate" ; "coords_tessel:dtypes.Uncertainty1D" -> "coords_tessel:dtypes.Uncertainty" ; "coords_tessel:dtypes.Uncertainty2D" -> "coords_tessel:dtypes.Uncertainty" ; "coords_tessel:dtypes.Uncertainty3D" -> "coords_tessel:dtypes.Uncertainty" ; "coords_tessel:dtypes.Symmetrical1D" -> "coords_tessel:dtypes.Uncertainty1D" ; "coords_tessel:dtypes.Asymmetrical1D" -> "coords_tessel:dtypes.Uncertainty1D" ; "coords_tessel:dtypes.Bounds1D" -> "coords_tessel:dtypes.Uncertainty1D" ; "coords_tessel:dtypes.Symmetrical2D" -> "coords_tessel:dtypes.Uncertainty2D" ; "coords_tessel:dtypes.Asymmetrical2D" -> "coords_tessel:dtypes.Uncertainty2D" ; "coords_tessel:dtypes.Bounds2D" -> "coords_tessel:dtypes.Uncertainty2D" ; "coords_tessel:dtypes.Symmetrical3D" -> "coords_tessel:dtypes.Uncertainty3D" ; "coords_tessel:dtypes.Asymmetrical3D" -> "coords_tessel:dtypes.Uncertainty3D" ; "coords_tessel:dtypes.Bounds3D" -> "coords_tessel:dtypes.Uncertainty3D" ; "coords_tessel:dtypes.Ellipse" -> "coords_tessel:dtypes.Uncertainty2D" ; "coords_tessel:dtypes.Ellipsoid" -> "coords_tessel:dtypes.Uncertainty3D" ; "coords_tessel:dtypes.Matrix2x2" -> "coords_tessel:dtypes.Matrix" ; "coords_tessel:dtypes.Matrix3x3" -> "coords_tessel:dtypes.Matrix" ; "coords_tessel:dtypes.CovarianceMatrix2D" -> "coords_tessel:dtypes.Uncertainty2D" ; "coords_tessel:dtypes.CovarianceMatrix3D" -> "coords_tessel:dtypes.Uncertainty3D" ; edge [color="blue", arrowhead="open", arrowtail="diamond",dir="both",fontsize="10"] "coords_tessel:domain.generic.Measurement" -> "coords_tessel:domain.generic.Error" [headlabel="0..*",label="error",labelfontsize=10] ; "coords_tessel:domain.spatial.Position" -> "coords_tessel:domain.spatial.Tile" [headlabel="0..1",label="tile",labelfontsize=10] ; "coords_tessel:domain.spatial.Position1D" -> "coords_tessel:domain.spatial.Error1D" [headlabel="0..*",label="error",labelfontsize=10] ; "coords_tessel:domain.spatial.Position2D" -> "coords_tessel:domain.spatial.Error2D" [headlabel="0..*",label="error",labelfontsize=10] ; "coords_tessel:domain.spatial.Position3D" -> "coords_tessel:domain.spatial.Error3D" [headlabel="0..*",label="error",labelfontsize=10] ; "coords_tessel:domain.spectral.DerivedSpectralCoordinate" -> "coords_tessel:domain.spectral.Error" [headlabel="0..*",label="error",labelfontsize=10] ; "coords_tessel:domain.temporal.Time" -> "coords_tessel:domain.temporal.Error" [headlabel="0..*",label="error",labelfontsize=10] ; }