Th whole of the OPTIONAL block must match; it does not make each of the triple patterns independently optional. That would be:
WHERE {
?supermarket a lgd:Supermarket .
?supermarket ?p ?o .
OPTIONAL { ?supermarket rdfs:label ?label . }
OPTIONAL { ?supermarket geo:geometry ?geo . }
OPTIONAL { ?geo gis:asWKT ?points . }
OPTIONAL { ?supermarket wgs:lat ?latitude . }
OPTIONAL { ?supermarket wgs:long ?longitude . }
}
}
so if the second one has some results, presumably for any one ?supermarket, one of the OPTIONALs matches and the other does not.