Index: trunk/resources/data/defaultpresets.xml
===================================================================
--- trunk/resources/data/defaultpresets.xml	(revision 19453)
+++ trunk/resources/data/defaultpresets.xml	(revision 19467)
@@ -499,4 +499,7 @@
             <combo key="windings:configuration" text="Windings configuration" values="star,delta,open-delta,zigzag,open,scott,leblanc" values_context="power_windings" />
         </optional>
+    </chunk>
+    <chunk id="power_topology">
+        <combo key="topology" text="Circuit topology" values="linear,branched" />
     </chunk>
     <chunk id="telecom_medium">
@@ -10116,15 +10119,4 @@
                 </roles>
             </item> <!-- Detour Route -->
-            <item name="Power Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
-                <link wiki="Tag:route=power" />
-                <space/>
-                <key key="type" value="route"/>
-                <key key="route" value="power"/>
-                <reference ref="name_ref_operator"/>
-                <roles>
-                    <role key="line" text="route segment" requisite="required" type="way" member_expression="power=line|power=cable"/>
-                    <role key="substation" text="Power Substation" requisite="optional" type="way,closedway,multipolygon" member_expression="power"/>
-                </roles>
-            </item> <!-- Power Route -->
             <item name="Railway Route" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
                 <link wiki="Tag:route=railway" />
@@ -10159,5 +10151,5 @@
                 <space/>
                 <key key="type" value="superroute"/>
-                <combo key="route" text="Type" values="bicycle,detour,foot,hiking,horse,mtb,piste,power,railway,road,ski" display_values="Bicycle Route,Detour Route,Walking Route,Hiking Route,Riding Route,Mountain Biking Route,Piste Route,Power Route,Railway Route,Road Route,Ski Route" />
+                <combo key="route" text="Type" values="bicycle,detour,foot,hiking,horse,mtb,piste,railway,road,ski" display_values="Bicycle Route,Detour Route,Walking Route,Hiking Route,Riding Route,Mountain Biking Route,Piste Route,Railway Route,Road Route,Ski Route" />
                 <reference ref="name_ref_operator"/>
                 <roles>
@@ -10298,4 +10290,40 @@
             </roles>
         </item> <!-- Tunnel -->
+        <group name="Power" icon="presets/power/power.svg">
+            <item name="Power circuit" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
+                <link wiki="Tag:power=circuit" />
+                <space/>
+                <key key="type" value="power"/>
+                <key key="power" value="circuit"/>
+                <space/>
+                <reference ref="cables"/>
+                <reference ref="voltage"/>
+                <reference ref="frequency"/>
+                <reference ref="power_topology"/>
+                <optional>
+                    <reference ref="name_ref_operator"/>
+                </optional>
+                <roles>
+                    <role key="substation" text="Power Substation" requisite="required" type="way,closedway,multipolygon" member_expression="power|substation"/>
+                    <role key="section" text="Circuit section" requisite="required" type="way,relation" member_expression="power=line|power=cable|power=minor_line|power=line_section"/>
+                    <role key="tap" text="Tap point" requisite="optional" type="node" member_expression="power=pole|power=tower|power=connection"/>
+                </roles>
+            </item> <!-- Power circuit -->
+            <item name="Power line section" icon="presets/misc/route.svg" type="relation" preset_name_label="true">
+                <link wiki="Tag:power=line_section" />
+                <space/>
+                <key key="type" value="power"/>
+                <key key="power" value="line_section"/>
+                <space/>
+                <reference ref="cables"/>
+                <reference ref="voltage"/>
+                <optional>
+                    <reference ref="name_ref_operator"/>
+                </optional>
+                <roles>
+                    <role key="line" text="Section segment" requisite="required" type="way" member_expression="power=line|power=cable|power=minor_line"/>
+                </roles>
+            </item> <!-- Power circuit -->
+        </group>
     </group> <!-- Relations -->
 </presets>
Index: trunk/resources/data/validator/combinations.mapcss
===================================================================
--- trunk/resources/data/validator/combinations.mapcss	(revision 19453)
+++ trunk/resources/data/validator/combinations.mapcss	(revision 19467)
@@ -307,4 +307,6 @@
 node[power=transformer][voltage],
 node[transformer=distribution][voltage][power=pole],
+relation[power=circuit][wires],
+relation[power=line_section][wires],
 *[amenity=vending_machine][shop],
 *[noname?][name],
@@ -1138,2 +1140,20 @@
   assertNoMatch: "way highway=primary oneway=yes bicycle:lanes=no|designated|yes cycleway:lanes=|lane|no";
 }
+
+/* Prevent redundancy between relation and members, see #24456, #24457 */
+relation[power=circuit] > way[power=line][frequency],
+relation[power=circuit] > way[power=minor_line][frequency],
+relation[power=circuit] > way[power=cable][frequency] {
+  throwWarning: tr("Frequency tag should be on the circuit relation only, not on the power segment");
+  group: tr("redundant tagging");
+}
+relation[power=circuit] > relation[power=line_section][frequency] {  
+  throwWarning: tr("Frequency tag should be on the circuit relation only, not on the power section");
+  group: tr("redundant tagging");
+}
+
+/* Invalid topology with power circuit relation, see #24456 */
+relation[power=circuit][topology][topology!~/^(linear|branched)$/] {
+       throwError: tr("power=circuit relations should have a topology tag with value linear or branched");
+       assertMatch: "relation type=power power=circuit topology=branch";
+       assertNoMatch: "relation type=power power=circuit topology=branched";
Index: trunk/resources/data/validator/deprecated.mapcss
===================================================================
--- trunk/resources/data/validator/deprecated.mapcss	(revision 19453)
+++ trunk/resources/data/validator/deprecated.mapcss	(revision 19467)
@@ -2584,3 +2584,15 @@
 }
 
+/* route=power is deprecated, see #24456 */
+relation[route=power] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  group: tr("deprecated tagging");
+  suggestAlternative: "type=power + power=circuit";
+}
+relation[power=branch] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  group: tr("deprecated tagging");
+  suggestAlternative: "type=power + power=line_section";
+}
+
 /* When tags are deprecated they should be added to ignoretags.cfg too. */
Index: trunk/resources/data/validator/geometry.mapcss
===================================================================
--- trunk/resources/data/validator/geometry.mapcss	(revision 19453)
+++ trunk/resources/data/validator/geometry.mapcss	(revision 19467)
@@ -91,5 +91,7 @@
 node[interval],
 node[route],
-node[restriction] {
+node[restriction],
+node[power=circuit],
+node[power=line_section] {
   throwError: tr("{0} on a node. Should be used in a relation", "{0.tag}"); 
 }
@@ -140,10 +142,14 @@
 way[type=multipolygon],
 way[interval][route!=ferry],
-way[route=bus] {
+way[route=bus],
+way[power=circuit],
+way[power=line_section] {
   throwError: tr("{0} on a way. Should be used in a relation", "{0.tag}"); 
 }
 
 /* {0} on a closed way, should be a unclosed way; #19981 */
-way:closed[power=line] {
+way:closed[power=line],
+way:closed[power=cable],
+way:closed[power=minor_line] {
   throwWarning: tr("{0} on a closed way. Should be used on an unclosed way.", "{1.tag}"); 
 }
Index: trunk/resources/data/validator/ignoretags.cfg
===================================================================
--- trunk/resources/data/validator/ignoretags.cfg	(revision 19453)
+++ trunk/resources/data/validator/ignoretags.cfg	(revision 19467)
@@ -826,4 +826,6 @@
 ; This seems to be a region specific tag.
 K:valley=balka
+K:route=power
+K:power=branch
 
 ; These tags should probably have better software support, but maybe they can be in the appropriate section in this file.
Index: trunk/resources/data/validator/relation.mapcss
===================================================================
--- trunk/resources/data/validator/relation.mapcss	(revision 19453)
+++ trunk/resources/data/validator/relation.mapcss	(revision 19467)
@@ -72,2 +72,11 @@
   group: tr("suspicious tag combination");
 }
+
+/* Power relations, #24456 */
+relation[type=power][!power],
+relation[type=power][power][power!~/^(circuit|line_section)$/] {
+       throwError: tr("Power relation misses or combined to wrong power=* value");
+       assertMatch: "relation type=power";
+  assertMatch: "relation type=power power=line";
+       assertNoMatch: "relation type=power power=circuit";
+}
