digraph GVmap { label = "\n\nsourcedm data model" rankdir=TB node [ shape=tab style=filled ] subgraph cluster_packages { label="Model" rankdir=TB style=filled fillcolor="/set312/1" "source" [ URL="#source" label = "source" fillcolor="/set312/2" ] ; "crossmatchedMeassurements" [ URL="#crossmatchedMeassurements" label = "crossmatchedMeassurements" fillcolor="/set312/3" ] ; "individualMeasurements" [ URL="#individualMeasurements" label = "individualMeasurements" fillcolor="/set312/4" ] ; "nameResolver" [ URL="#nameResolver" label = "nameResolver" fillcolor="/set312/5" ] ; "coordsys_tessel" [ URL="#coordsys_tessel" label = "coordsys_tessel" fillcolor="/set312/6" ] ; "ds" [ URL="#ds" label = "ds" fillcolor="/set312/7" ] ; "photometry" [ URL="#photometry" label = "photometry" fillcolor="/set312/8" ] ; "ivoa" [ URL="#ivoa" label = "ivoa" fillcolor="/set312/9" ] ; } node [ shape=record fontsize=8 style=filled] "sourcedm:source.Source" [ URL="#source.Source" label = "{source/Source|+name : sourcedm:ivoa.string\l+position : sourcedm:coordsys_tessel.Position2D\l}" fillcolor="/set312/2" ] ; "sourcedm:source.CrossmatchedSource" [ URL="#source.CrossmatchedSource" label = "{source/CrossmatchedSource}" fillcolor="/set312/2" ] ; "sourcedm:crossmatchedMeassurements.RadialPosition" [ URL="#crossmatchedMeassurements.RadialPosition" label = "{crossmatchedMeassurements/RadialPosition|+parallax : sourcedm:ivoa.RealQuantity\l+distance : sourcedm:ivoa.RealQuantity\l}" fillcolor="/set312/3" ] ; "sourcedm:crossmatchedMeassurements.ProperMotion" [ URL="#crossmatchedMeassurements.ProperMotion" label = "{crossmatchedMeassurements/ProperMotion|+muCoord1 : sourcedm:ivoa.RealQuantity\l+muCoord2 : sourcedm:ivoa.RealQuantity\l+totalProperMotion : sourcedm:ivoa.RealQuantity\l}" fillcolor="/set312/3" ] ; "sourcedm:individualMeasurements.RadialMotion" [ URL="#individualMeasurements.RadialMotion" label = "{individualMeasurements/RadialMotion|+radialVelocity : sourcedm:ivoa.RealQuantity\l+redshift : sourcedm:ivoa.RealQuantity\l}" fillcolor="/set312/4" ] ; "sourcedm:individualMeasurements.SourcePosition" [ URL="#individualMeasurements.SourcePosition" label = "{individualMeasurements/SourcePosition|+parallax : sourcedm:ivoa.RealQuantity\l+distance : sourcedm:ivoa.RealQuantity\l}" fillcolor="/set312/4" ] ; "sourcedm:nameResolver.ResolvedNameAlias" [ URL="#nameResolver.ResolvedNameAlias" label = "{nameResolver/ResolvedNameAlias|+alias : sourcedm:ivoa.string\l}" fillcolor="/set312/5" ] ; "sourcedm:nameResolver.ResolvedName" [ URL="#nameResolver.ResolvedName" label = "{nameResolver/ResolvedName|+identifier : sourcedm:ivoa.string\l}" fillcolor="/set312/5" ] ; "sourcedm:coordsys_tessel.Position2D" [ URL="#coordsys_tessel.Position2D" label = "{coordsys_tessel/Position2D}" fillcolor="/set312/6" ] ; "sourcedm:coordsys_tessel.CoordFrame" [ URL="#coordsys_tessel.CoordFrame" label = "{coordsys_tessel/CoordFrame}" fillcolor="/set312/6" ] ; "sourcedm:ds.DataSet" [ URL="#ds.DataSet" label = "{ds/DataSet}" fillcolor="/set312/7" ] ; "sourcedm:photometry.PhotometryPoint" [ URL="#photometry.PhotometryPoint" label = "{photometry/PhotometryPoint|+magnitude : sourcedm:ivoa.RealQuantity\l}" fillcolor="/set312/8" ] ; "sourcedm:photometry.PhotCal" [ URL="#photometry.PhotCal" label = "{photometry/PhotCal}" fillcolor="/set312/8" ] ; "sourcedm:ivoa.real"[ URL="#ivoa.real" label = "{<<primitive type>>\nivoa/real}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.datetime"[ URL="#ivoa.datetime" label = "{<<primitive type>>\nivoa/datetime}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.anyURI"[ URL="#ivoa.anyURI" label = "{<<primitive type>>\nivoa/anyURI}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.string"[ URL="#ivoa.string" label = "{<<primitive type>>\nivoa/string}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.nonnegativeInteger"[ URL="#ivoa.nonnegativeInteger" label = "{<<primitive type>>\nivoa/nonnegativeInteger}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.boolean"[ URL="#ivoa.boolean" label = "{<<primitive type>>\nivoa/boolean}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.integer"[ URL="#ivoa.integer" label = "{<<primitive type>>\nivoa/integer}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.rational"[ URL="#ivoa.rational" label = "{<<primitive type>>\nivoa/rational}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.complex"[ URL="#ivoa.complex" label = "{<<primitive type>>\nivoa/complex}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.Unit"[ URL="#ivoa.Unit" label = "{<<primitive type>>\nivoa/Unit}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.Quantity" [ URL="#ivoa.Quantity" label = "{<<datatype>>\nivoa/Quantity|+unit : sourcedm:ivoa.Unit\l}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.IntegerQuantity" [ URL="#ivoa.IntegerQuantity" label = "{<<datatype>>\nivoa/IntegerQuantity|+value : sourcedm:ivoa.integer\l}" fillcolor="/set312/9" ] ; "sourcedm:ivoa.RealQuantity" [ URL="#ivoa.RealQuantity" label = "{<<datatype>>\nivoa/RealQuantity|+value : sourcedm:ivoa.real\l}" fillcolor="/set312/9" ] ; edge [color="red", arrowtail="none", arrowhead="empty"] "sourcedm:source.CrossmatchedSource" -> "sourcedm:source.Source" ; "sourcedm:ivoa.anyURI" -> "sourcedm:ivoa.string" ; "sourcedm:ivoa.Unit" -> "sourcedm:ivoa.string" ; "sourcedm:ivoa.IntegerQuantity" -> "sourcedm:ivoa.Quantity" ; "sourcedm:ivoa.RealQuantity" -> "sourcedm:ivoa.Quantity" ; edge [color="blue", arrowhead="open", arrowtail="diamond",dir="both",fontsize="10"] "sourcedm:source.Source" -> "sourcedm:photometry.PhotometryPoint" [headlabel="1",label="photometryPoint",labelfontsize=10] ; "sourcedm:source.CrossmatchedSource" -> "sourcedm:source.Source" [headlabel="0..*",label="source",labelfontsize=10] ; "sourcedm:nameResolver.ResolvedName" -> "sourcedm:nameResolver.ResolvedNameAlias" [headlabel="0..*",label="resolvedNameAlias",labelfontsize=10] ; edge [color="green", arrowhead="open", arrowtail="none"] "sourcedm:source.Source" -> "sourcedm:individualMeasurements.RadialMotion" [headlabel="1",label="radialMotion",labelfontsize=10] ; "sourcedm:source.Source" -> "sourcedm:individualMeasurements.SourcePosition" [headlabel="1",label="sourcePosition",labelfontsize=10] ; "sourcedm:source.Source" -> "sourcedm:coordsys_tessel.CoordFrame" [headlabel="1",label="coordFrame",labelfontsize=10] ; "sourcedm:source.Source" -> "sourcedm:ds.DataSet" [headlabel="0..1",label="dataSet",labelfontsize=10] ; "sourcedm:source.CrossmatchedSource" -> "sourcedm:crossmatchedMeassurements.RadialPosition" [headlabel="1",label="radialPosition",labelfontsize=10] ; "sourcedm:source.CrossmatchedSource" -> "sourcedm:crossmatchedMeassurements.ProperMotion" [headlabel="1",label="properMotion",labelfontsize=10] ; "sourcedm:source.CrossmatchedSource" -> "sourcedm:nameResolver.ResolvedName" [headlabel="1",label="resolvedName",labelfontsize=10] ; "sourcedm:photometry.PhotometryPoint" -> "sourcedm:photometry.PhotCal" [headlabel="1",label="photCal",labelfontsize=10] ; }