Is there a case where you wouldn't want to link to the canonical? i.e. should the p.canonical() go inside of link?