Using GNU awk, you could use FPAT to split each record into the key-value pairs, loop over the fields and
append them to a string. If the string is empty, append the opening ", else ;  before each field.
InIn the END section, print the string plus the opening and closing ".
awk -v FPAT='.=[^;"]+'=[^;"]+(; )?' '{
    for (i=1;i<=NF;i++) s=s (s=="" ? "\"" : "; ") $i
}
END {
    print "\"" s "\""
}
 ' file
 
                