If the documentation gets ported to the Drupal web site, the following information might be useful to add, or, added to Integrated Metatag as default settings. This is the email I received from the Google Scholar team:

---------------------------------------------------------------------
To: "Ian Tresman"
Subject: Meta data help

Thanks for your email regarding Google Scholar. In order to improve coverage and citation accuracy for your content in Google Scholar, we recommend that you provide us with article-level metadata for your publication(s). The easiest way to do so is by embedding "metatags" of your bibliographic information within your website's HTML pages. Once the tags are in place, our crawlers can re-crawl this data and add it to the Scholar index.

http://dublincore.org/documents/dcmi-terms/#elements-publisher
http://www.ghastlyfop.com/blog/2008/05/meta-analysis.html

We recommend embedding the following tags* within your articles' abstract pages:

<meta name="citation_journal_title" content="Journal Name">
<meta name="citation_authors" content="Last Name1, First Name1; Last Name2, First Name2">
<meta name="citation_title" content="Article Title">
<meta name="citation_date" content="01/01/2007">
<meta name="citation_volume" content="10">
<meta name="citation_issue" content="1">
<meta name="citation_firstpage" content="1">
<meta name="citation_lastpage" content="15">
<meta name="citation_doi" content="10.1074/jbc.M309524200">
<meta name="citation_pdf_url" content="http://www.publishername.org/10/1/1.pdf">
<meta name="citation_abstract_html_url" content="http://www.publishername.org/cgi/content/abstract/10/1/1">
<meta name="citation_fulltext_html_url" content="http://www.publishername.org/cgi/content/full/10/1/1">  
<meta name="dc.Contributor" content="Last Name1, First Name1">
<meta name="dc.Contributor" content="Last Name2, First Name2">
<meta name="dc.Title" content="Article Title">
<meta name="dc.Date" content="01/01/2007">
<meta name="citation_publisher" content="Publisher Name">
<meta name="robots" content="noarchive">

*If your articles are hosted behind a pay-wall, add <meta name="robots" content="noarchive"> to the list above so that we will not cache them, and please also make sure that our crawlers have full access to your full text by authenticating IP ranges 66.249.64.0 to 66.249.79.255, both inclusive; note that the actual range size is 4096 IPs.

Once you have included the tags within your website, please send us your website location (URL) and where you've placed your metatags (abstract page or otherwise), and we'll re-crawl your content.

Sincerely,
The Google Scholar Team
---------------------------------------------------------------------

See also "Nature.com adds metadata"

The meta tags prefixed with "dc." are clearly defined by Dublin Core, but I have no idea where the meta tags such as "citation_firstpage" are defined, and to which standard they belong.

Comments

andypowe11’s picture

Note that DCMI recommend the use of a particular HTML profile - see http://dublincore.org/documents/2008/08/04/dc-html/ - which gives the following construct rather than that shown above:

<link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
<meta name="dc.contributor" content="Last Name1, First Name1" />
<meta name="dc.contributor" content="Last Name2, First Name2" />
<meta name="dc.title" content="Article Title" />
<meta name="dc.date" content="01/01/2007" />

Also, the general convention within DCMI metadata usage is to use the W3C-DTF formatting for dates (see http://www.w3.org/TR/NOTE-datetime), which would give:

<meta name="dc.date" content="2007-01-01" />

I appreciate that this is slightly in conflict with the advice from Google, but thought it was worth noting here. I'll leave it as an exercise for the reader to decide whether to follow DCMI recommended practice or to follow that of Google :-)

fractile81’s picture

It's worth noting that this would be down-right easy to take care of with an extra module. I may not have it fully documented, but Integrated Metatags has ways/hooks to let you tap into what's generated. I'd be willing to review any work people do and add it to core as an additional module should it pass scrutiny.

pkej’s picture

I just want to point out that nodewords have dublin core tags ready for use, as well as token support.

The thing about this module (metatags) is that it can create more tags if needed, that of course is a better solution in the long run.

As for the specific requirement of the original issue, isn't it just an issue of the poster configuring the right fields?

I'm a bit hazy on this, since it is quite a while since I tried out these two modules.

Best regards,
Paul

cafuego’s picture

The tags from comment #1 are Highwire Press tags. Google Scholar advise against using DC tags unless you REALLY can't not.

Use Dublin Core tags (e.g., DC.title) as a last resort - they work poorly for journal papers because Dublin Core doesn't have unambiguous fields for journal title, volume, issue, and page numbers. To check that these tags are present, visit several abstracts and view their HTML source.

See Indexing Guidelines at http://scholar.google.com/intl/en/scholar/inclusion.html

deomurari’s picture

I tried to use TokenStarter for defining tokens for Biblio module content type...

Here is my content of TokenBiblio module.


<?php


/**
 * @file
 * The Token API module.
 *
 * The Token module provides an API for providing tokens to other modules.
 * Tokens are small bits of text that can be placed into larger documents
 * via simple placeholders, like %site-name or [user].
 *
 * @ingroup token
 */

/**
 * Implementation of hook_token_list().
 */
//Implementation of hook_token_list().
function tokenBIBLIO_token_list($type = 'all') {
	$tokens = array();
	if ($type == 'node'  || $type == 'all') {
		// Node tokens here.
		$tokens['node']['biblio_abst_e'] 	= t("Bibliography: biblio_abst_e");
		$tokens['node']['biblio_accession_number'] 	= t("Bibliography: biblio_accession_number");    		
		$tokens['node']['biblio_auth_address'] 	= t("Bibliography: biblio_auth_address");
		$tokens['node']['biblio_authors'] 	= t("Bibliography: biblio_authors");    
		$tokens['node']['biblio_call_number'] 	= t("Bibliography: biblio_call_number");
		$tokens['node']['biblio_citekey'] 	= t("Bibliography: biblio_citekey");    		
		$tokens['node']['biblio_corp_authors'] 	= t("Bibliography: biblio_corp_authors");
		$tokens['node']['biblio_date'] 	= t("Bibliography: biblio_date");    
		$tokens['node']['biblio_doi'] 	= t("Bibliography: biblio_doi");
		$tokens['node']['biblio_edition'] 	= t("Bibliography: biblio_edition");    		
		$tokens['node']['biblio_isbn'] 	= t("Bibliography: biblio_isbn");
		$tokens['node']['biblio_issn'] 	= t("Bibliography: biblio_issn");    
		$tokens['node']['biblio_issue'] 	= t("Bibliography: biblio_issue");
		$tokens['node']['biblio_keywords'] 	= t("Bibliography: biblio_keywords");    		
		$tokens['node']['biblio_lang'] 	= t("Bibliography: biblio_lang");
		$tokens['node']['biblio_notes'] 	= t("Bibliography: biblio_notes");    
		$tokens['node']['biblio_number'] 	= t("Bibliography: biblio_number");
		$tokens['node']['biblio_number_of_volumes'] 	= t("Bibliography: biblio_number_of_volumes");    		
		$tokens['node']['biblio_pages'] 	= t("Bibliography: biblio_pages");
		$tokens['node']['biblio_publisher'] 	= t("Bibliography: biblio_publisher");
		$tokens['node']['biblio_research_notes'] 	= t("Bibliography: biblio_research_notes");
		$tokens['node']['biblio_secondary_authors'] 	= t("Bibliography: biblio_secondary_authors");
		$tokens['node']['biblio_secondary_title'] 	= t("Bibliography: biblio_secondary_title");
		$tokens['node']['biblio_short_title'] 	= t("Bibliography: biblio_short_title");
		$tokens['node']['biblio_subsidiary_authors'] 	= t("Bibliography: biblio_subsidiary_authors");
		$tokens['node']['biblio_tertiary_authors'] 	= t("Bibliography: biblio_tertiary_authors");
		$tokens['node']['biblio_tertiary_title'] 	= t("Bibliography: biblio_tertiary_title");
		$tokens['node']['biblio_type_of_work'] 	= t("Bibliography: biblio_type_of_work");
		$tokens['node']['biblio_url'] 	= t("Bibliography: biblio_url");
		$tokens['node']['biblio_volume'] 	= t("Bibliography: biblio_volume");
		$tokens['node']['biblio_year'] 	= t("Bibliography: biblio_year");   
		return $tokens;
	} 
}

/**
 * Implementation of hook_token_values().
 */
function tokenBIBLIO_token_values($type, $object = NULL, $options = array()) {
	$values = array();
	switch ($type) {
             case ($type == 'node'  || $type == 'all'):
		// Node tokens here.
		if ($object->type == 'biblio') {
		$values['biblio_abst_e'] = check_plain($object->biblio_abst_e);
		$values['biblio_accession_number'] = check_plain($object->biblio_accession_number);
		$values['biblio_auth_address'] = check_plain($object->biblio_auth_address);
		$tauth = check_plain($object->biblio_authors);
		$aauutthh = implode(",", $tauth);
		$values['biblio_authors'] = $aauutthh;
		$values['biblio_call_number'] = check_plain($object->biblio_call_number);
		$values['biblio_citekey'] = check_plain($object->biblio_citekey);
		$values['biblio_corp_authors'] = check_plain($object->biblio_corp_authors);
		$values['biblio_date'] = check_plain($object->biblio_date);
		$values['biblio_doi'] = check_plain($object->biblio_doi);
		$values['biblio_edition'] = check_plain($object->biblio_edition);
		$values['biblio_isbn'] = check_plain($object->biblio_isbn);
		$values['biblio_issn'] = check_plain($object->biblio_issn);
		$values['biblio_issue'] = check_plain($object->biblio_issue);
		$values['biblio_keywords'] = check_plain($object->biblio_keywords);
		$values['biblio_lang'] = check_plain($object->biblio_lang);
		$values['biblio_notes'] = check_plain($object->biblio_notes);
		$values['biblio_number'] = check_plain($object->biblio_number);
		$values['biblio_number_of_volumes'] = check_plain($object->biblio_number_of_volumes);
		$values['biblio_pages'] = check_plain($object->biblio_pages);
		$values['biblio_publisher'] = check_plain($object->biblio_publisher);
		$values['biblio_research_notes'] = check_plain($object->biblio_research_notes);
		$values['biblio_secondary_authors'] = check_plain($object->biblio_secondary_authors);
		$values['biblio_secondary_title'] = check_plain($object->biblio_secondary_title);
		$values['biblio_short_title'] = check_plain($object->biblio_short_title);
		$values['biblio_subsidiary_authors'] = check_plain($object->biblio_subsidiary_authors);
		$values['biblio_tertiary_authors'] = check_plain($object->biblio_tertiary_authors);
		$values['biblio_tertiary_title'] = check_plain($object->biblio_tertiary_title);
		$values['biblio_type_of_work'] = check_plain($object->biblio_type_of_work);
		$values['biblio_url'] = check_plain($object->biblio_url);
		$values['biblio_volume'] = check_plain($object->biblio_volume);
		$values['biblio_year'] = check_plain($object->biblio_year);
		return $values;
	}
	break;
  }
}

unfortunately it seems that Token Authors returns array in stead of string. so the meta tag contains simply Array.
Can someone help me unfolding this issue so I can have author list as coma seperated values.....

I tried implode() also but it also give error..

regards

deomurari’s picture

It gives this result in meta tags where Array should be list of authors

<meta name="citation_author" content="Array" /> 
<meta name="dc.publisher" content="Array" /> 
<meta name="author" content="Array" /> 

It also shows warning on the page too...

warning: implode() [function.implode]: Invalid arguments passed in D:\xampp\htdocs\indexing\sites\all\modules\token\tokenBIBLIO.module on line 71.
warning: htmlspecialchars() expects parameter 1 to be string, array given in D:\xampp\htdocs\indexing\includes\bootstrap.inc on line 856.

Regards

cafuego’s picture

My solution for that is only a little bit ugly. Mainly because Google Scholar requires each author to be listed in a *separate* meta tag, as opposed to all listed in one tag:

function hook__token_list($type = 'all') {
  $tokens = array();
  if ($type == 'node' || $type == 'all') {
    $tokens['node']['journal-article-author_N'] = t('The Nth author assigned to this node.');
  }
  return $tokens;
}

function hook_token_values($type, $object = NULL) {
  $values = array();
  switch ($type) {
    case 'node':
      if ($object->type == 'journal_article') {
        foreach ($object->field_article_author as $delta => $field) {
          $values['journal-article-author_' . $delta] = $field['value'];
        }
      }
  }
  return $values;
}

So I have a specific token for each and every author listed on the node. Your field name will differ, but the same solution can apply; be it for generating N tokens or for concatenating the field values into a single token.

deomurari’s picture

hI cafuego

Excellent idea......But can you let me know how to incorporate/use this with Integrated Metatags?

Regards

cafuego’s picture

You simply add custom token based tags and enter your [journal-article-author_0] [journal-article-author_1] etc tokens.

deomurari’s picture

Hi....

I tried using your code....

but in output it gives..... [journal-article-author_0] [journal-article-author_1] as it is in HTML

cafuego’s picture

My example is specific to my site and cck fields. If you want to do the same thing, you'll need to make sure you populate the correct tokens with the correct data.