517 lines (516 with data), 32.4 kB
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
<!--Created by yFiles for Java 2.7-->
<key for="graphml" id="d0" yfiles.type="resources"/>
<key attr.name="url" attr.type="string" for="node" id="d1"/>
<key attr.name="description" attr.type="string" for="node" id="d2"/>
<key for="node" id="d3" yfiles.type="nodegraphics"/>
<key attr.name="Description" attr.type="string" for="graph" id="d4">
<default/>
</key>
<key attr.name="url" attr.type="string" for="edge" id="d5"/>
<key attr.name="description" attr.type="string" for="edge" id="d6"/>
<key for="edge" id="d7" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="G">
<node id="n0">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="103.89768976897693" width="199.03986798679864" x="807.3045339842589" y="-129.54207120462019"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="34.44970703125" x="82.29508047777432" y="3.0">User</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>login (PK)
password
group = Enum("USER", "ADMIN")
date_created</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n1">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="128.07828382838287" width="138.8018349834981" x="1259.4550290337638" y="-97.61468649543497"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="33.80224609375" x="52.499794444874055" y="3.0">Item</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
title
notes
user_login
date_created
data_ref_id</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n2">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="87.75907590759076" width="105.47485148514852" x="1065.5713722680875" y="-447.7151009075903"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="29.1875" x="38.14367574257426" y="3.0">Tag</y:NodeLabel>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="50.73742574257426" y="41.879537953795364"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="50.73742574257426" y="41.879537953795364"/>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
name (UNIQUE)
synonym_code</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n3">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="155.56032000000005" width="168.3336290429042" x="1190.9395549743579" y="91.66695216171632"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="56.837890625" x="55.747869208952096" y="3.0">DataRef</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
url (UNIQUE)
type = Enum("FILE", "URL")
hash
date_hashed
size
date_created
user_login</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n4">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="94.8825146719472" width="149.0285465346533" x="1332.816850815942" y="-376.75521971947165"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="36.15087890625" x="56.438833814201644" y="3.0">Field</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
name (UNIQUE)
synonym_code</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n5">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="100.89871947194717" width="142.05434191419124" x="1420.8383558307291" y="-220.0739289261066"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="72.453125" x="34.80060845709562" y="3.0">Item_Field</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>item_id (PK)
field_id (PK)
user_login (PK)
field_value</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n6">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="87.75907590759076" width="131.3891485148515" x="1130.33789575614" y="-271.78299529702946"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="65.48974609375" x="32.94970121055076" y="3.0">Item_Tag</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>item_id (PK)
tag_id (PK)
user_login (PK)
</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n7">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="98.70877887788777" width="110.94970297029704" x="874.7092732581865" y="-441.60960915841537"/>
<y:Fill color="#C0C0C0" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="90.1376953125" x="10.40600382889852" y="3.0">TagStatistics</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>tag_id (PK)
user_login (PK)
item_count
popularity</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n8">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="111.48948382838287" width="94.72298349834978" x="1267.9085498258428" y="-636.6185385313527"/>
<y:Fill color="#C0C0C0" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="49.72216796875" x="22.50040776479989" y="3.0">Bundle</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
name
description
user_login</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n9">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="74.47053940594043" width="119.64496369636959" x="1111.1178775699982" y="-572.435068780858"/>
<y:Fill color="#C0C0C0" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="81.40966796875" x="19.117647863809793" y="3.0">Bundle_Tag</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>bundle_id (PK)
tag_id (PK)</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n10">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="74.47053940594043" width="119.64496369636959" x="1392.6315333241928" y="-507.00833044683003"/>
<y:Fill color="#999999" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="88.373046875" x="15.635958410684793" y="3.0">Bundle_Field</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>bundle_id (PK)
field_id (PK)</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n11">
<data key="d3">
<y:ShapeNode>
<y:Geometry height="215.48352" width="475.35743999999977" x="1374.757984017262" y="45.32199216171631"/>
<y:Fill color="#CCFFCC" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="left" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="213.443359375" modelName="internal" modelPosition="tl" textColor="#000000" visible="true" width="464.646484375" x="4.0" y="4.0"> Связь между Item и DataRef N..1 мне кажется гораздо
проще в реализации. Возможность ссылаться из одного Item-а
на несколько DataRef-ов (т.е. связь M..N) мне кажется
будет не очень часто нужна. А если все-таки нужна, то
можно предложить следующим образом группировать
такие DataRef-ы (физические файлы):
1) Создавать отдельные Item-ы для каждого DataRef-а, и
разместить файлы физически в одной директории внутри хранилища.
2) Запаковать в zip (или другой формат...) группируемые файлы и создать
для архива один DataRef и один Item. Можно сделать в программе так, что
такие архивы распаковываются на лету, таким образом для пользователя
будет создан эффект сгруппированных отдельных файлов.
Если требуется физически группировать несколько URL ссылок, то всегда
можно сделать сколько угодно полей (объектов Field), типа
url_1="адрес 1", url_2="адрес 2" и т.п.</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n12">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="99.28010978206703" width="174.15807999999993" x="1162.5031219710577" y="316.79243572999945"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="75.89990234375" x="49.129088828124964" y="3.0">Thumbnail</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>data_ref_id (PK)
size (PK)
data
date_created</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node id="n13">
<data key="d1"/>
<data key="d2"><![CDATA[UMLClass]]></data>
<data key="d3">
<y:UMLClassNode>
<y:Geometry height="170.43233684210534" width="311.7578105263158" x="1612.1209572153684" y="-184.58929185051923"/>
<y:Fill color="#FFCC00" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="76.287109375" x="117.73535057565789" y="3.0">HistoryRec</y:NodeLabel>
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
<y:AttributeLabel>id (PK)
parent1_id (внешний ключ "history_recs.id")
parent2_id (внешний ключ "history_recs.id")
item_id
item_hash
data_ref_hash
data_ref_url
operation Enum{CREATE, UPDATE, DELETE, MERGE}
user_login</y:AttributeLabel>
<y:MethodLabel/>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<edge id="e0" source="n5" target="n0">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="none"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.16015625" x="-39.28896350520836" y="8.180443448936643">user</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e1" source="n7" target="n0">
<data key="d7">
<y:BezierEdge>
<y:Path sx="28.02307794349906" sy="-11.732686468646762" tx="10.418190075357387" ty="-16.083014437079687"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="none"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.16015625" x="0.6651309282565308" y="10.111895549550525">user</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e2" source="n6" target="n0">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="1016.2702765585165" y="-194.34164216171598"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="none"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.16015625" x="-39.264643306360085" y="8.966463686716736">user</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e3" source="n1" target="n6">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="23.977869162630927" ty="11.66458706906442"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="60.560546875" x="-4.046530060609484" y="-28.11013937629434">item_tags</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="shead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="11.587890625" x="-30.3381661277258" y="-28.11013937629434">1</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="thead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="24.96484375" x="-72.43440445343549" y="-76.30648164529808">0..*</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.845703125" x="-32.765815261319176" y="-76.30648164529808">item</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e4" source="n5" target="n4">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="15.1297612996559" ty="11.496614572393407"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.587890625" x="-2.7317886210382767" y="-28.0663147903644">field</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e5" source="n5" target="n1">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="1463.5271054128293" y="-41.869944581243544"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="67.55078125" x="-78.25657485526699" y="83.08637831869748">item_fields</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.845703125" x="0.4933052638971276" y="10.096892901797617">item</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e6" source="n2" target="n6">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="22.59765625" x="36.49148737247606" y="60.11049835531429">tag</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e7" source="n2" target="n7">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="-20.634532617557284" ty="-6.200805280528073"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e8" source="n8" target="n8">
<data key="d7">
<y:BezierEdge>
<y:Path sx="-5.339840111508686" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="none"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e9" source="n8" target="n10">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e10" source="n8" target="n9">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e11" source="n2" target="n9">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e12" source="n4" target="n10">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e13" source="n0" target="n8">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="708.5151052927687" y="-497.1946366224427"/>
<y:Point x="898.300730639303" y="-794.166397414522"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="white_diamond"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e14" source="n0" target="n1">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="white_diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.16015625" x="213.83930637751382" y="27.344730533491635">user</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e15" source="n0" target="n3">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="924.8082523842567" y="99.58765039537997"/>
<y:Point x="1091.0341723842569" y="161.78541039538007"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="white_diamond"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="29.16015625" x="234.0290935485766" y="193.18105841152126">user</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e16" source="n1" target="n3">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="white_diamond" target="none"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="thead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="11.587890625" x="-27.117245893948848" y="33.140016584323746">1</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-5.578729248002901" y="28.626229794939533"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="24.96484375" x="-0.6870900000999427" y="10.14955238055532">0..*</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="shead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="51.302734375" x="-60.74544026947251" y="10.14955238055532">data_ref</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e17" source="n3" target="n12">
<data key="d7">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="17.707771928942066" ty="-15.583866287999943"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="diamond" target="none"/>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="shead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="11.587890625" x="-14.796702610599368" y="10.092064031833559">1</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="69.267578125" x="1.5651935670794046" y="10.092064031833559">thumbnails</y:EdgeLabel>
<y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="thead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="24.96484375" x="-29.524598290102404" y="41.44433697511664">0..*</y:EdgeLabel>
</y:BezierEdge>
</data>
</edge>
<edge id="e18" source="n13" target="n13">
<data key="d6"/>
<data key="d7">
<y:ArcEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="1767.9998779296875" y="-99.37312316894531"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:Arc height="0.0" ratio="1.0" type="fixedRatio"/>
</y:ArcEdge>
</data>
</edge>
<edge id="e19" source="n13" target="n1">
<data key="d6"/>
<data key="d7">
<y:SplineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="1578.0638203732628" y="-55.73286305326326"/>
<y:Point x="1449.4965782679997" y="9.811221157263049"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="none"/>
</y:SplineEdge>
</data>
</edge>
</graph>
<data key="d0">
<y:Resources/>
</data>
</graphml>