]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.g2d.ontology/graph/G2D.pgraph
Add missing ValueType for G2D.Color
[simantics/platform.git] / bundles / org.simantics.g2d.ontology / graph / G2D.pgraph
index e055f69cce1aa5d401b849dfceeaddd68a397dfc..269f6a4fbe0a08f01f3dcbc0d0ed8d0c58b642d9 100644 (file)
-L0 = <http://www.simantics.org/Layer0-1.1>\r
-SEL = <http://www.simantics.org/SelectionView-1.2>\r
-\r
-G2D = <http://www.simantics.org/G2D-1.1> : L0.Ontology\r
-    @L0.new\r
-    L0.HasResourceClass "org.simantics.diagram.stubs.G2DResource"\r
-\r
-G2D.Point2D <T L0.Literal\r
-    @L0.assert L0.HasDataType $(Double[2])\r
-    L0.HasDescription "A double valued property describing a two-dimensional point (x,y) in euclidian coordinates."\r
-\r
-G2D.Rectangle2D <T L0.Literal\r
-    @L0.assert L0.HasDataType $(Double[4])\r
-    L0.HasDescription "A double valued property describing a two-dimensional rectangle (x,y,width,height) in euclidian coordinates."\r
-\r
-G2D.HasPoint2D <R L0.DependsOn\r
-    --> G2D.Point2D\r
-\r
-// FIXME: use proper datatypes\r
-G2D.Point2DArray <T L0.DoubleArray\r
-    L0.HasDescription "An array of Point2D property values (x,y) as consecutive double values."\r
-\r
-G2D.HasPoint2DArray <R L0.DependsOn\r
-    --> G2D.Point2DArray\r
-\r
-// FIXME: use proper datatypes\r
-G2D.Transform <T L0.Literal\r
-    @L0.assert L0.HasDataType $(Double[6])\r
-    L0.HasDescription "A 2x3 matrix of six doubles representing an affine 2D transformation in column-major order."\r
-\r
-G2D.Transform."i-0" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "Scale (X)"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-G2D.Transform."i-1" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "Shear (Y)"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-G2D.Transform."i-2" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "Shear (X)"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-G2D.Transform."i-3" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "Scale (Y)"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-G2D.Transform."i-4" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "X"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-G2D.Transform."i-5" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType\r
-    L0.HasLabel "Y"    \r
-    L0.HasSubliteralPredicate.Inverse G2D.Transform    \r
-\r
-G2D.HasTransform <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.Transform\r
-    L0.InverseOf G2D.IsTransformOf\r
-\r
-G2D.HasBounds <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Bounds"\r
-    --> G2D.Rectangle2D\r
-\r
-G2D.Shape <T L0.Entity\r
-    L0.HasDescription "A Graphics Node which has some kind of graphical representation."\r
-    @L0.optionalProperty G2D.HasStyle\r
-    @L0.singleProperty G2D.HasLineSegments\r
-    @L0.singleProperty G2D.HasLineSegmentTypes\r
-    @L0.optionalProperty G2D.HasFillColor\r
-    @L0.optionalProperty G2D.HasBorderColor\r
-\r
-G2D.HasLineSegments <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.Double\r
-G2D.HasLineSegmentTypes <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.Integer\r
-\r
-G2D.Style <T L0.Property\r
-    L0.HasDescription "A composite property describing a complete SVG style with stroke and fill attributes. An opacity defined for a Style represents an 'object opacity' which effects both stroke and fill opacity."\r
-    @L0.optionalProperty G2D.HasStroke\r
-    @L0.optionalProperty G2D.HasOpacity\r
-G2D.HasStyle <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.Style\r
-G2D.Stroke <T L0.Property\r
-    L0.HasDescription "A composite property describing all stroke painting attributes possible in SVG"\r
-    @L0.optionalProperty G2D.HasDashArray\r
-    @L0.optionalProperty G2D.HasDashOffset\r
-    @L0.optionalProperty G2D.HasStrokeWidth\r
-    @L0.optionalProperty G2D.HasMiterLimit\r
-    @L0.optionalProperty G2D.HasLineCap\r
-    @L0.optionalProperty G2D.HasLineJoin\r
-G2D.HasStroke <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.Stroke\r
-G2D.HasStrokeType <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Stroke Type"\r
-    --> G2D.StrokeType\r
-G2D.StrokeType <T L0.Property\r
-    @L0.tag L0.Enumeration\r
-G2D.StrokeType.Scaling : G2D.StrokeType\r
-G2D.StrokeType.Nonscaling : G2D.StrokeType\r
-G2D.LineEnd <T L0.Property\r
-    @L0.optionalProperty G2D.HasLineEndStyle\r
-    @L0.singleProperty G2D.HasSize\r
-    @L0.singleProperty G2D.HasWidthRatio\r
-    @L0.singleProperty G2D.HasSpace\r
-G2D.HasEndArrow <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "End Arrow"\r
-    --> G2D.LineEnd\r
-G2D.HasMidArrow <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Mid Arrow"\r
-    --> G2D.LineEnd\r
-G2D.HasBeginArrow <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Begin Arrow"\r
-    --> G2D.LineEnd\r
-G2D.LineEndStyle <T L0.Property\r
-    @L0.tag L0.Enumeration\r
-G2D.LineEndStyle.NormalLineEndStyle : G2D.LineEndStyle\r
-G2D.LineEndStyle.FilledLineEndStyle : G2D.LineEndStyle\r
-G2D.HasLineEndStyle <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Line End Style"\r
-    --> G2D.LineEndStyle\r
-G2D.Font <T L0.Property\r
-    L0.HasDescription "A composite property describing a single font configuration by its family, style and size."\r
-    @L0.singleProperty G2D.HasFontFamily\r
-    @L0.singleProperty G2D.HasFontStyle\r
-    @L0.singleProperty G2D.HasFontSize\r
-    @L0.assert G2D.HasFontFamily "Arial"\r
-    @L0.assert G2D.HasFontStyle G2D.FontStyle.normal_font_style\r
-    @L0.assert G2D.HasFontSize 12\r
-G2D.HasFont <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Font"\r
-    --> G2D.Font\r
-G2D.FontStyle <T L0.Property : L0.FunctionalRelation\r
-    @L0.tag L0.Enumeration\r
-    L0.HasDescription "An enumeration of the allowed font styles."\r
-G2D.FontStyle.normal_font_style : G2D.FontStyle\r
-G2D.FontStyle.italic_font_style : G2D.FontStyle\r
-G2D.FontStyle.bold_font_style : G2D.FontStyle\r
-G2D.FontStyle.bold_italic_style : G2D.FontStyle\r
-G2D.HasFontStyle <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Font Style"\r
-    --> G2D.FontStyle\r
-G2D.LineJoin <T L0.Property\r
-    @L0.tag L0.Enumeration\r
-G2D.LineJoin.MiterJoin : G2D.LineJoin\r
-G2D.LineJoin.RoundJoin : G2D.LineJoin\r
-G2D.LineJoin.BevelJoin : G2D.LineJoin\r
-G2D.HasLineJoin <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Line Join"\r
-    --> G2D.LineJoin\r
-G2D.LineCap <T L0.Property : L0.FunctionalRelation\r
-    @L0.tag L0.Enumeration\r
-G2D.LineCap.ButtCap : G2D.LineCap\r
-G2D.LineCap.RoundCap : G2D.LineCap\r
-G2D.LineCap.SquareCap : G2D.LineCap\r
-G2D.HasLineCap <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Line Cap"\r
-    --> G2D.LineCap\r
-G2D.HasPaint <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Paint"\r
-    --> L0.String\r
-G2D.HasOpacity <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Opacity"\r
-    --> L0.Float\r
-G2D.HasStrokeWidth <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Stroke Width"\r
-    --> L0.Float\r
-G2D.HasMiterLimit <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Miter Limit"\r
-    --> L0.Float\r
-G2D.HasDashArray <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.FloatArray\r
-    L0.HasDescription "The array represents the lengths of the dash segments. Alternate entries in the array represent the user space lengths of the opaque and transparent segments of the dashes."\r
-G2D.HasDashOffset <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.Float\r
-    L0.HasDescription "The dash phase is a distance specified in user coordinates that represents an offset into the dashing pattern."\r
-G2D.HasRadii <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.Point2D\r
-G2D.HasPathData <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.String\r
-G2D.HasText <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Text"\r
-    --> L0.String\r
-G2D.HasSize <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Size"\r
-    --> L0.Double\r
-G2D.HasWidthRatio <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Ratio of width to length"\r
-    --> L0.Double\r
-G2D.HasSpace <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Space"\r
-    --> L0.Double\r
-G2D.HasFontFamily <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Font Family"\r
-    --> L0.String\r
-G2D.HasFontSize <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Font Size"\r
-    --> L0.Integer\r
-\r
-G2D.Alignment <T L0.Property\r
-    @L0.tag L0.Enumeration\r
-G2D.Alignment.Leading : G2D.Alignment\r
-G2D.Alignment.Center : G2D.Alignment\r
-G2D.Alignment.Trailing : G2D.Alignment\r
-G2D.Alignment.Baseline : G2D.Alignment\r
-G2D.HasHorizontalAlignment <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Horizontal Alignment"\r
-    --> G2D.Alignment\r
-G2D.HasVerticalAlignment <R L0.IsRelatedTo : L0.FunctionalRelation\r
-    L0.HasLabel "Vertical Alignment"\r
-    --> G2D.Alignment\r
-\r
-G2D.Color <T L0.Literal\r
-    @L0.assert L0.HasDataType $(Float[4])\r
-    L0.HasDescription "A 4-component BGRA color as floats."\r
-G2D.HasColor <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Color"\r
-    --> G2D.Color\r
-G2D.HasFillColor <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Fill Color"\r
-    --> G2D.Color\r
-G2D.HasBorderColor <R L0.HasProperty : L0.FunctionalRelation\r
-    L0.HasLabel "Border Color"\r
-    --> G2D.Color\r
-\r
-G2D.ColorProfile <T L0.Library\r
-    L0.HasDescription "A collection of colors"\r
-\r
-G2D.Colors : G2D.ColorProfile\r
-    L0.ConsistsOf\r
-        [0.0,0.0,0.0,1.0] : G2D.Color\r
-            L0.HasName "black"\r
-        [1.0,1.0,1.0,1.0] : G2D.Color\r
-            L0.HasName "white"\r
-\r
-G2D.ColorGradient <T L0.Property\r
-    //TODO [G2D.HasColorPlacement card "1..*"]\r
-G2D.ColorPlacement <T L0.Property \r
-    @L0.singleProperty G2D.HasColor\r
-    @L0.singleProperty G2D.HasGradientPosition \r
-G2D.HasColorPlacement <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.ColorPlacement\r
-G2D.HasColorGradient <R L0.HasProperty : L0.FunctionalRelation\r
-    --> G2D.ColorGradient\r
-G2D.HasGradientPosition <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.Double\r
-\r
-G2D.DefaultStroke : G2D.Stroke\r
-    L0.HasDescription "Default Stroke with width = 1"\r
-    G2D.HasStrokeWidth 1.0 : L0.Float\r
-    G2D.HasDashArray [1.0] : L0.FloatArray\r
-    G2D.HasDashOffset 0.0 : L0.Float\r
-    G2D.HasMiterLimit 1.0 : L0.Float\r
-    G2D.HasLineCap G2D.LineCap.SquareCap\r
-    G2D.HasLineJoin G2D.LineJoin.RoundJoin\r
-\r
-G2D.HasRasterImage <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.ByteArray\r
-\r
-G2D.HasSVGDocument <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.String\r
-\r
-G2D.HasSVGScript <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.String\r
-\r
-G2D.IsVisible <R L0.HasProperty : L0.FunctionalRelation\r
-    --> L0.Boolean\r
+L0 = <http://www.simantics.org/Layer0-1.1>
+SEL = <http://www.simantics.org/SelectionView-1.2>
+
+G2D = <http://www.simantics.org/G2D-1.1> : L0.Ontology
+    @L0.new
+    L0.HasResourceClass "org.simantics.diagram.stubs.G2DResource"
+
+G2D.Point2D <T L0.Literal
+    @L0.assert L0.HasDataType $(Double[2])
+    L0.HasDescription "A double valued property describing a two-dimensional point (x,y) in euclidian coordinates."
+
+G2D.Rectangle2D <T L0.Literal
+    @L0.assert L0.HasDataType $(Double[4])
+    L0.HasDescription "A double valued property describing a two-dimensional rectangle (x,y,width,height) in euclidian coordinates."
+
+G2D.HasPoint2D <R L0.DependsOn
+    --> G2D.Point2D
+
+// FIXME: use proper datatypes
+G2D.Point2DArray <T L0.DoubleArray
+    L0.HasDescription "An array of Point2D property values (x,y) as consecutive double values."
+
+G2D.HasPoint2DArray <R L0.DependsOn
+    --> G2D.Point2DArray
+
+// FIXME: use proper datatypes
+G2D.Transform <T L0.Literal
+    @L0.assert L0.HasDataType $(Double[6])
+    @L0.assert L0.HasValueType "Vector Double"
+    L0.HasDescription "A 2x3 matrix of six doubles representing an affine 2D transformation in column-major order."
+
+G2D.Transform."i-0" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "Scale (X)"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+G2D.Transform."i-1" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "Shear (Y)"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+G2D.Transform."i-2" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "Shear (X)"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+G2D.Transform."i-3" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "Scale (Y)"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+G2D.Transform."i-4" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "X"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+G2D.Transform."i-5" <R L0.HasProperty : L0.FunctionalRelation : SEL.GenericParameterType
+    L0.HasLabel "Y"    
+    L0.HasSubliteralPredicate.Inverse G2D.Transform    
+
+G2D.HasTransform <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.Transform
+    L0.InverseOf G2D.IsTransformOf
+
+G2D.HasBounds <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Bounds"
+    --> G2D.Rectangle2D
+
+G2D.Shape <T L0.Entity
+    L0.HasDescription "A Graphics Node which has some kind of graphical representation."
+    @L0.optionalProperty G2D.HasStyle
+    @L0.singleProperty G2D.HasLineSegments
+    @L0.singleProperty G2D.HasLineSegmentTypes
+    @L0.optionalProperty G2D.HasFillColor
+    @L0.optionalProperty G2D.HasBorderColor
+
+G2D.HasLineSegments <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Double
+G2D.HasLineSegmentTypes <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Integer
+
+G2D.Style <T L0.Property
+    L0.HasDescription "A composite property describing a complete SVG style with stroke and fill attributes. An opacity defined for a Style represents an 'object opacity' which effects both stroke and fill opacity."
+    @L0.optionalProperty G2D.HasStroke
+    @L0.optionalProperty G2D.HasOpacity
+G2D.HasStyle <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.Style
+G2D.Stroke <T L0.Property
+    L0.HasDescription "A composite property describing all stroke painting attributes possible in SVG"
+    @L0.optionalProperty G2D.HasDashArray
+    @L0.optionalProperty G2D.HasDashOffset
+    @L0.optionalProperty G2D.HasStrokeWidth
+    @L0.optionalProperty G2D.HasMiterLimit
+    @L0.optionalProperty G2D.HasLineCap
+    @L0.optionalProperty G2D.HasLineJoin
+G2D.HasStroke <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.Stroke
+G2D.HasStrokeType <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Stroke Type"
+    --> G2D.StrokeType
+G2D.StrokeType <T L0.Property
+    @L0.tag L0.Enumeration
+G2D.StrokeType.Scaling : G2D.StrokeType
+G2D.StrokeType.Nonscaling : G2D.StrokeType
+G2D.HasRounding <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Double
+G2D.HasOffset <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Double
+G2D.HasBranchPointRadius <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Double
+G2D.LineEnd <T L0.Property
+    @L0.optionalProperty G2D.HasLineEndStyle
+    @L0.singleProperty G2D.HasSize
+    @L0.singleProperty G2D.HasWidthRatio
+    @L0.singleProperty G2D.HasSpace
+G2D.HasEndArrow <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "End Arrow"
+    --> G2D.LineEnd
+G2D.HasMidArrow <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Mid Arrow"
+    --> G2D.LineEnd
+G2D.HasBeginArrow <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Begin Arrow"
+    --> G2D.LineEnd
+G2D.LineEndStyle <T L0.Property
+    @L0.tag L0.Enumeration
+G2D.LineEndStyle.NormalLineEndStyle : G2D.LineEndStyle
+G2D.LineEndStyle.FilledLineEndStyle : G2D.LineEndStyle
+G2D.HasLineEndStyle <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Line End Style"
+    --> G2D.LineEndStyle
+G2D.Font <T L0.Property
+    L0.HasDescription "A composite property describing a single font configuration by its family, style and size."
+    @L0.singleProperty G2D.HasFontFamily
+    @L0.singleProperty G2D.HasFontStyle
+    @L0.singleProperty G2D.HasFontSize
+    @L0.assert G2D.HasFontFamily "Arial"
+    @L0.assert G2D.HasFontStyle G2D.FontStyle.normal_font_style
+    @L0.assert G2D.HasFontSize 12
+G2D.HasFont <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Font"
+    --> G2D.Font
+G2D.FontStyle <T L0.Property : L0.FunctionalRelation
+    @L0.tag L0.Enumeration
+    L0.HasDescription "An enumeration of the allowed font styles."
+G2D.FontStyle.normal_font_style : G2D.FontStyle
+G2D.FontStyle.italic_font_style : G2D.FontStyle
+G2D.FontStyle.bold_font_style : G2D.FontStyle
+G2D.FontStyle.bold_italic_style : G2D.FontStyle
+G2D.HasFontStyle <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Font Style"
+    --> G2D.FontStyle
+G2D.LineJoin <T L0.Property
+    @L0.tag L0.Enumeration
+G2D.LineJoin.MiterJoin : G2D.LineJoin
+G2D.LineJoin.RoundJoin : G2D.LineJoin
+G2D.LineJoin.BevelJoin : G2D.LineJoin
+G2D.HasLineJoin <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Line Join"
+    --> G2D.LineJoin
+G2D.LineCap <T L0.Property : L0.FunctionalRelation
+    @L0.tag L0.Enumeration
+G2D.LineCap.ButtCap : G2D.LineCap
+G2D.LineCap.RoundCap : G2D.LineCap
+G2D.LineCap.SquareCap : G2D.LineCap
+G2D.HasLineCap <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Line Cap"
+    --> G2D.LineCap
+G2D.HasPaint <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Paint"
+    --> L0.String
+G2D.HasOpacity <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Opacity"
+    --> L0.Float
+G2D.HasStrokeWidth <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Stroke Width"
+    --> L0.Float
+G2D.HasMiterLimit <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Miter Limit"
+    --> L0.Float
+G2D.HasDashArray <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.FloatArray
+    L0.HasDescription "The array represents the lengths of the dash segments. Alternate entries in the array represent the user space lengths of the opaque and transparent segments of the dashes."
+G2D.HasDashOffset <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Float
+    L0.HasDescription "The dash phase is a distance specified in user coordinates that represents an offset into the dashing pattern."
+G2D.HasRadii <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.Point2D
+G2D.HasPathData <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.String
+G2D.HasText <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Text"
+    --> L0.String
+G2D.HasSize <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Size"
+    --> L0.Double
+G2D.HasWidthRatio <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Ratio of width to length"
+    --> L0.Double
+G2D.HasSpace <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Space"
+    --> L0.Double
+G2D.HasFontFamily <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Font Family"
+    --> L0.String
+G2D.HasFontSize <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Font Size"
+    --> L0.Integer
+
+G2D.Alignment <T L0.Property
+    @L0.tag L0.Enumeration
+G2D.Alignment.Leading : G2D.Alignment
+G2D.Alignment.Center : G2D.Alignment
+G2D.Alignment.Trailing : G2D.Alignment
+G2D.Alignment.Baseline : G2D.Alignment
+G2D.HasHorizontalAlignment <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Horizontal Alignment"
+    --> G2D.Alignment
+G2D.HasVerticalAlignment <R L0.IsRelatedTo : L0.FunctionalRelation
+    L0.HasLabel "Vertical Alignment"
+    --> G2D.Alignment
+
+G2D.Color <T L0.Literal
+    @L0.assert L0.HasDataType $(Float[4])
+    @L0.assert L0.HasValueType "Vector Float"
+    L0.HasDescription "A 4-component BGRA color as floats."
+    
+G2D.HasColor <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Color"
+    --> G2D.Color
+G2D.HasFillColor <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Fill Color"
+    --> G2D.Color
+G2D.HasBorderColor <R L0.HasProperty : L0.FunctionalRelation
+    L0.HasLabel "Border Color"
+    --> G2D.Color
+
+G2D.ColorProfile <T L0.Library
+    L0.HasDescription "A collection of colors"
+
+G2D.Colors : G2D.ColorProfile
+    L0.ConsistsOf
+        [0.0,0.0,0.0,1.0] : G2D.Color
+            L0.HasName "black"
+        [1.0,1.0,1.0,1.0] : G2D.Color
+            L0.HasName "white"
+
+G2D.ColorGradient <T L0.Property
+    //TODO [G2D.HasColorPlacement card "1..*"]
+G2D.ColorPlacement <T L0.Property 
+    @L0.singleProperty G2D.HasColor
+    @L0.singleProperty G2D.HasGradientPosition 
+G2D.HasColorPlacement <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.ColorPlacement
+G2D.HasColorGradient <R L0.HasProperty : L0.FunctionalRelation
+    --> G2D.ColorGradient
+G2D.HasGradientPosition <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Double
+
+G2D.DefaultStroke : G2D.Stroke
+    L0.HasDescription "Default Stroke with width = 1"
+    G2D.HasStrokeWidth 1.0 : L0.Float
+    G2D.HasDashArray [1.0] : L0.FloatArray
+    G2D.HasDashOffset 0.0 : L0.Float
+    G2D.HasMiterLimit 1.0 : L0.Float
+    G2D.HasLineCap G2D.LineCap.SquareCap
+    G2D.HasLineJoin G2D.LineJoin.RoundJoin
+
+G2D.HasRasterImage <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.ByteArray
+
+G2D.HasSVGDocument <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.String
+
+G2D.HasSVGScript <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.String
+
+G2D.IsVisible <R L0.HasProperty : L0.FunctionalRelation
+    --> L0.Boolean
+
+G2D.fontProperty : L0.Template
+    @template %subject %predicate %family %size %style
+        %subject
+            %predicate _ : G2D.Font
+              G2D.HasFontFamily %family
+              G2D.HasFontSize %size
+              G2D.HasFontStyle %style
+              
+G2D.font : L0.Template
+    @template %subject %family %size %style
+        %subject : G2D.Font
+          G2D.HasFontFamily %family
+          G2D.HasFontSize %size
+          G2D.HasFontStyle %style
+              
+    
\ No newline at end of file