package org.meaningfulweb.opengraph;
import java.util.HashSet;
import java.util.Set;
/**
* Represents the opengraph vocabulary (http://ogp.me/).
*
* The opengraph vocabulary is "based on" RDFa (http://www.w3.org/TR/rdfa-syntax/).
*
* @author "Joe Betz<jbetz@linkedin.com>"
* @version $Revision$
*/
public class OpenGraphVocabulary
{
public static final String DEFAULT_PREFIX = "og:";
public static final String NAMESPACE = "http://ogp.me/ns";
public static final String
//basic tags
TITLE = "title",
TYPE = "type",
IMAGE = "image",
URL = "url",
// optional ("recommended") basic tags
DESCRIPTION = "description",
SITE_NAME = "site_name",
// location
LATITUDE = "latitude",
LONGITUDE = "longitude",
// location: human readable
STREET_ADDRESS = "street-address",
LOCALITY = "locality",
REGION = "region",
POSTAL_CODE = "postal-code",
COUNTRY_NAME = "country-name",
// contact info
EMAIL = "email",
PHONE_NUMBER = "phone_number",
FAX_NUMBER = "fax_number",
// attach video
VIDEO = "video",
VIDEO_PREFIX = "video:",
VIDEO_HEIGHT = "video:height",
VIDEO_WIDTH = "video:width",
VIDEO_TYPE = "video:type",
// attach audio
AUDIO = "audio",
AUDIO_PREFIX = "audio:",
AUDIO_TITLE = "audio:title",
AUDIO_ARTIST = "audio:artist",
AUDIO_ALBUM = "audio:album",
AUDIO_TYPE = "audio:type"
;
public static final String[] BASIC_TAGS = new String[] { TITLE, TYPE, IMAGE, URL};
public static final String[] OPTIONAL_BASIC_TAGS = new String[] {DESCRIPTION, SITE_NAME};
public static final String[] LOCATION_GEO_TAGS = new String[] {LATITUDE, LONGITUDE};
public static final String[] LOCATION_HUMAN_READABLE_TAGS = new String[] {STREET_ADDRESS, LOCALITY, REGION, POSTAL_CODE, COUNTRY_NAME};
public static final String[] CONTACT_INFO_TAGS = new String[] {EMAIL, PHONE_NUMBER, FAX_NUMBER};
public static final String[] VIDEO_TAGS = new String[] {VIDEO, VIDEO_HEIGHT, VIDEO_WIDTH, VIDEO_TYPE};
public static final String[] AUDIO_TAGS = new String[] {AUDIO, AUDIO_TITLE, AUDIO_ARTIST, AUDIO_ALBUM, AUDIO_TYPE};
public static final Set<String> OPENGRAPH_TAGS = new HashSet<String>();
static {
for(String[] tagGroup : new String[][] {BASIC_TAGS, OPTIONAL_BASIC_TAGS, LOCATION_GEO_TAGS, LOCATION_HUMAN_READABLE_TAGS, VIDEO_TAGS, AUDIO_TAGS})
{
for(String tag : tagGroup)
{
OPENGRAPH_TAGS.add(tag);
}
}
}
public static boolean isValidOpengraphTag(String metaProperty)
{
if(metaProperty == null) return false;
return OPENGRAPH_TAGS.contains(metaProperty.toLowerCase().trim());
}
}