Generate a page that displays the relationships chart.
diff --git a/_projectCommon.php b/_projectCommon.php
index f619d92..e187646 100644
--- a/_projectCommon.php
+++ b/_projectCommon.php
@@ -11,4 +11,5 @@
 $Nav->addCustomNav("PMC Minutes", "/ee4j/minutes", "_self", NULL);
 $Nav->addCustomNav("PMC News", "/ee4j/news", "_self", NULL);
 $Nav->addCustomNav("Project Status", "/ee4j/status.php", "_self", NULL);
+$Nav->addCustomNav("Project Relationships", "/ee4j/relationships.php", "_self", NULL);
 $Nav->addCustomNav("EE4J Charter", "https://projects.eclipse.org/projects/ee4j/charter", "_self", NULL);
\ No newline at end of file
diff --git a/generated/.asciidoctor/diagram/relationships.svg.cache b/generated/.asciidoctor/diagram/relationships.svg.cache
new file mode 100644
index 0000000..e0a6739
--- /dev/null
+++ b/generated/.asciidoctor/diagram/relationships.svg.cache
@@ -0,0 +1 @@
+{"checksum":"6a5bb61df5b9833ce7b91c03a51e2029","width":1332,"height":2705}
\ No newline at end of file
diff --git a/generated/images/relationships.svg b/generated/images/relationships.svg
new file mode 100644
index 0000000..cd96dfd
--- /dev/null
+++ b/generated/images/relationships.svg
@@ -0,0 +1,970 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg width="1002pt" height="2034pt"
+ viewBox="0.00 0.00 1002.00 2034.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 2030)">
+<title>G</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-2030 998,-2030 998,4 -4,4"/>
+<!-- project_eclipselink -->
+<g id="node1" class="node"><title>project_eclipselink</title>
+<g id="a_node1"><a xlink:href="https://projects.eclipse.org/projects/ee4j.eclipselink" xlink:title="EclipseLink">
+<path fill="none" stroke="black" stroke-width="2" d="M322.5,-1438C322.5,-1438 264.5,-1438 264.5,-1438 258.5,-1438 252.5,-1432 252.5,-1426 252.5,-1426 252.5,-1414 252.5,-1414 252.5,-1408 258.5,-1402 264.5,-1402 264.5,-1402 322.5,-1402 322.5,-1402 328.5,-1402 334.5,-1408 334.5,-1414 334.5,-1414 334.5,-1426 334.5,-1426 334.5,-1432 328.5,-1438 322.5,-1438"/>
+<text text-anchor="middle" x="293.5" y="-1416.3" font-family="Times,serif" font-size="14.00">EclipseLink</text>
+</a>
+</g>
+</g>
+<!-- jpa -->
+<g id="node50" class="node"><title>jpa</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1474 524.5,-1474 524.5,-1438 578.5,-1438 578.5,-1474"/>
+<text text-anchor="middle" x="551.5" y="-1452.3" font-family="Times,serif" font-size="14.00">JPA</text>
+</g>
+<!-- project_eclipselink&#45;&gt;jpa -->
+<g id="edge36" class="edge"><title>project_eclipselink&#45;&gt;jpa</title>
+<path fill="none" stroke="black" d="M334.782,-1425.66C384.133,-1432.6 467.006,-1444.26 514.379,-1450.92"/>
+<polygon fill="black" stroke="black" points="514.098,-1454.42 524.488,-1452.34 515.073,-1447.48 514.098,-1454.42"/>
+<text text-anchor="middle" x="432" y="-1448" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_el -->
+<g id="node2" class="node"><title>project_el</title>
+<g id="a_node2"><a xlink:href="https://projects.eclipse.org/projects/ee4j.el" xlink:title="Eclipse Project\nfor Expression Language">
+<path fill="none" stroke="black" stroke-width="2" d="M821,-1796C821,-1796 692,-1796 692,-1796 686,-1796 680,-1790 680,-1784 680,-1784 680,-1770 680,-1770 680,-1764 686,-1758 692,-1758 692,-1758 821,-1758 821,-1758 827,-1758 833,-1764 833,-1770 833,-1770 833,-1784 833,-1784 833,-1790 827,-1796 821,-1796"/>
+<text text-anchor="middle" x="756.5" y="-1780.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="756.5" y="-1765.8" font-family="Times,serif" font-size="14.00">for Expression Language</text>
+</a>
+</g>
+</g>
+<!-- el -->
+<g id="node37" class="node"><title>el</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="994,-1762 917,-1762 917,-1724 994,-1724 994,-1762"/>
+<text text-anchor="middle" x="955.5" y="-1746.8" font-family="Times,serif" font-size="14.00">Expression</text>
+<text text-anchor="middle" x="955.5" y="-1731.8" font-family="Times,serif" font-size="14.00">Language</text>
+</g>
+<!-- project_el&#45;&gt;el -->
+<g id="edge34" class="edge"><title>project_el&#45;&gt;el</title>
+<path fill="none" stroke="black" d="M833.277,-1766.06C854.58,-1762.75 877.734,-1758.95 899,-1755 901.635,-1754.51 904.337,-1753.99 907.06,-1753.45"/>
+<polygon fill="black" stroke="black" points="907.846,-1756.86 916.944,-1751.43 906.446,-1750 907.846,-1756.86"/>
+<text text-anchor="middle" x="875" y="-1766" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- project_el&#45;&gt;el -->
+<g id="edge38" class="edge"><title>project_el&#45;&gt;el</title>
+<path fill="none" stroke="black" d="M798.948,-1757.85C814.866,-1751.47 833.433,-1745.18 851,-1742 871.992,-1738.2 877.668,-1741.81 899,-1742 901.53,-1742.02 904.124,-1742.05 906.743,-1742.08"/>
+<polygon fill="black" stroke="black" points="906.835,-1745.59 916.885,-1742.23 906.936,-1738.59 906.835,-1745.59"/>
+<text text-anchor="middle" x="875" y="-1745" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_glassfish -->
+<g id="node3" class="node"><title>project_glassfish</title>
+<g id="a_node3"><a xlink:href="https://projects.eclipse.org/projects/ee4j.glassfish" xlink:title="Eclipse\nGlassFish">
+<path fill="none" stroke="black" stroke-width="2" d="M92,-1001C92,-1001 46,-1001 46,-1001 40,-1001 34,-995 34,-989 34,-989 34,-975 34,-975 34,-969 40,-963 46,-963 46,-963 92,-963 92,-963 98,-963 104,-969 104,-975 104,-975 104,-989 104,-989 104,-995 98,-1001 92,-1001"/>
+<text text-anchor="middle" x="69" y="-985.8" font-family="Times,serif" font-size="14.00">Eclipse</text>
+<text text-anchor="middle" x="69" y="-970.8" font-family="Times,serif" font-size="14.00">GlassFish</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_eclipselink -->
+<g id="edge64" class="edge"><title>project_glassfish&#45;&gt;project_eclipselink</title>
+<path fill="none" stroke="black" d="M72.123,-1001.31C80.0594,-1070.46 109.911,-1304.67 156,-1362 177.307,-1388.5 212.959,-1403.1 242.484,-1411.02"/>
+<polygon fill="black" stroke="black" points="241.682,-1414.42 252.233,-1413.45 243.38,-1407.63 241.682,-1414.42"/>
+<text text-anchor="middle" x="180" y="-1400" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_glassfish&#45;&gt;project_el -->
+<g id="edge65" class="edge"><title>project_glassfish&#45;&gt;project_el</title>
+<path fill="none" stroke="black" d="M69.7264,-1001.19C68.5672,-1107.22 67.637,-1621.1 156,-1746 274.983,-1914.18 405.074,-1918.58 604,-1865 649.043,-1852.87 694.489,-1823.69 723.69,-1802.24"/>
+<polygon fill="black" stroke="black" points="725.935,-1804.93 731.847,-1796.14 721.743,-1799.33 725.935,-1804.93"/>
+<text text-anchor="middle" x="432" y="-1898" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_grizzly -->
+<g id="node4" class="node"><title>project_grizzly</title>
+<g id="a_node4"><a xlink:href="https://projects.eclipse.org/projects/ee4j.grizzly" xlink:title="Eclipse Grizzly">
+<path fill="none" stroke="black" stroke-width="2" d="M332,-830C332,-830 255,-830 255,-830 249,-830 243,-824 243,-818 243,-818 243,-806 243,-806 243,-800 249,-794 255,-794 255,-794 332,-794 332,-794 338,-794 344,-800 344,-806 344,-806 344,-818 344,-818 344,-824 338,-830 332,-830"/>
+<text text-anchor="middle" x="293.5" y="-808.3" font-family="Times,serif" font-size="14.00">Eclipse Grizzly</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_grizzly -->
+<g id="edge66" class="edge"><title>project_glassfish&#45;&gt;project_grizzly</title>
+<path fill="none" stroke="black" d="M75.1704,-962.757C84.9994,-930.2 109.656,-864.705 156,-833 178.176,-817.829 207.092,-811.916 232.599,-810.063"/>
+<polygon fill="black" stroke="black" points="233.121,-813.54 242.921,-809.514 232.75,-806.55 233.121,-813.54"/>
+<text text-anchor="middle" x="180" y="-836" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jaf -->
+<g id="node5" class="node"><title>project_jaf</title>
+<g id="a_node5"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-jaf" xlink:title="Eclipse Project\nfor JAF">
+<path fill="none" stroke="black" stroke-width="2" d="M469,-428C469,-428 395,-428 395,-428 389,-428 383,-422 383,-416 383,-416 383,-402 383,-402 383,-396 389,-390 395,-390 395,-390 469,-390 469,-390 475,-390 481,-396 481,-402 481,-402 481,-416 481,-416 481,-422 475,-428 469,-428"/>
+<text text-anchor="middle" x="432" y="-412.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="432" y="-397.8" font-family="Times,serif" font-size="14.00">for JAF</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jaf -->
+<g id="edge68" class="edge"><title>project_glassfish&#45;&gt;project_jaf</title>
+<path fill="none" stroke="black" d="M71.57,-962.736C78.542,-880.233 108.468,-556.854 156,-468 174.984,-432.512 184.581,-420.819 222,-406 270.102,-386.95 329.449,-390.049 372.596,-396.535"/>
+<polygon fill="black" stroke="black" points="372.219,-400.019 382.647,-398.151 373.33,-393.108 372.219,-400.019"/>
+<text text-anchor="middle" x="180" y="-471" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_javamail -->
+<g id="node6" class="node"><title>project_javamail</title>
+<g id="a_node6"><a xlink:href="https://projects.eclipse.org/projects/ee4j.javamail" xlink:title="Eclipse Project\nfor JavaMail">
+<path fill="none" stroke="black" stroke-width="2" d="M330.5,-666C330.5,-666 256.5,-666 256.5,-666 250.5,-666 244.5,-660 244.5,-654 244.5,-654 244.5,-640 244.5,-640 244.5,-634 250.5,-628 256.5,-628 256.5,-628 330.5,-628 330.5,-628 336.5,-628 342.5,-634 342.5,-640 342.5,-640 342.5,-654 342.5,-654 342.5,-660 336.5,-666 330.5,-666"/>
+<text text-anchor="middle" x="293.5" y="-650.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-635.8" font-family="Times,serif" font-size="14.00">for JavaMail</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_javamail -->
+<g id="edge69" class="edge"><title>project_glassfish&#45;&gt;project_javamail</title>
+<path fill="none" stroke="black" d="M75.1957,-962.841C86.4515,-923.011 115.386,-829.069 156,-758 179.385,-717.081 184.156,-703.09 222,-675 226.124,-671.939 230.628,-669.16 235.3,-666.65"/>
+<polygon fill="black" stroke="black" points="237.013,-669.707 244.436,-662.148 233.919,-663.428 237.013,-669.707"/>
+<text text-anchor="middle" x="180" y="-761" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jaxb -->
+<g id="node7" class="node"><title>project_jaxb</title>
+<g id="a_node7"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-jaxb" xlink:title="Eclipse Project\nfor JAXB">
+<path fill="none" stroke="black" stroke-width="2" d="M330.5,-610C330.5,-610 256.5,-610 256.5,-610 250.5,-610 244.5,-604 244.5,-598 244.5,-598 244.5,-584 244.5,-584 244.5,-578 250.5,-572 256.5,-572 256.5,-572 330.5,-572 330.5,-572 336.5,-572 342.5,-578 342.5,-584 342.5,-584 342.5,-598 342.5,-598 342.5,-604 336.5,-610 330.5,-610"/>
+<text text-anchor="middle" x="293.5" y="-594.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-579.8" font-family="Times,serif" font-size="14.00">for JAXB</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jaxb -->
+<g id="edge70" class="edge"><title>project_glassfish&#45;&gt;project_jaxb</title>
+<path fill="none" stroke="black" d="M71.4828,-962.797C76.1842,-911.965 94.3058,-771.218 156,-675 174.499,-646.149 206.795,-625.615 235.33,-612.074"/>
+<polygon fill="black" stroke="black" points="236.792,-615.254 244.44,-607.921 233.889,-608.884 236.792,-615.254"/>
+<text text-anchor="middle" x="180" y="-678" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jersey -->
+<g id="node8" class="node"><title>project_jersey</title>
+<g id="a_node8"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jersey" xlink:title="Eclipse Jersey">
+<path fill="none" stroke="black" stroke-width="2" d="M328.5,-776C328.5,-776 258.5,-776 258.5,-776 252.5,-776 246.5,-770 246.5,-764 246.5,-764 246.5,-752 246.5,-752 246.5,-746 252.5,-740 258.5,-740 258.5,-740 328.5,-740 328.5,-740 334.5,-740 340.5,-746 340.5,-752 340.5,-752 340.5,-764 340.5,-764 340.5,-770 334.5,-776 328.5,-776"/>
+<text text-anchor="middle" x="293.5" y="-754.3" font-family="Times,serif" font-size="14.00">Eclipse Jersey</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jersey -->
+<g id="edge72" class="edge"><title>project_glassfish&#45;&gt;project_jersey</title>
+<path fill="none" stroke="black" d="M73.6145,-962.824C81.6311,-925.636 104.427,-843.476 156,-799 178.348,-779.728 209.499,-769.514 236.401,-764.101"/>
+<polygon fill="black" stroke="black" points="237.271,-767.499 246.476,-762.252 236.008,-760.614 237.271,-767.499"/>
+<text text-anchor="middle" x="180" y="-802" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jms -->
+<g id="node9" class="node"><title>project_jms</title>
+<g id="a_node9"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jms" xlink:title="Eclipse Project\nfor JMS">
+<path fill="none" stroke="black" stroke-width="2" d="M330.5,-94C330.5,-94 256.5,-94 256.5,-94 250.5,-94 244.5,-88 244.5,-82 244.5,-82 244.5,-68 244.5,-68 244.5,-62 250.5,-56 256.5,-56 256.5,-56 330.5,-56 330.5,-56 336.5,-56 342.5,-62 342.5,-68 342.5,-68 342.5,-82 342.5,-82 342.5,-88 336.5,-94 330.5,-94"/>
+<text text-anchor="middle" x="293.5" y="-78.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-63.8" font-family="Times,serif" font-size="14.00">for JMS</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jms -->
+<g id="edge73" class="edge"><title>project_glassfish&#45;&gt;project_jms</title>
+<path fill="none" stroke="black" d="M73.3798,-962.781C84.4948,-898.838 120.219,-687.323 138,-511 141.484,-476.451 136.164,-227.501 156,-199 169.302,-179.887 189.053,-195.855 204,-178 226.004,-151.714 199.548,-128.904 222,-103 225.868,-98.5373 230.544,-94.7789 235.627,-91.615"/>
+<polygon fill="black" stroke="black" points="237.354,-94.6603 244.493,-86.8322 234.03,-88.4995 237.354,-94.6603"/>
+<text text-anchor="middle" x="180" y="-202" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jsonp -->
+<g id="node10" class="node"><title>project_jsonp</title>
+<g id="a_node10"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jsonp" xlink:title="Eclipse Project\nfor JSON Processing">
+<path fill="none" stroke="black" stroke-width="2" d="M347,-38C347,-38 240,-38 240,-38 234,-38 228,-32 228,-26 228,-26 228,-12 228,-12 228,-6 234,-0 240,-0 240,-0 347,-0 347,-0 353,-0 359,-6 359,-12 359,-12 359,-26 359,-26 359,-32 353,-38 347,-38"/>
+<text text-anchor="middle" x="293.5" y="-22.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-7.8" font-family="Times,serif" font-size="14.00">for JSON Processing</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jsonp -->
+<g id="edge74" class="edge"><title>project_glassfish&#45;&gt;project_jsonp</title>
+<path fill="none" stroke="black" d="M73.4732,-962.79C84.8789,-898.875 121.403,-687.438 138,-511 142.239,-465.933 136.257,-144.734 156,-104 169.784,-75.5614 198.068,-55.6529 225.334,-42.2914"/>
+<polygon fill="black" stroke="black" points="226.935,-45.4066 234.519,-38.0083 223.977,-39.0625 226.935,-45.4066"/>
+<text text-anchor="middle" x="180" y="-107" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jstl -->
+<g id="node11" class="node"><title>project_jstl</title>
+<g id="a_node11"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jstl" xlink:title="Eclipse Project\nfor JSTL">
+<path fill="none" stroke="black" stroke-width="2" d="M330.5,-1330C330.5,-1330 256.5,-1330 256.5,-1330 250.5,-1330 244.5,-1324 244.5,-1318 244.5,-1318 244.5,-1304 244.5,-1304 244.5,-1298 250.5,-1292 256.5,-1292 256.5,-1292 330.5,-1292 330.5,-1292 336.5,-1292 342.5,-1298 342.5,-1304 342.5,-1304 342.5,-1318 342.5,-1318 342.5,-1324 336.5,-1330 330.5,-1330"/>
+<text text-anchor="middle" x="293.5" y="-1314.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-1299.8" font-family="Times,serif" font-size="14.00">for JSTL</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jstl -->
+<g id="edge75" class="edge"><title>project_glassfish&#45;&gt;project_jstl</title>
+<path fill="none" stroke="black" d="M69.4485,-1001.21C69.0468,-1053.76 75.5207,-1201.11 156,-1278 176.789,-1297.86 207.393,-1306.43 234.356,-1309.89"/>
+<polygon fill="black" stroke="black" points="234.167,-1313.39 244.484,-1310.98 234.916,-1306.43 234.167,-1313.39"/>
+<text text-anchor="middle" x="180" y="-1306" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_metro -->
+<g id="node12" class="node"><title>project_metro</title>
+<g id="a_node12"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-metro" xlink:title="Eclipse Metro">
+<path fill="none" stroke="black" stroke-width="2" d="M328.5,-978C328.5,-978 258.5,-978 258.5,-978 252.5,-978 246.5,-972 246.5,-966 246.5,-966 246.5,-954 246.5,-954 246.5,-948 252.5,-942 258.5,-942 258.5,-942 328.5,-942 328.5,-942 334.5,-942 340.5,-948 340.5,-954 340.5,-954 340.5,-966 340.5,-966 340.5,-972 334.5,-978 328.5,-978"/>
+<text text-anchor="middle" x="293.5" y="-956.3" font-family="Times,serif" font-size="14.00">Eclipse Metro</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_metro -->
+<g id="edge76" class="edge"><title>project_glassfish&#45;&gt;project_metro</title>
+<path fill="none" stroke="black" d="M104.273,-977.243C120.012,-975.154 138.933,-972.778 156,-971 182.277,-968.262 211.462,-965.829 236.079,-963.951"/>
+<polygon fill="black" stroke="black" points="236.617,-967.42 246.327,-963.181 236.093,-960.44 236.617,-967.42"/>
+<text text-anchor="middle" x="180" y="-974" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_mojarra -->
+<g id="node13" class="node"><title>project_mojarra</title>
+<g id="a_node13"><a xlink:href="https://projects.eclipse.org/projects/ee4j.mojarra" xlink:title="Eclipse Mojarra">
+<path fill="none" stroke="black" stroke-width="2" d="M333.5,-1384C333.5,-1384 253.5,-1384 253.5,-1384 247.5,-1384 241.5,-1378 241.5,-1372 241.5,-1372 241.5,-1360 241.5,-1360 241.5,-1354 247.5,-1348 253.5,-1348 253.5,-1348 333.5,-1348 333.5,-1348 339.5,-1348 345.5,-1354 345.5,-1360 345.5,-1360 345.5,-1372 345.5,-1372 345.5,-1378 339.5,-1384 333.5,-1384"/>
+<text text-anchor="middle" x="293.5" y="-1362.3" font-family="Times,serif" font-size="14.00">Eclipse Mojarra</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_mojarra -->
+<g id="edge77" class="edge"><title>project_glassfish&#45;&gt;project_mojarra</title>
+<path fill="none" stroke="black" d="M72.5466,-1001.42C81.3358,-1065.72 112.276,-1270.27 156,-1318 175.409,-1339.19 204.726,-1351.02 231.221,-1357.64"/>
+<polygon fill="black" stroke="black" points="230.682,-1361.1 241.211,-1359.92 232.244,-1354.28 230.682,-1361.1"/>
+<text text-anchor="middle" x="180" y="-1350" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_soteria -->
+<g id="node14" class="node"><title>project_soteria</title>
+<g id="a_node14"><a xlink:href="https://projects.eclipse.org/projects/ee4j.soteria" xlink:title="Eclipse Soteria">
+<path fill="none" stroke="black" stroke-width="2" d="M330.5,-1032C330.5,-1032 256.5,-1032 256.5,-1032 250.5,-1032 244.5,-1026 244.5,-1020 244.5,-1020 244.5,-1008 244.5,-1008 244.5,-1002 250.5,-996 256.5,-996 256.5,-996 330.5,-996 330.5,-996 336.5,-996 342.5,-1002 342.5,-1008 342.5,-1008 342.5,-1020 342.5,-1020 342.5,-1026 336.5,-1032 330.5,-1032"/>
+<text text-anchor="middle" x="293.5" y="-1010.3" font-family="Times,serif" font-size="14.00">Eclipse Soteria</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_soteria -->
+<g id="edge78" class="edge"><title>project_glassfish&#45;&gt;project_soteria</title>
+<path fill="none" stroke="black" d="M104.278,-986.93C138.851,-991.902 192.876,-999.672 234.195,-1005.61"/>
+<polygon fill="black" stroke="black" points="233.742,-1009.09 244.138,-1007.04 234.738,-1002.16 233.742,-1009.09"/>
+<text text-anchor="middle" x="180" y="-1003" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_stable -->
+<g id="node15" class="node"><title>project_stable</title>
+<g id="a_node15"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jakartaee-stable" xlink:title="Eclipse Project for\nStable Jakarta EE APIs">
+<path fill="none" stroke="black" stroke-width="2" d="M353,-1769C353,-1769 234,-1769 234,-1769 228,-1769 222,-1763 222,-1757 222,-1757 222,-1743 222,-1743 222,-1737 228,-1731 234,-1731 234,-1731 353,-1731 353,-1731 359,-1731 365,-1737 365,-1743 365,-1743 365,-1757 365,-1757 365,-1763 359,-1769 353,-1769"/>
+<text text-anchor="middle" x="293.5" y="-1753.8" font-family="Times,serif" font-size="14.00">Eclipse Project for</text>
+<text text-anchor="middle" x="293.5" y="-1738.8" font-family="Times,serif" font-size="14.00">Stable Jakarta EE APIs</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_stable -->
+<g id="edge79" class="edge"><title>project_glassfish&#45;&gt;project_stable</title>
+<path fill="none" stroke="black" d="M69.7318,-1001.07C68.6666,-1103.12 68.4127,-1584.16 156,-1697 169.986,-1715.02 190.935,-1726.92 212.249,-1734.77"/>
+<polygon fill="black" stroke="black" points="211.119,-1738.08 221.714,-1738 213.379,-1731.46 211.119,-1738.08"/>
+<text text-anchor="middle" x="180" y="-1734" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_tyrus -->
+<g id="node16" class="node"><title>project_tyrus</title>
+<g id="a_node16"><a xlink:href="https://projects.eclipse.org/projects/ee4j.tyrus" xlink:title="Eclipse Tyrus">
+<path fill="none" stroke="black" stroke-width="2" d="M327.5,-1198C327.5,-1198 259.5,-1198 259.5,-1198 253.5,-1198 247.5,-1192 247.5,-1186 247.5,-1186 247.5,-1174 247.5,-1174 247.5,-1168 253.5,-1162 259.5,-1162 259.5,-1162 327.5,-1162 327.5,-1162 333.5,-1162 339.5,-1168 339.5,-1174 339.5,-1174 339.5,-1186 339.5,-1186 339.5,-1192 333.5,-1198 327.5,-1198"/>
+<text text-anchor="middle" x="293.5" y="-1176.3" font-family="Times,serif" font-size="14.00">Eclipse Tyrus</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_tyrus -->
+<g id="edge80" class="edge"><title>project_glassfish&#45;&gt;project_tyrus</title>
+<path fill="none" stroke="black" d="M82.3525,-1001.13C105.7,-1035.9 159.598,-1109.85 222,-1153 226.903,-1156.39 232.29,-1159.43 237.833,-1162.13"/>
+<polygon fill="black" stroke="black" points="236.697,-1165.46 247.252,-1166.37 239.569,-1159.07 236.697,-1165.46"/>
+<text text-anchor="middle" x="180" y="-1141" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_yasson -->
+<g id="node17" class="node"><title>project_yasson</title>
+<g id="a_node17"><a xlink:href="https://projects.eclipse.org/projects/ee4j.yasson" xlink:title="Eclipse Yasson">
+<path fill="none" stroke="black" stroke-width="2" d="M331.5,-1600C331.5,-1600 255.5,-1600 255.5,-1600 249.5,-1600 243.5,-1594 243.5,-1588 243.5,-1588 243.5,-1576 243.5,-1576 243.5,-1570 249.5,-1564 255.5,-1564 255.5,-1564 331.5,-1564 331.5,-1564 337.5,-1564 343.5,-1570 343.5,-1576 343.5,-1576 343.5,-1588 343.5,-1588 343.5,-1594 337.5,-1600 331.5,-1600"/>
+<text text-anchor="middle" x="293.5" y="-1578.3" font-family="Times,serif" font-size="14.00">Eclipse Yasson</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_yasson -->
+<g id="edge82" class="edge"><title>project_glassfish&#45;&gt;project_yasson</title>
+<path fill="none" stroke="black" d="M70.9331,-1001.16C75.3932,-1086.2 96.8224,-1429.2 156,-1516 173.906,-1542.26 205.293,-1558.44 233.458,-1568.19"/>
+<polygon fill="black" stroke="black" points="232.667,-1571.62 243.259,-1571.38 234.833,-1564.96 232.667,-1571.62"/>
+<text text-anchor="middle" x="180" y="-1557" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_hv -->
+<g id="node18" class="node"><title>project_hv</title>
+<g id="a_node18"><a xlink:href="http://hibernate.org/validator" xlink:title="Hibernate Validator">
+<path fill="lightgrey" stroke="black" d="M344,-1546C344,-1546 243,-1546 243,-1546 237,-1546 231,-1540 231,-1534 231,-1534 231,-1522 231,-1522 231,-1516 237,-1510 243,-1510 243,-1510 344,-1510 344,-1510 350,-1510 356,-1516 356,-1522 356,-1522 356,-1534 356,-1534 356,-1540 350,-1546 344,-1546"/>
+<text text-anchor="middle" x="293.5" y="-1524.3" font-family="Times,serif" font-size="14.00">Hibernate Validator</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_hv -->
+<g id="edge67" class="edge"><title>project_glassfish&#45;&gt;project_hv</title>
+<path fill="none" stroke="black" d="M71.2826,-1001.12C76.9438,-1080.82 101.852,-1385.96 156,-1463 171.592,-1485.18 196.827,-1500.05 221.384,-1509.89"/>
+<polygon fill="black" stroke="black" points="220.149,-1513.16 230.741,-1513.42 222.62,-1506.61 220.149,-1513.16"/>
+<text text-anchor="middle" x="180" y="-1504" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_jbatch -->
+<g id="node19" class="node"><title>project_jbatch</title>
+<g id="a_node19"><a xlink:href="https://github.com/WASdev/standards.jsr352.jbatch" xlink:title="JBatch">
+<path fill="lightgrey" stroke="black" d="M308.5,-1492C308.5,-1492 278.5,-1492 278.5,-1492 272.5,-1492 266.5,-1486 266.5,-1480 266.5,-1480 266.5,-1468 266.5,-1468 266.5,-1462 272.5,-1456 278.5,-1456 278.5,-1456 308.5,-1456 308.5,-1456 314.5,-1456 320.5,-1462 320.5,-1468 320.5,-1468 320.5,-1480 320.5,-1480 320.5,-1486 314.5,-1492 308.5,-1492"/>
+<text text-anchor="middle" x="293.5" y="-1470.3" font-family="Times,serif" font-size="14.00">JBatch</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_jbatch -->
+<g id="edge71" class="edge"><title>project_glassfish&#45;&gt;project_jbatch</title>
+<path fill="none" stroke="black" d="M71.6555,-1001.13C78.4154,-1075.55 105.968,-1344.84 156,-1412 180.064,-1444.3 224.914,-1460.21 256.627,-1467.73"/>
+<polygon fill="black" stroke="black" points="255.9,-1471.16 266.419,-1469.89 257.408,-1464.32 255.9,-1471.16"/>
+<text text-anchor="middle" x="180" y="-1451" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- project_weld -->
+<g id="node20" class="node"><title>project_weld</title>
+<g id="a_node20"><a xlink:href="http://weld.cdi-spec.org" xlink:title="Weld">
+<path fill="lightgrey" stroke="black" d="M308.5,-359C308.5,-359 278.5,-359 278.5,-359 272.5,-359 266.5,-353 266.5,-347 266.5,-347 266.5,-335 266.5,-335 266.5,-329 272.5,-323 278.5,-323 278.5,-323 308.5,-323 308.5,-323 314.5,-323 320.5,-329 320.5,-335 320.5,-335 320.5,-347 320.5,-347 320.5,-353 314.5,-359 308.5,-359"/>
+<text text-anchor="middle" x="293.5" y="-337.3" font-family="Times,serif" font-size="14.00">Weld</text>
+</a>
+</g>
+</g>
+<!-- project_glassfish&#45;&gt;project_weld -->
+<g id="edge81" class="edge"><title>project_glassfish&#45;&gt;project_weld</title>
+<path fill="none" stroke="black" d="M72.9875,-962.736C82.8817,-898.652 115.243,-686.75 138,-511 142.509,-476.173 130.931,-378.592 156,-354 181.955,-328.539 225.527,-328.831 256.456,-333.21"/>
+<polygon fill="black" stroke="black" points="255.987,-336.68 266.417,-334.821 257.104,-329.77 255.987,-336.68"/>
+<text text-anchor="middle" x="180" y="-357" font-family="Times,serif" font-size="10.00">consumes</text>
+</g>
+<!-- ca -->
+<g id="node35" class="node"><title>ca</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="335,-1960 252,-1960 252,-1922 335,-1922 335,-1960"/>
+<text text-anchor="middle" x="293.5" y="-1944.8" font-family="Times,serif" font-size="14.00">Common</text>
+<text text-anchor="middle" x="293.5" y="-1929.8" font-family="Times,serif" font-size="14.00">Annotations</text>
+</g>
+<!-- project_glassfish&#45;&gt;ca -->
+<g id="edge12" class="edge"><title>project_glassfish&#45;&gt;ca</title>
+<path fill="none" stroke="black" d="M70.5635,-1001.02C74.413,-1125.62 98.4224,-1822.3 156,-1895 176.416,-1920.78 211.873,-1932.21 241.533,-1937.23"/>
+<polygon fill="black" stroke="black" points="241.341,-1940.74 251.748,-1938.76 242.373,-1933.82 241.341,-1940.74"/>
+<text text-anchor="middle" x="180" y="-1930" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- ejb -->
+<g id="node36" class="node"><title>ejb</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="320.5,-148 266.5,-148 266.5,-112 320.5,-112 320.5,-148"/>
+<text text-anchor="middle" x="293.5" y="-126.3" font-family="Times,serif" font-size="14.00">EJB</text>
+</g>
+<!-- project_glassfish&#45;&gt;ejb -->
+<g id="edge16" class="edge"><title>project_glassfish&#45;&gt;ejb</title>
+<path fill="none" stroke="black" d="M73.326,-962.776C84.2738,-898.815 119.537,-687.253 138,-511 141.19,-480.546 139.059,-261.508 156,-236 169.196,-216.131 188.422,-230.061 204,-212 220.799,-192.524 204.268,-175.631 222,-157 231.197,-147.336 244.227,-141.089 256.586,-137.069"/>
+<polygon fill="black" stroke="black" points="257.617,-140.414 266.269,-134.299 255.692,-133.684 257.617,-140.414"/>
+<text text-anchor="middle" x="180" y="-239" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- interceptors -->
+<g id="node39" class="node"><title>interceptors</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="592,-251 511,-251 511,-215 592,-215 592,-251"/>
+<text text-anchor="middle" x="551.5" y="-229.3" font-family="Times,serif" font-size="14.00">Interceptors</text>
+</g>
+<!-- project_glassfish&#45;&gt;interceptors -->
+<g id="edge19" class="edge"><title>project_glassfish&#45;&gt;interceptors</title>
+<path fill="none" stroke="black" d="M73.0955,-962.75C83.3256,-898.708 116.612,-686.922 138,-511 142.905,-470.655 131.5,-361.427 156,-329 176.952,-301.27 399.772,-259.287 500.98,-241.472"/>
+<polygon fill="black" stroke="black" points="501.718,-244.896 510.964,-239.723 500.51,-238.001 501.718,-244.896"/>
+<text text-anchor="middle" x="293.5" y="-303" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jacc -->
+<g id="node40" class="node"><title>jacc</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="320.5,-507 266.5,-507 266.5,-471 320.5,-471 320.5,-507"/>
+<text text-anchor="middle" x="293.5" y="-485.3" font-family="Times,serif" font-size="14.00">JACC</text>
+</g>
+<!-- project_glassfish&#45;&gt;jacc -->
+<g id="edge22" class="edge"><title>project_glassfish&#45;&gt;jacc</title>
+<path fill="none" stroke="black" d="M70.8023,-962.8C74.5109,-883.559 92.6113,-583.064 156,-518 169.695,-503.944 220.723,-496.064 256.348,-492.173"/>
+<polygon fill="black" stroke="black" points="256.809,-495.644 266.397,-491.135 256.09,-488.681 256.809,-495.644"/>
+<text text-anchor="middle" x="180" y="-521" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jaspic -->
+<g id="node43" class="node"><title>jaspic</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="786.5,-973 726.5,-973 726.5,-937 786.5,-937 786.5,-973"/>
+<text text-anchor="middle" x="756.5" y="-951.3" font-family="Times,serif" font-size="14.00">JASPIC</text>
+</g>
+<!-- project_glassfish&#45;&gt;jaspic -->
+<g id="edge21" class="edge"><title>project_glassfish&#45;&gt;jaspic</title>
+<path fill="none" stroke="black" d="M92.1756,-962.966C120.51,-939.56 171.905,-900.103 222,-877 281.716,-849.459 313.773,-880.236 365,-839 378.626,-828.032 368.068,-813.111 383,-804 417.915,-782.695 620.675,-790.327 662,-814 705.654,-839.007 732.748,-893.67 745.9,-927.111"/>
+<polygon fill="black" stroke="black" points="742.733,-928.631 749.537,-936.752 749.282,-926.16 742.733,-928.631"/>
+<text text-anchor="middle" x="432" y="-807" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jca -->
+<g id="node48" class="node"><title>jca</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="320.5,-258 266.5,-258 266.5,-222 320.5,-222 320.5,-258"/>
+<text text-anchor="middle" x="293.5" y="-236.3" font-family="Times,serif" font-size="14.00">JCA</text>
+</g>
+<!-- project_glassfish&#45;&gt;jca -->
+<g id="edge15" class="edge"><title>project_glassfish&#45;&gt;jca</title>
+<path fill="none" stroke="black" d="M73.2643,-962.769C84.0201,-898.788 118.754,-687.169 138,-511 140.928,-484.196 138.265,-289.309 156,-269 168.945,-254.177 220.434,-246.488 256.332,-242.849"/>
+<polygon fill="black" stroke="black" points="256.831,-246.317 266.455,-241.886 256.168,-239.349 256.831,-246.317"/>
+<text text-anchor="middle" x="180" y="-272" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jsp -->
+<g id="node54" class="node"><title>jsp</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="783.5,-1342 729.5,-1342 729.5,-1306 783.5,-1306 783.5,-1342"/>
+<text text-anchor="middle" x="756.5" y="-1320.3" font-family="Times,serif" font-size="14.00">JSP</text>
+</g>
+<!-- project_glassfish&#45;&gt;jsp -->
+<g id="edge14" class="edge"><title>project_glassfish&#45;&gt;jsp</title>
+<path fill="none" stroke="black" d="M69.7187,-1001.28C70.1648,-1050.51 78.9001,-1181.1 156,-1240 235.233,-1300.53 506.555,-1243.87 604,-1265 645.319,-1273.96 690.153,-1292.63 720.242,-1306.59"/>
+<polygon fill="black" stroke="black" points="718.932,-1309.84 729.47,-1310.93 721.915,-1303.51 718.932,-1309.84"/>
+<text text-anchor="middle" x="432" y="-1269" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jta -->
+<g id="node56" class="node"><title>jta</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-507 524.5,-507 524.5,-471 578.5,-471 578.5,-507"/>
+<text text-anchor="middle" x="551.5" y="-485.3" font-family="Times,serif" font-size="14.00">JTA</text>
+</g>
+<!-- project_glassfish&#45;&gt;jta -->
+<g id="edge20" class="edge"><title>project_glassfish&#45;&gt;jta</title>
+<path fill="none" stroke="black" d="M71.3617,-962.709C75.9438,-907.281 94.1719,-743.989 156,-626 176.455,-586.965 183.668,-573.743 222,-552 247.288,-537.656 434.032,-507.202 514.156,-494.62"/>
+<polygon fill="black" stroke="black" points="514.94,-498.04 524.279,-493.036 513.858,-491.124 514.94,-498.04"/>
+<text text-anchor="middle" x="293.5" y="-555" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- deployment -->
+<g id="node57" class="node"><title>deployment</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="593.5,-1692 509.5,-1692 509.5,-1654 593.5,-1654 593.5,-1692"/>
+<text text-anchor="middle" x="551.5" y="-1676.8" font-family="Times,serif" font-size="14.00">Enterprise</text>
+<text text-anchor="middle" x="551.5" y="-1661.8" font-family="Times,serif" font-size="14.00">Deployment</text>
+</g>
+<!-- project_glassfish&#45;&gt;deployment -->
+<g id="edge17" class="edge"><title>project_glassfish&#45;&gt;deployment</title>
+<path fill="none" stroke="black" d="M70.6488,-1001.19C74.0146,-1091.33 91.8763,-1472.33 156,-1569 194.052,-1626.36 401.742,-1656.57 499.535,-1667.79"/>
+<polygon fill="black" stroke="black" points="499.163,-1671.27 509.492,-1668.91 499.946,-1664.32 499.163,-1671.27"/>
+<text text-anchor="middle" x="293.5" y="-1650" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- management -->
+<g id="node58" class="node"><title>management</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="596,-1748 507,-1748 507,-1710 596,-1710 596,-1748"/>
+<text text-anchor="middle" x="551.5" y="-1732.8" font-family="Times,serif" font-size="14.00">Enterprise</text>
+<text text-anchor="middle" x="551.5" y="-1717.8" font-family="Times,serif" font-size="14.00">Management</text>
+</g>
+<!-- project_glassfish&#45;&gt;management -->
+<g id="edge18" class="edge"><title>project_glassfish&#45;&gt;management</title>
+<path fill="none" stroke="black" d="M70.9683,-1001.27C75.8632,-1093.58 99.8906,-1490.58 156,-1599 225.342,-1732.99 336.209,-1654.61 481,-1697 489.063,-1699.36 497.385,-1702.51 505.345,-1705.91"/>
+<polygon fill="black" stroke="black" points="503.927,-1709.11 514.486,-1709.99 506.779,-1702.72 503.927,-1709.11"/>
+<text text-anchor="middle" x="293.5" y="-1685" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- servlet -->
+<g id="node60" class="node"><title>servlet</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="985.5,-1225 925.5,-1225 925.5,-1189 985.5,-1189 985.5,-1225"/>
+<text text-anchor="middle" x="955.5" y="-1203.3" font-family="Times,serif" font-size="14.00">Servlets</text>
+</g>
+<!-- project_glassfish&#45;&gt;servlet -->
+<g id="edge13" class="edge"><title>project_glassfish&#45;&gt;servlet</title>
+<path fill="none" stroke="black" d="M74.7601,-1001.01C88.0585,-1049.16 130.764,-1174.43 222,-1207 351.146,-1253.1 782.537,-1221.53 915.286,-1210.43"/>
+<polygon fill="black" stroke="black" points="915.732,-1213.91 925.402,-1209.58 915.143,-1206.93 915.732,-1213.91"/>
+<text text-anchor="middle" x="551.5" y="-1234" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jaf -->
+<g id="node41" class="node"><title>jaf</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="783.5,-665 729.5,-665 729.5,-629 783.5,-629 783.5,-665"/>
+<text text-anchor="middle" x="756.5" y="-643.3" font-family="Times,serif" font-size="14.00">JAF</text>
+</g>
+<!-- project_jaf&#45;&gt;jaf -->
+<g id="edge42" class="edge"><title>project_jaf&#45;&gt;jaf</title>
+<path fill="none" stroke="black" d="M481.329,-417.19C524.507,-425.163 583.949,-437.955 604,-451 670.527,-494.283 719.867,-577.016 742.228,-619.829"/>
+<polygon fill="black" stroke="black" points="739.161,-621.519 746.834,-628.824 745.391,-618.328 739.161,-621.519"/>
+<text text-anchor="middle" x="551.5" y="-454" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- javamail -->
+<g id="node42" class="node"><title>javamail</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="585,-665 518,-665 518,-629 585,-629 585,-665"/>
+<text text-anchor="middle" x="551.5" y="-643.3" font-family="Times,serif" font-size="14.00">JavaMail</text>
+</g>
+<!-- project_javamail&#45;&gt;javamail -->
+<g id="edge43" class="edge"><title>project_javamail&#45;&gt;javamail</title>
+<path fill="none" stroke="black" d="M342.652,-647C390.219,-647 462.282,-647 507.843,-647"/>
+<polygon fill="black" stroke="black" points="507.984,-650.5 517.984,-647 507.984,-643.5 507.984,-650.5"/>
+<text text-anchor="middle" x="432" y="-650" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jaxb -->
+<g id="node46" class="node"><title>jaxb</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-609 524.5,-609 524.5,-573 578.5,-573 578.5,-609"/>
+<text text-anchor="middle" x="551.5" y="-587.3" font-family="Times,serif" font-size="14.00">JAXB</text>
+</g>
+<!-- project_jaxb&#45;&gt;jaxb -->
+<g id="edge45" class="edge"><title>project_jaxb&#45;&gt;jaxb</title>
+<path fill="none" stroke="black" d="M342.652,-591C392.532,-591 469.349,-591 514.297,-591"/>
+<polygon fill="black" stroke="black" points="514.463,-594.5 524.463,-591 514.463,-587.5 514.463,-594.5"/>
+<text text-anchor="middle" x="432" y="-594" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jaxrs -->
+<g id="node47" class="node"><title>jaxrs</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="582.5,-747 520.5,-747 520.5,-711 582.5,-711 582.5,-747"/>
+<text text-anchor="middle" x="551.5" y="-725.3" font-family="Times,serif" font-size="14.00">JAX&#45;RS</text>
+</g>
+<!-- project_jersey&#45;&gt;jaxrs -->
+<g id="edge51" class="edge"><title>project_jersey&#45;&gt;jaxrs</title>
+<path fill="none" stroke="black" d="M340.563,-752.782C388.909,-747.305 464.157,-738.781 510.214,-733.564"/>
+<polygon fill="black" stroke="black" points="510.877,-737.011 520.419,-732.408 510.089,-730.056 510.877,-737.011"/>
+<text text-anchor="middle" x="432" y="-750" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jms -->
+<g id="node49" class="node"><title>jms</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-112 524.5,-112 524.5,-76 578.5,-76 578.5,-112"/>
+<text text-anchor="middle" x="551.5" y="-90.3" font-family="Times,serif" font-size="14.00">JMS</text>
+</g>
+<!-- project_jms&#45;&gt;jms -->
+<g id="edge52" class="edge"><title>project_jms&#45;&gt;jms</title>
+<path fill="none" stroke="black" d="M342.603,-73.0108C380.378,-72.114 434.229,-72.3044 481,-78 491.991,-79.3384 503.783,-81.694 514.476,-84.1929"/>
+<polygon fill="black" stroke="black" points="513.784,-87.6267 524.329,-86.6041 515.448,-80.8273 513.784,-87.6267"/>
+<text text-anchor="middle" x="432" y="-81" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jsonp -->
+<g id="node52" class="node"><title>jsonp</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="582,-37 521,-37 521,-1 582,-1 582,-37"/>
+<text text-anchor="middle" x="551.5" y="-15.3" font-family="Times,serif" font-size="14.00">JSON&#45;P</text>
+</g>
+<!-- project_jsonp&#45;&gt;jsonp -->
+<g id="edge53" class="edge"><title>project_jsonp&#45;&gt;jsonp</title>
+<path fill="none" stroke="black" d="M359.1,-19C406.79,-19 470.191,-19 510.683,-19"/>
+<polygon fill="black" stroke="black" points="510.711,-22.5001 520.711,-19 510.711,-15.5001 510.711,-22.5001"/>
+<text text-anchor="middle" x="432" y="-22" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jstl -->
+<g id="node55" class="node"><title>jstl</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1310 524.5,-1310 524.5,-1274 578.5,-1274 578.5,-1310"/>
+<text text-anchor="middle" x="551.5" y="-1288.3" font-family="Times,serif" font-size="14.00">JSTL</text>
+</g>
+<!-- project_jstl&#45;&gt;jstl -->
+<g id="edge55" class="edge"><title>project_jstl&#45;&gt;jstl</title>
+<path fill="none" stroke="black" d="M342.652,-1307.43C392.532,-1303.72 469.349,-1298.02 514.297,-1294.69"/>
+<polygon fill="black" stroke="black" points="514.749,-1298.16 524.463,-1293.93 514.231,-1291.18 514.749,-1298.16"/>
+<text text-anchor="middle" x="432" y="-1307" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jaxws -->
+<g id="node44" class="node"><title>jaxws</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="585,-864 518,-864 518,-828 585,-828 585,-864"/>
+<text text-anchor="middle" x="551.5" y="-842.3" font-family="Times,serif" font-size="14.00">JAX&#45;WS</text>
+</g>
+<!-- project_metro&#45;&gt;jaxws -->
+<g id="edge24" class="edge"><title>project_metro&#45;&gt;jaxws</title>
+<path fill="none" stroke="black" d="M340.7,-948.706C349.595,-944.868 358.235,-939.765 365,-933 380.817,-917.183 366.179,-900.745 383,-886 417.422,-855.826 470.583,-847.437 507.756,-845.568"/>
+<polygon fill="black" stroke="black" points="507.923,-849.064 517.788,-845.201 507.667,-842.069 507.923,-849.064"/>
+<text text-anchor="middle" x="432" y="-889" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jws -->
+<g id="node45" class="node"><title>jws</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-918 524.5,-918 524.5,-882 578.5,-882 578.5,-918"/>
+<text text-anchor="middle" x="551.5" y="-896.3" font-family="Times,serif" font-size="14.00">JWS</text>
+</g>
+<!-- project_metro&#45;&gt;jws -->
+<g id="edge25" class="edge"><title>project_metro&#45;&gt;jws</title>
+<path fill="none" stroke="black" d="M340.766,-966.648C380.16,-970.133 437.17,-969.891 481,-948 491.997,-942.507 489.384,-934.658 499,-927 504.027,-922.997 509.738,-919.315 515.483,-916.042"/>
+<polygon fill="black" stroke="black" points="517.277,-919.052 524.443,-911.249 513.975,-912.88 517.277,-919.052"/>
+<text text-anchor="middle" x="432" y="-971" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- saaj -->
+<g id="node63" class="node"><title>saaj</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1028 524.5,-1028 524.5,-992 578.5,-992 578.5,-1028"/>
+<text text-anchor="middle" x="551.5" y="-1006.3" font-family="Times,serif" font-size="14.00">SAAJ</text>
+</g>
+<!-- project_metro&#45;&gt;saaj -->
+<g id="edge26" class="edge"><title>project_metro&#45;&gt;saaj</title>
+<path fill="none" stroke="black" d="M340.734,-972.216C354.303,-975.605 369.203,-979.137 383,-982 427.998,-991.339 480.298,-999.686 514.325,-1004.79"/>
+<polygon fill="black" stroke="black" points="513.865,-1008.26 524.271,-1006.26 514.893,-1001.33 513.865,-1008.26"/>
+<text text-anchor="middle" x="432" y="-1002" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jsf -->
+<g id="node53" class="node"><title>jsf</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1420 524.5,-1420 524.5,-1384 578.5,-1384 578.5,-1420"/>
+<text text-anchor="middle" x="551.5" y="-1398.3" font-family="Times,serif" font-size="14.00">JSF</text>
+</g>
+<!-- project_mojarra&#45;&gt;jsf -->
+<g id="edge23" class="edge"><title>project_mojarra&#45;&gt;jsf</title>
+<path fill="none" stroke="black" d="M345.69,-1373.2C395.671,-1380.23 470.446,-1390.74 514.469,-1396.93"/>
+<polygon fill="black" stroke="black" points="514.045,-1400.41 524.435,-1398.33 515.02,-1393.48 514.045,-1400.41"/>
+<text text-anchor="middle" x="432" y="-1394" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- es -->
+<g id="node38" class="node"><title>es</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="587.5,-1084 515.5,-1084 515.5,-1046 587.5,-1046 587.5,-1084"/>
+<text text-anchor="middle" x="551.5" y="-1068.8" font-family="Times,serif" font-size="14.00">Enterprise</text>
+<text text-anchor="middle" x="551.5" y="-1053.8" font-family="Times,serif" font-size="14.00">Security</text>
+</g>
+<!-- project_soteria&#45;&gt;es -->
+<g id="edge27" class="edge"><title>project_soteria&#45;&gt;es</title>
+<path fill="none" stroke="black" d="M342.81,-1023.54C380.466,-1030.99 434.065,-1041.62 481,-1051 488.807,-1052.56 497.107,-1054.23 505.151,-1055.85"/>
+<polygon fill="black" stroke="black" points="504.653,-1059.32 515.148,-1057.86 506.035,-1052.45 504.653,-1059.32"/>
+<text text-anchor="middle" x="432" y="-1054" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- project_stable&#45;&gt;deployment -->
+<g id="edge58" class="edge"><title>project_stable&#45;&gt;deployment</title>
+<path fill="none" stroke="black" d="M349.115,-1730.98C360.289,-1727.23 371.997,-1723.41 383,-1720 421.829,-1707.98 466.123,-1695.61 499.406,-1686.58"/>
+<polygon fill="black" stroke="black" points="500.623,-1689.87 509.363,-1683.89 498.796,-1683.12 500.623,-1689.87"/>
+<text text-anchor="middle" x="432" y="-1723" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_stable&#45;&gt;management -->
+<g id="edge59" class="edge"><title>project_stable&#45;&gt;management</title>
+<path fill="none" stroke="black" d="M365.131,-1744.21C406.661,-1740.8 458.351,-1736.56 496.589,-1733.42"/>
+<polygon fill="black" stroke="black" points="497.317,-1736.87 506.997,-1732.57 496.745,-1729.9 497.317,-1736.87"/>
+<text text-anchor="middle" x="432" y="-1745" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jaxr -->
+<g id="node59" class="node"><title>jaxr</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1802 524.5,-1802 524.5,-1766 578.5,-1766 578.5,-1802"/>
+<text text-anchor="middle" x="551.5" y="-1780.3" font-family="Times,serif" font-size="14.00">JAXR</text>
+</g>
+<!-- project_stable&#45;&gt;jaxr -->
+<g id="edge60" class="edge"><title>project_stable&#45;&gt;jaxr</title>
+<path fill="none" stroke="black" d="M365.131,-1759.38C413.425,-1765.79 475.458,-1774.03 514.099,-1779.17"/>
+<polygon fill="black" stroke="black" points="513.973,-1782.68 524.347,-1780.53 514.894,-1775.74 513.973,-1782.68"/>
+<text text-anchor="middle" x="432" y="-1776" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- jaxrpc -->
+<g id="node62" class="node"><title>jaxrpc</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="587,-1856 516,-1856 516,-1820 587,-1820 587,-1856"/>
+<text text-anchor="middle" x="551.5" y="-1834.3" font-family="Times,serif" font-size="14.00">JAX&#45;RPC</text>
+</g>
+<!-- project_stable&#45;&gt;jaxrpc -->
+<g id="edge61" class="edge"><title>project_stable&#45;&gt;jaxrpc</title>
+<path fill="none" stroke="black" d="M336.417,-1769.17C351.015,-1775.54 367.595,-1782.41 383,-1788 424.158,-1802.92 472.119,-1816.9 506.146,-1826.27"/>
+<polygon fill="black" stroke="black" points="505.227,-1829.64 515.796,-1828.9 507.071,-1822.89 505.227,-1829.64"/>
+<text text-anchor="middle" x="432" y="-1821" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- websocket -->
+<g id="node61" class="node"><title>websocket</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="591.5,-1157 511.5,-1157 511.5,-1121 591.5,-1121 591.5,-1157"/>
+<text text-anchor="middle" x="551.5" y="-1135.3" font-family="Times,serif" font-size="14.00">WebSocket</text>
+</g>
+<!-- project_tyrus&#45;&gt;websocket -->
+<g id="edge28" class="edge"><title>project_tyrus&#45;&gt;websocket</title>
+<path fill="none" stroke="black" d="M339.678,-1172.76C385.012,-1165.5 454.636,-1154.35 501.333,-1146.87"/>
+<polygon fill="black" stroke="black" points="501.903,-1150.33 511.224,-1145.29 500.796,-1143.42 501.903,-1150.33"/>
+<text text-anchor="middle" x="432" y="-1168" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- jsonb -->
+<g id="node51" class="node"><title>jsonb</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="582.5,-1636 520.5,-1636 520.5,-1600 582.5,-1600 582.5,-1636"/>
+<text text-anchor="middle" x="551.5" y="-1614.3" font-family="Times,serif" font-size="14.00">JSON&#45;B</text>
+</g>
+<!-- project_yasson&#45;&gt;jsonb -->
+<g id="edge63" class="edge"><title>project_yasson&#45;&gt;jsonb</title>
+<path fill="none" stroke="black" d="M343.556,-1588.9C392.045,-1595.72 465.332,-1606.02 510.431,-1612.37"/>
+<polygon fill="black" stroke="black" points="510.042,-1615.84 520.432,-1613.77 511.017,-1608.91 510.042,-1615.84"/>
+<text text-anchor="middle" x="432" y="-1610" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- bv -->
+<g id="node66" class="node"><title>bv</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="604,-1582 499,-1582 499,-1546 604,-1546 604,-1582"/>
+<text text-anchor="middle" x="551.5" y="-1560.3" font-family="Times,serif" font-size="14.00">Bean Validation</text>
+</g>
+<!-- project_hv&#45;&gt;bv -->
+<g id="edge32" class="edge"><title>project_hv&#45;&gt;bv</title>
+<path fill="none" stroke="black" d="M356.144,-1536.67C396.379,-1542.33 448.706,-1549.69 488.927,-1555.34"/>
+<polygon fill="black" stroke="black" points="488.487,-1558.81 498.877,-1556.74 489.462,-1551.88 488.487,-1558.81"/>
+<text text-anchor="middle" x="432" y="-1556" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- batch -->
+<g id="node67" class="node"><title>batch</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-1528 524.5,-1528 524.5,-1492 578.5,-1492 578.5,-1528"/>
+<text text-anchor="middle" x="551.5" y="-1506.3" font-family="Times,serif" font-size="14.00">Batch</text>
+</g>
+<!-- project_jbatch&#45;&gt;batch -->
+<g id="edge33" class="edge"><title>project_jbatch&#45;&gt;batch</title>
+<path fill="none" stroke="black" d="M320.932,-1477.72C366.946,-1484.19 461.831,-1497.53 514.055,-1504.87"/>
+<polygon fill="black" stroke="black" points="513.822,-1508.38 524.212,-1506.3 514.796,-1501.44 513.822,-1508.38"/>
+<text text-anchor="middle" x="432" y="-1502" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- project_weld&#45;&gt;interceptors -->
+<g id="edge31" class="edge"><title>project_weld&#45;&gt;interceptors</title>
+<path fill="none" stroke="black" d="M320.749,-333.252C338.314,-328.149 361.977,-321.433 383,-316 426.316,-304.805 441.139,-313.315 481,-293 498.054,-284.308 514.4,-270.57 526.951,-258.431"/>
+<polygon fill="black" stroke="black" points="529.648,-260.684 534.247,-251.139 524.7,-255.732 529.648,-260.684"/>
+<text text-anchor="middle" x="432" y="-319" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- cdi -->
+<g id="node64" class="node"><title>cdi</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="578.5,-406 524.5,-406 524.5,-370 578.5,-370 578.5,-406"/>
+<text text-anchor="middle" x="551.5" y="-384.3" font-family="Times,serif" font-size="14.00">CDI</text>
+</g>
+<!-- project_weld&#45;&gt;cdi -->
+<g id="edge29" class="edge"><title>project_weld&#45;&gt;cdi</title>
+<path fill="none" stroke="black" d="M320.51,-345.104C356.612,-350.881 423.913,-361.947 481,-373 491.929,-375.116 503.782,-377.602 514.552,-379.936"/>
+<polygon fill="black" stroke="black" points="513.964,-383.39 524.481,-382.109 515.461,-376.552 513.964,-383.39"/>
+<text text-anchor="middle" x="432" y="-376" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- di -->
+<g id="node65" class="node"><title>di</title>
+<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="824.5,-379 688.5,-379 688.5,-343 824.5,-343 824.5,-379"/>
+<text text-anchor="middle" x="756.5" y="-357.3" font-family="Times,serif" font-size="14.00">Dependency Injection</text>
+</g>
+<!-- project_weld&#45;&gt;di -->
+<g id="edge30" class="edge"><title>project_weld&#45;&gt;di</title>
+<path fill="none" stroke="black" d="M320.602,-341.377C373.893,-342.23 499.044,-344.666 604,-350 628.197,-351.23 654.54,-352.994 678.371,-354.75"/>
+<polygon fill="black" stroke="black" points="678.184,-358.245 688.417,-355.5 678.705,-351.265 678.184,-358.245"/>
+<text text-anchor="middle" x="551.5" y="-353" font-family="Times,serif" font-size="10.00">implements</text>
+</g>
+<!-- project_platform -->
+<g id="node21" class="node"><title>project_platform</title>
+<g id="a_node21"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-jakarta-ee-platform" xlink:title="Eclipse Project for\nJakarta EE Platform">
+<path fill="none" stroke="black" d="M120.5,-2026C120.5,-2026 17.5,-2026 17.5,-2026 11.5,-2026 5.5,-2020 5.5,-2014 5.5,-2014 5.5,-2000 5.5,-2000 5.5,-1994 11.5,-1988 17.5,-1988 17.5,-1988 120.5,-1988 120.5,-1988 126.5,-1988 132.5,-1994 132.5,-2000 132.5,-2000 132.5,-2014 132.5,-2014 132.5,-2020 126.5,-2026 120.5,-2026"/>
+<text text-anchor="middle" x="69" y="-2010.8" font-family="Times,serif" font-size="14.00">Eclipse Project for</text>
+<text text-anchor="middle" x="69" y="-1995.8" font-family="Times,serif" font-size="14.00">Jakarta EE Platform</text>
+</a>
+</g>
+</g>
+<!-- project_ca -->
+<g id="node22" class="node"><title>project_ca</title>
+<g id="a_node22"><a xlink:href="https://projects.eclipse.org/projects/ee4j.ca" xlink:title="Eclipse Project for\nCommon Annotations">
+<path fill="none" stroke="black" d="M126,-1970C126,-1970 12,-1970 12,-1970 6,-1970 0,-1964 0,-1958 0,-1958 0,-1944 0,-1944 0,-1938 6,-1932 12,-1932 12,-1932 126,-1932 126,-1932 132,-1932 138,-1938 138,-1944 138,-1944 138,-1958 138,-1958 138,-1964 132,-1970 126,-1970"/>
+<text text-anchor="middle" x="69" y="-1954.8" font-family="Times,serif" font-size="14.00">Eclipse Project for</text>
+<text text-anchor="middle" x="69" y="-1939.8" font-family="Times,serif" font-size="14.00">Common Annotations</text>
+</a>
+</g>
+</g>
+<!-- project_ca&#45;&gt;ca -->
+<g id="edge35" class="edge"><title>project_ca&#45;&gt;ca</title>
+<path fill="none" stroke="black" d="M138.269,-1947.93C171.667,-1946.43 211.172,-1944.66 241.839,-1943.28"/>
+<polygon fill="black" stroke="black" points="242.046,-1946.77 251.879,-1942.83 241.732,-1939.78 242.046,-1946.77"/>
+<text text-anchor="middle" x="180" y="-1949" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_ejb -->
+<g id="node23" class="node"><title>project_ejb</title>
+<g id="a_node23"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-ejb" xlink:title="Eclipse Project\nfor EJB">
+<path fill="none" stroke="black" d="M106,-129C106,-129 32,-129 32,-129 26,-129 20,-123 20,-117 20,-117 20,-103 20,-103 20,-97 26,-91 32,-91 32,-91 106,-91 106,-91 112,-91 118,-97 118,-103 118,-103 118,-117 118,-117 118,-123 112,-129 106,-129"/>
+<text text-anchor="middle" x="69" y="-113.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="69" y="-98.8" font-family="Times,serif" font-size="14.00">for EJB</text>
+</a>
+</g>
+</g>
+<!-- project_ejb&#45;&gt;ejb -->
+<g id="edge37" class="edge"><title>project_ejb&#45;&gt;ejb</title>
+<path fill="none" stroke="black" d="M118.005,-114.315C159.576,-118.052 218.79,-123.374 256.429,-126.758"/>
+<polygon fill="black" stroke="black" points="256.167,-130.248 266.44,-127.658 256.794,-123.276 256.167,-130.248"/>
+<text text-anchor="middle" x="180" y="-125" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_es -->
+<g id="node24" class="node"><title>project_es</title>
+<g id="a_node24"><a xlink:href="https://projects.eclipse.org/projects/ee4j.es/" xlink:title="Eclipse Project for\nEnterprise Security">
+<path fill="none" stroke="black" d="M342,-1088C342,-1088 245,-1088 245,-1088 239,-1088 233,-1082 233,-1076 233,-1076 233,-1062 233,-1062 233,-1056 239,-1050 245,-1050 245,-1050 342,-1050 342,-1050 348,-1050 354,-1056 354,-1062 354,-1062 354,-1076 354,-1076 354,-1082 348,-1088 342,-1088"/>
+<text text-anchor="middle" x="293.5" y="-1072.8" font-family="Times,serif" font-size="14.00">Eclipse Project for</text>
+<text text-anchor="middle" x="293.5" y="-1057.8" font-family="Times,serif" font-size="14.00">Enterprise Security</text>
+</a>
+</g>
+</g>
+<!-- project_es&#45;&gt;es -->
+<g id="edge39" class="edge"><title>project_es&#45;&gt;es</title>
+<path fill="none" stroke="black" d="M354.198,-1068.07C400.234,-1067.35 462.942,-1066.37 504.978,-1065.71"/>
+<polygon fill="black" stroke="black" points="505.253,-1069.21 515.197,-1065.55 505.144,-1062.21 505.253,-1069.21"/>
+<text text-anchor="middle" x="432" y="-1070" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_interceptors -->
+<g id="node25" class="node"><title>project_interceptors</title>
+<g id="a_node25"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-interceptors" xlink:title="Eclipse Project\nfor Interceptors">
+<path fill="none" stroke="black" d="M332,-204C332,-204 255,-204 255,-204 249,-204 243,-198 243,-192 243,-192 243,-178 243,-178 243,-172 249,-166 255,-166 255,-166 332,-166 332,-166 338,-166 344,-172 344,-178 344,-178 344,-192 344,-192 344,-198 338,-204 332,-204"/>
+<text text-anchor="middle" x="293.5" y="-188.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-173.8" font-family="Times,serif" font-size="14.00">for Interceptors</text>
+</a>
+</g>
+</g>
+<!-- project_interceptors&#45;&gt;interceptors -->
+<g id="edge40" class="edge"><title>project_interceptors&#45;&gt;interceptors</title>
+<path fill="none" stroke="black" d="M344.163,-194.312C389.313,-202.777 455.591,-215.205 500.764,-223.675"/>
+<polygon fill="black" stroke="black" points="500.159,-227.122 510.633,-225.525 501.449,-220.242 500.159,-227.122"/>
+<text text-anchor="middle" x="432" y="-222" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jacc -->
+<g id="node26" class="node"><title>project_jacc</title>
+<g id="a_node26"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jacc" xlink:title="Eclipse Project\nfor JACC">
+<path fill="none" stroke="black" d="M106,-502C106,-502 32,-502 32,-502 26,-502 20,-496 20,-490 20,-490 20,-476 20,-476 20,-470 26,-464 32,-464 32,-464 106,-464 106,-464 112,-464 118,-470 118,-476 118,-476 118,-490 118,-490 118,-496 112,-502 106,-502"/>
+<text text-anchor="middle" x="69" y="-486.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="69" y="-471.8" font-family="Times,serif" font-size="14.00">for JACC</text>
+</a>
+</g>
+</g>
+<!-- project_jacc&#45;&gt;jacc -->
+<g id="edge41" class="edge"><title>project_jacc&#45;&gt;jacc</title>
+<path fill="none" stroke="black" d="M118.077,-482.789C143.609,-482.822 175.515,-483.09 204,-484 221.16,-484.548 240.171,-485.568 256.161,-486.545"/>
+<polygon fill="black" stroke="black" points="255.982,-490.04 266.182,-487.175 256.421,-483.054 255.982,-490.04"/>
+<text text-anchor="middle" x="180" y="-487" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jaspic -->
+<g id="node27" class="node"><title>project_jaspic</title>
+<g id="a_node27"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jaspic" xlink:title="Eclipse Project\nfor JASPIC">
+<path fill="none" stroke="black" d="M588.5,-974C588.5,-974 514.5,-974 514.5,-974 508.5,-974 502.5,-968 502.5,-962 502.5,-962 502.5,-948 502.5,-948 502.5,-942 508.5,-936 514.5,-936 514.5,-936 588.5,-936 588.5,-936 594.5,-936 600.5,-942 600.5,-948 600.5,-948 600.5,-962 600.5,-962 600.5,-968 594.5,-974 588.5,-974"/>
+<text text-anchor="middle" x="551.5" y="-958.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="551.5" y="-943.8" font-family="Times,serif" font-size="14.00">for JASPIC</text>
+</a>
+</g>
+</g>
+<!-- project_jaspic&#45;&gt;jaspic -->
+<g id="edge44" class="edge"><title>project_jaspic&#45;&gt;jaspic</title>
+<path fill="none" stroke="black" d="M600.608,-955C635.838,-955 683.065,-955 716.074,-955"/>
+<polygon fill="black" stroke="black" points="716.258,-958.5 726.258,-955 716.258,-951.5 716.258,-958.5"/>
+<text text-anchor="middle" x="642" y="-958" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jca -->
+<g id="node28" class="node"><title>project_jca</title>
+<g id="a_node28"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-jca" xlink:title="Eclipse Project\nfor JCA">
+<path fill="none" stroke="black" d="M106,-185C106,-185 32,-185 32,-185 26,-185 20,-179 20,-173 20,-173 20,-159 20,-159 20,-153 26,-147 32,-147 32,-147 106,-147 106,-147 112,-147 118,-153 118,-159 118,-159 118,-173 118,-173 118,-179 112,-185 106,-185"/>
+<text text-anchor="middle" x="69" y="-169.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="69" y="-154.8" font-family="Times,serif" font-size="14.00">for JCA</text>
+</a>
+</g>
+</g>
+<!-- project_jca&#45;&gt;jca -->
+<g id="edge50" class="edge"><title>project_jca&#45;&gt;jca</title>
+<path fill="none" stroke="black" d="M118.28,-153.887C145.705,-149.869 179.371,-150.055 204,-167 222.087,-179.444 206.42,-197.533 222,-213 231.301,-222.234 244.093,-228.374 256.23,-232.428"/>
+<polygon fill="black" stroke="black" points="255.597,-235.89 266.179,-235.365 257.579,-229.177 255.597,-235.89"/>
+<text text-anchor="middle" x="180" y="-170" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jaxrs -->
+<g id="node29" class="node"><title>project_jaxrs</title>
+<g id="a_node29"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jaxrs" xlink:title="Eclipse Project\nfor JAX&#45;RS">
+<path fill="none" stroke="black" d="M330.5,-722C330.5,-722 256.5,-722 256.5,-722 250.5,-722 244.5,-716 244.5,-710 244.5,-710 244.5,-696 244.5,-696 244.5,-690 250.5,-684 256.5,-684 256.5,-684 330.5,-684 330.5,-684 336.5,-684 342.5,-690 342.5,-696 342.5,-696 342.5,-710 342.5,-710 342.5,-716 336.5,-722 330.5,-722"/>
+<text text-anchor="middle" x="293.5" y="-706.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-691.8" font-family="Times,serif" font-size="14.00">for JAX&#45;RS</text>
+</a>
+</g>
+</g>
+<!-- project_jaxrs&#45;&gt;jaxrs -->
+<g id="edge46" class="edge"><title>project_jaxrs&#45;&gt;jaxrs</title>
+<path fill="none" stroke="black" d="M342.587,-704.317C380.353,-705.779 434.2,-708.809 481,-715 490.499,-716.256 500.647,-718.043 510.171,-719.922"/>
+<polygon fill="black" stroke="black" points="509.702,-723.398 520.201,-721.975 511.106,-716.541 509.702,-723.398"/>
+<text text-anchor="middle" x="432" y="-718" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jaxws -->
+<g id="node30" class="node"><title>project_jaxws</title>
+<g id="a_node30"><a xlink:href="https://projects.eclipse.org/proposals/eclipse-project-jax-ws" xlink:title="Eclipse Project\nfor JAX&#45;WS">
+<path fill="none" stroke="black" d="M330.5,-924C330.5,-924 256.5,-924 256.5,-924 250.5,-924 244.5,-918 244.5,-912 244.5,-912 244.5,-898 244.5,-898 244.5,-892 250.5,-886 256.5,-886 256.5,-886 330.5,-886 330.5,-886 336.5,-886 342.5,-892 342.5,-898 342.5,-898 342.5,-912 342.5,-912 342.5,-918 336.5,-924 330.5,-924"/>
+<text text-anchor="middle" x="293.5" y="-908.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-893.8" font-family="Times,serif" font-size="14.00">for JAX&#45;WS</text>
+</a>
+</g>
+</g>
+<!-- project_jaxws&#45;&gt;jaxws -->
+<g id="edge47" class="edge"><title>project_jaxws&#45;&gt;jaxws</title>
+<path fill="none" stroke="black" d="M342.858,-887.793C350.882,-883.485 358.646,-878.259 365,-872 378.028,-859.166 367.497,-844.699 383,-835 420.375,-811.619 472.069,-819.712 508.107,-830.246"/>
+<polygon fill="black" stroke="black" points="507.244,-833.643 517.831,-833.258 509.314,-826.956 507.244,-833.643"/>
+<text text-anchor="middle" x="432" y="-838" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jaxws&#45;&gt;jws -->
+<g id="edge48" class="edge"><title>project_jaxws&#45;&gt;jws</title>
+<path fill="none" stroke="black" d="M342.727,-903.869C355.795,-903.574 369.939,-903.265 383,-903 428.131,-902.086 480.105,-901.178 514.036,-900.604"/>
+<polygon fill="black" stroke="black" points="514.448,-904.098 524.387,-900.43 514.33,-897.099 514.448,-904.098"/>
+<text text-anchor="middle" x="432" y="-906" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jaxws&#45;&gt;saaj -->
+<g id="edge49" class="edge"><title>project_jaxws&#45;&gt;saaj</title>
+<path fill="none" stroke="black" d="M342.608,-910.213C394.267,-916.205 470.403,-926.33 481,-935 498.633,-949.428 483.919,-965.921 499,-983 503.579,-988.186 509.397,-992.53 515.463,-996.112"/>
+<polygon fill="black" stroke="black" points="513.932,-999.261 524.411,-1000.82 517.193,-993.067 513.932,-999.261"/>
+<text text-anchor="middle" x="432" y="-938" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jsp -->
+<g id="node31" class="node"><title>project_jsp</title>
+<g id="a_node31"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jsp" xlink:title="Eclipse Project\nfor JSP">
+<path fill="none" stroke="black" d="M588.5,-1366C588.5,-1366 514.5,-1366 514.5,-1366 508.5,-1366 502.5,-1360 502.5,-1354 502.5,-1354 502.5,-1340 502.5,-1340 502.5,-1334 508.5,-1328 514.5,-1328 514.5,-1328 588.5,-1328 588.5,-1328 594.5,-1328 600.5,-1334 600.5,-1340 600.5,-1340 600.5,-1354 600.5,-1354 600.5,-1360 594.5,-1366 588.5,-1366"/>
+<text text-anchor="middle" x="551.5" y="-1350.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="551.5" y="-1335.8" font-family="Times,serif" font-size="14.00">for JSP</text>
+</a>
+</g>
+</g>
+<!-- project_jsp&#45;&gt;jsp -->
+<g id="edge54" class="edge"><title>project_jsp&#45;&gt;jsp</title>
+<path fill="none" stroke="black" d="M600.608,-1341.55C637.002,-1337.43 686.199,-1331.85 719.297,-1328.1"/>
+<polygon fill="black" stroke="black" points="719.899,-1331.56 729.442,-1326.95 719.111,-1324.6 719.899,-1331.56"/>
+<text text-anchor="middle" x="642" y="-1341" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_jta -->
+<g id="node32" class="node"><title>project_jta</title>
+<g id="a_node32"><a xlink:href="https://projects.eclipse.org/projects/ee4j.jta" xlink:title="Eclipse Project\nfor JTA">
+<path fill="none" stroke="black" d="M330.5,-453C330.5,-453 256.5,-453 256.5,-453 250.5,-453 244.5,-447 244.5,-441 244.5,-441 244.5,-427 244.5,-427 244.5,-421 250.5,-415 256.5,-415 256.5,-415 330.5,-415 330.5,-415 336.5,-415 342.5,-421 342.5,-427 342.5,-427 342.5,-441 342.5,-441 342.5,-447 336.5,-453 330.5,-453"/>
+<text text-anchor="middle" x="293.5" y="-437.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-422.8" font-family="Times,serif" font-size="14.00">for JTA</text>
+</a>
+</g>
+</g>
+<!-- project_jta&#45;&gt;jta -->
+<g id="edge56" class="edge"><title>project_jta&#45;&gt;jta</title>
+<path fill="none" stroke="black" d="M342.782,-451.394C355.724,-455.622 369.793,-459.833 383,-463 427.736,-473.726 480.297,-481.048 514.443,-485.123"/>
+<polygon fill="black" stroke="black" points="514.083,-488.605 524.42,-486.284 514.892,-481.652 514.083,-488.605"/>
+<text text-anchor="middle" x="432" y="-483" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_servlet -->
+<g id="node33" class="node"><title>project_servlet</title>
+<g id="a_node33"><a xlink:href="https://projects.eclipse.org/projects/ee4j.servlet" xlink:title="Eclipse Project\nfor Servlet">
+<path fill="none" stroke="black" d="M793.5,-1179C793.5,-1179 719.5,-1179 719.5,-1179 713.5,-1179 707.5,-1173 707.5,-1167 707.5,-1167 707.5,-1153 707.5,-1153 707.5,-1147 713.5,-1141 719.5,-1141 719.5,-1141 793.5,-1141 793.5,-1141 799.5,-1141 805.5,-1147 805.5,-1153 805.5,-1153 805.5,-1167 805.5,-1167 805.5,-1173 799.5,-1179 793.5,-1179"/>
+<text text-anchor="middle" x="756.5" y="-1163.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="756.5" y="-1148.8" font-family="Times,serif" font-size="14.00">for Servlet</text>
+</a>
+</g>
+</g>
+<!-- project_servlet&#45;&gt;servlet -->
+<g id="edge57" class="edge"><title>project_servlet&#45;&gt;servlet</title>
+<path fill="none" stroke="black" d="M805.697,-1164.24C833.396,-1167.48 868.614,-1172.97 899,-1182 904.646,-1183.68 910.464,-1185.81 916.112,-1188.12"/>
+<polygon fill="black" stroke="black" points="914.827,-1191.38 925.396,-1192.12 917.6,-1184.95 914.827,-1191.38"/>
+<text text-anchor="middle" x="875" y="-1185" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- project_websocket -->
+<g id="node34" class="node"><title>project_websocket</title>
+<g id="a_node34"><a xlink:href="https://projects.eclipse.org/projects/ee4j.websocket" xlink:title="Eclipse Project\nfor WebSocket">
+<path fill="none" stroke="black" d="M331,-1144C331,-1144 256,-1144 256,-1144 250,-1144 244,-1138 244,-1132 244,-1132 244,-1118 244,-1118 244,-1112 250,-1106 256,-1106 256,-1106 331,-1106 331,-1106 337,-1106 343,-1112 343,-1118 343,-1118 343,-1132 343,-1132 343,-1138 337,-1144 331,-1144"/>
+<text text-anchor="middle" x="293.5" y="-1128.8" font-family="Times,serif" font-size="14.00">Eclipse Project</text>
+<text text-anchor="middle" x="293.5" y="-1113.8" font-family="Times,serif" font-size="14.00">for WebSocket</text>
+</a>
+</g>
+</g>
+<!-- project_websocket&#45;&gt;websocket -->
+<g id="edge62" class="edge"><title>project_websocket&#45;&gt;websocket</title>
+<path fill="none" stroke="black" d="M343.254,-1127.67C388.475,-1130.14 455.452,-1133.8 500.932,-1136.29"/>
+<polygon fill="black" stroke="black" points="500.972,-1139.8 511.148,-1136.85 501.354,-1132.81 500.972,-1139.8"/>
+<text text-anchor="middle" x="432" y="-1137" font-family="Times,serif" font-size="10.00">maintains</text>
+</g>
+<!-- ejb&#45;&gt;interceptors -->
+<g id="edge1" class="edge"><title>ejb&#45;&gt;interceptors</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M320.71,-135.491C357.619,-143.779 426.491,-161.295 481,-187 493.828,-193.049 507.021,-201.209 518.419,-208.977"/>
+<polygon fill="black" stroke="black" points="516.548,-211.94 526.75,-214.8 520.558,-206.202 516.548,-211.94"/>
+<text text-anchor="middle" x="432" y="-190" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- ejb&#45;&gt;jms -->
+<g id="edge3" class="edge"><title>ejb&#45;&gt;jms</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M320.805,-125.653C338.394,-122.792 362.063,-119.031 383,-116 428.051,-109.479 480.042,-102.779 513.999,-98.5134"/>
+<polygon fill="black" stroke="black" points="514.871,-101.932 524.359,-97.2174 514.002,-94.9859 514.871,-101.932"/>
+<text text-anchor="middle" x="432" y="-119" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- ejb&#45;&gt;jta -->
+<g id="edge2" class="edge"><title>ejb&#45;&gt;jta</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M320.519,-132.994C336.027,-136.232 354.652,-142.972 365,-157 400.96,-205.748 343.381,-383.175 383,-429 412.133,-462.697 439.33,-434.257 481,-450 492.73,-454.432 504.864,-460.613 515.647,-466.75"/>
+<polygon fill="black" stroke="black" points="513.952,-469.813 524.348,-471.855 517.494,-463.776 513.952,-469.813"/>
+<text text-anchor="middle" x="432" y="-453" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- es&#45;&gt;jaspic -->
+<g id="edge10" class="edge"><title>es&#45;&gt;jaspic</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M587.86,-1045.84C624.093,-1026.21 680.244,-995.779 717.433,-975.627"/>
+<polygon fill="black" stroke="black" points="719.331,-978.58 726.456,-970.738 715.996,-972.425 719.331,-978.58"/>
+<text text-anchor="middle" x="642" y="-1029" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- javamail&#45;&gt;jaf -->
+<g id="edge8" class="edge"><title>javamail&#45;&gt;jaf</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M585.115,-647C621.791,-647 681.185,-647 719.277,-647"/>
+<polygon fill="black" stroke="black" points="719.419,-650.5 729.419,-647 719.419,-643.5 719.419,-650.5"/>
+<text text-anchor="middle" x="642" y="-650" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- jaxws&#45;&gt;jaf -->
+<g id="edge9" class="edge"><title>jaxws&#45;&gt;jaf</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M570.873,-827.989C607.165,-792.412 688.128,-713.044 729.732,-672.26"/>
+<polygon fill="black" stroke="black" points="732.331,-674.613 737.022,-665.114 727.431,-669.615 732.331,-674.613"/>
+<text text-anchor="middle" x="642" y="-778" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- jsf&#45;&gt;jsp -->
+<g id="edge4" class="edge"><title>jsf&#45;&gt;jsp</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M578.623,-1391.96C614.633,-1378.13 679.64,-1353.15 720.021,-1337.63"/>
+<polygon fill="black" stroke="black" points="721.398,-1340.85 729.477,-1334 718.887,-1334.32 721.398,-1340.85"/>
+<text text-anchor="middle" x="642" y="-1377" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- jsp&#45;&gt;el -->
+<g id="edge7" class="edge"><title>jsp&#45;&gt;el</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M765.965,-1342C796.758,-1407.5 902.99,-1633.44 940.914,-1714.1"/>
+<polygon fill="black" stroke="black" points="937.971,-1716.07 945.393,-1723.63 944.306,-1713.09 937.971,-1716.07"/>
+<text text-anchor="middle" x="875" y="-1622" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- jsp&#45;&gt;servlet -->
+<g id="edge6" class="edge"><title>jsp&#45;&gt;servlet</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M783.66,-1308.46C817.67,-1288.26 877.325,-1252.83 916.373,-1229.64"/>
+<polygon fill="black" stroke="black" points="918.533,-1232.43 925.343,-1224.32 914.958,-1226.41 918.533,-1232.43"/>
+<text text-anchor="middle" x="875" y="-1268" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- jstl&#45;&gt;jsp -->
+<g id="edge5" class="edge"><title>jstl&#45;&gt;jsp</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M578.623,-1296.12C614.48,-1301.77 679.091,-1311.96 719.507,-1318.33"/>
+<polygon fill="black" stroke="black" points="719.054,-1321.8 729.477,-1319.9 720.144,-1314.88 719.054,-1321.8"/>
+<text text-anchor="middle" x="642" y="-1311" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+<!-- cdi&#45;&gt;di -->
+<g id="edge11" class="edge"><title>cdi&#45;&gt;di</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M578.623,-384.525C603.769,-381.181 643.054,-375.956 678.22,-371.279"/>
+<polygon fill="black" stroke="black" points="679.045,-374.7 688.496,-369.912 678.122,-367.761 679.045,-374.7"/>
+<text text-anchor="middle" x="642" y="-382" font-family="Times,serif" font-size="10.00">requires</text>
+</g>
+</g>
+</svg>
diff --git a/generated/relationships.html b/generated/relationships.html
new file mode 100644
index 0000000..015b2ae
--- /dev/null
+++ b/generated/relationships.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.6.1">
+<title>EE4J Project Relationships</title>
+<style>
+
+</style>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>EE4J Project Relationships</h1>
+</div>
+<div id="content">
+<div class="paragraph">
+<p>This page provides an overview of many EE4J Projects, their relationships between one another, and their relationships with the various specifications.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="./images/relationships.svg" alt="relationships" width="1332" height="2705">
+</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index e70b6b5..f04d6da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<asciidoctor.maven.plugin.version>1.5.6</asciidoctor.maven.plugin.version>
 		<asciidoctorj.version>1.5.6</asciidoctorj.version>
+      <asciidoctorj.diagram.version>1.5.4.1</asciidoctorj.diagram.version>
 		<jruby.version>1.7.26</jruby.version>
 	</properties>
 
@@ -33,11 +34,19 @@
 						<artifactId>asciidoctorj</artifactId>
 						<version>${asciidoctorj.version}</version>
 					</dependency>
+               <dependency>
+                  <groupId>org.asciidoctor</groupId>
+                  <artifactId>asciidoctorj-diagram</artifactId>
+                  <version>${asciidoctorj.diagram.version}</version>
+               </dependency>
 				</dependencies>
 				<configuration>
 					<sourceDirectory>src/adoc</sourceDirectory>
 					<outputDirectory>generated</outputDirectory>
 					<preserveDirectories>true</preserveDirectories>
+               <requires>
+                  <require>asciidoctor-diagram</require>
+               </requires>
 					<attributes>
 						<endpoint-url>http://www.eclipse.org/ee4j</endpoint-url>
 						<sourcedir>${project.build.sourceDirectory}</sourcedir>
diff --git a/relationships.php b/relationships.php
new file mode 100644
index 0000000..76bf842
--- /dev/null
+++ b/relationships.php
@@ -0,0 +1,52 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2018 Eclipse Foundation and others.
+ * 
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+
+$App = new App();
+$Nav = new Nav();
+$Menu = new Menu();
+
+require_once ('_projectCommon.php');
+
+$pageTitle = "EE4J Relationships";
+$pageKeywords = "EE4J";
+$pageAuthor = "Wayne Beaton";
+
+$App->addExtraHtmlHeader("<base href=\"./generated/\"/>");
+$App->addExtraHtmlHeader("<style>.imageblock img {width: 100%;height:auto}</style>");
+
+// FIXME Workaround because I can't get Asciidoctor to generate embeddable HTML
+function getBodyContent($path)
+{
+    $DOMDocument = new DOMDocument();
+    $DOMDocument->loadHTMLFile($path);
+    $body = $DOMDocument->getElementsByTagName('body')->item(0);
+    $content = "";
+    foreach ($body->childNodes as $childNode) {
+        $content .= $DOMDocument->saveHTML($childNode);
+    }
+    return $content;
+}
+
+ob_start();
+?>
+
+<div id="midcolumn">
+<?php print getBodyContent(dirname(__FILE__) . '/generated/relationships.html'); ?>
+</div>
+
+<?php
+$html = ob_get_clean();
+
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
diff --git a/src/adoc/relationships.adoc b/src/adoc/relationships.adoc
new file mode 100644
index 0000000..28ee8c3
--- /dev/null
+++ b/src/adoc/relationships.adoc
@@ -0,0 +1,5 @@
+= EE4J Project Relationships
+
+This page provides an overview of many EE4J Projects, their relationships between one another, and their relationships with the various specifications.
+
+graphviz::../dot/relationships.dot[format=svg]