Index: resources/data/validator/combinations.mapcss
===================================================================
--- resources/data/validator/combinations.mapcss	(revision 18535)
+++ resources/data/validator/combinations.mapcss	(working copy)
@@ -808,11 +808,13 @@
   fixAdd: "emergency=emergency_ward_entrance";
 }
 
-/* missing or conflicting construction, see #17607 */
+/* missing or conflicting construction, see #17607, #22328 */
 /* {0.key} without {1.key} and {2.key} */
 *[construction:building][!building][!construction],
-*[construction:highway][!highway][!construction],
-*[construction:railway][!railway][!construction],
+way[construction:highway][!highway][!construction],
+relation[construction:highway][!highway][!construction],
+way[construction:railway][!railway][!construction],
+relation[construction:railway][!railway][!construction],
 *[construction:landuse][!landuse][!construction] {
   throwWarning: tr("{0} without {1} and {2}", "{0.key}", "{1.key}", "{2.key}");
   group: tr("missing tag");
@@ -823,10 +825,12 @@
   assertNoMatch: "way construction:building=house construction=house";
 }
 /* {0.key} and {1.key} without {2.key} */
-*[building=construction]["construction:building"][!construction],
-*[highway=construction]["construction:highway"][!construction],
-*[railway=construction]["construction:railway"][!construction],
-*[landuse=construction]["construction:landuse"][!construction] {
+*[building=construction][construction:building][!construction],
+way[highway=construction][construction:highway][!construction],
+relation[highway=construction][construction:highway][!construction],
+way[railway=construction][construction:railway][!construction],
+relation[railway=construction][construction:railway][!construction],
+*[landuse=construction][construction:landuse][!construction] {
   throwWarning:  tr("{0} together with {1} but without {2}", "{0.key}", "{1.key}", "{2.key}");
   group: tr("missing tag");
   fixAdd: "construction={1.value}";
@@ -835,10 +839,12 @@
   assertNoMatch: "way construction:building=house construction=house";
 }
 /* {0.key} and {1.key} without {2.key} */
-*[building]["construction:building"][!construction][building!=construction],
-*[highway]["construction:highway"][!construction][highway!=construction],
-*[railway]["construction:railway"][!construction][railway!=construction],
-*[landuse]["construction:landuse"][!construction][landuse!=construction] {
+*[building][construction:building][!construction][building!=construction],
+way[highway][construction:highway][!construction][highway!=construction],
+relation[highway][construction:highway][!construction][highway!=construction],
+way[railway][construction:railway][!construction][railway!=construction],
+relation[railway][construction:railway][!construction][railway!=construction],
+*[landuse][construction:landuse][!construction][landuse!=construction] {
   throwWarning: tr("{0} together with {1} and conflicting values plus no {2}", "{0.key}", "{1.key}", "{2.key}");
   group: tr("suspicious tag combination");
   assertMatch:   "way construction:building=house building=office";
@@ -846,10 +852,12 @@
   assertNoMatch: "way construction:building=house construction=house";
 }
 
-*["construction:building"][construction][construction:building != *construction],
-*["construction:highway"][construction][construction:highway != *construction],
-*["construction:railway"][construction][construction:railway != *construction],
-*["construction:landuse"][construction][construction:landuse != *construction] {
+*[construction:building][construction][construction:building != *construction],
+way[construction:highway][construction][construction:highway != *construction],
+relation[construction:highway][construction][construction:highway != *construction],
+way[construction:railway][construction][construction:railway != *construction],
+relation[construction:railway][construction][construction:railway != *construction],
+*[construction:landuse][construction][construction:landuse != *construction] {
   throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
   group: tr("suspicious tag combination");
   assertMatch:   "way construction:building=house construction=office";
