diff --git a/core/modules/rdf/lib/Drupal/rdf/SchemaOrgDataConverter.php b/core/modules/rdf/lib/Drupal/rdf/SchemaOrgDataConverter.php
new file mode 100644
index 0000000..c3e0d69
--- /dev/null
+++ b/core/modules/rdf/lib/Drupal/rdf/SchemaOrgDataConverter.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\rdf\SchemaOrgDataConverter.
+ */
+
+namespace Drupal\rdf;
+
+
+class SchemaOrgDataConverter {
+
+  /**
+   * Converts an interaction count to a string with the interaction type.
+   *
+   * Schema.org defines a number of different interaction types.
+   *
+   * @param int $count
+   *   The interaction count.
+   *
+   * @return string
+   *   The formatted string.
+   *
+   * @see http://schema.org/UserInteraction
+   * @todo Support other interaction types, see https://drupal.org/node/2020001
+   */
+  static function interactionCount($count) {
+    return "UserComment:$count";
+  }
+}
\ No newline at end of file
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
new file mode 100644
index 0000000..94b9731
--- /dev/null
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/StandardProfileTest.php
@@ -0,0 +1,325 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\rdf\Tests\StandardProfileTest
+ */
+
+namespace Drupal\rdf\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests that the standard profile mappings are set and exposed as expected.
+ */
+class StandardProfileTest extends WebTestBase {
+
+  public $profile = 'standard';
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Standard profile RDF',
+      'description' => 'Tests the RDF mappings and RDFa markup of the standard profile.',
+      'group' => 'RDF',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->base_uri = url('<front>', array('absolute' => TRUE));
+
+    $this->drupalLogin($this->root_user);
+
+    // Create term.
+    $this->term = entity_create('taxonomy_term', array(
+      'name' => $this->randomName(),
+      'description' => $this->randomName(),
+      'vid' => 'tags',
+    ));
+    $this->term->save();
+
+    // Create image.
+    file_unmanaged_copy(DRUPAL_ROOT . '/core/misc/druplicon.png', 'public://example.jpg');
+    $this->image = entity_create('file', array('uri' => 'public://example.jpg'));
+    $this->image->save();
+
+    // Create article.
+    $article_settings = array(
+      'type' => 'article',
+      'field_image' => array(
+        array(
+          'fid' => $this->image->id(),
+        ),
+      ),
+      'field_tags' => array(
+        array(
+          'tid' => $this->term->id(),
+        ),
+      ),
+    );
+    $this->article = $this->drupalCreateNode($article_settings);
+
+    // Create page.
+    $this->page = $this->drupalCreateNode(array('type' => 'page'));
+
+    // Set URIs.
+    // Image.
+    $image_file = file_load($this->article->get('field_image')->offsetGet(0)->get('fid')->getValue());
+    $this->image_uri = image_style_url('large', $image_file->getFileUri());
+    // Term.
+    $term_uri_info = $this->term->uri();
+    $this->term_uri = url($term_uri_info['path'], array('absolute' => TRUE));
+    // Article.
+    $article_uri_info = $this->article->uri();
+    $this->article_uri = url($article_uri_info['path'], array('absolute' => TRUE));
+    // Page.
+    $page_uri_info = $this->page->uri();
+    $this->page_uri = url($page_uri_info['path'], array('absolute' => TRUE));
+    // User.
+    $this->user_uri = url('user/' . $this->root_user->uid, array('absolute' => TRUE));
+
+    $this->drupalLogout();
+  }
+
+  /**
+   * Test that the mappings are set and exposed.
+   *
+   * Because tests using standard profile take a very long time to run, and
+   * because there is no manipulation of config or data within the test, simply
+   * run all the tests from within this function.
+   */
+  public function testMappingsAndOutput() {
+    // Test mappings.
+    $this->_testArticleMapping();
+    $this->_testPageMapping();
+
+    // Test displays.
+    $this->_testArticleRDFa();
+    $this->_testPageRDFa();
+  }
+
+  /**
+   * Test that the standard mapping for page has been saved.
+   */
+  protected function _testArticleMapping() {
+    $article_mapping = rdf_get_mapping('node', 'article');
+
+    // Bundle.
+    $bundle_mapping = $article_mapping->getBundleMapping();
+    $this->assertEqual(array('schema:Article'), $bundle_mapping['types'], "Article is mapped to schema:Article.");
+
+    // Title.
+    $title_mapping = $article_mapping->getFieldMapping('title');
+    $this->assertEqual(array('schema:name'), $title_mapping['properties'], "Article title is mapped to schema:name.");
+
+    // Created date.
+    $created_mapping = $article_mapping->getFieldMapping('created');
+    $this->assertEqual(array('schema:dateCreated'), $created_mapping['properties'], "Article created date is mapped to schema:dateCreated.");
+    $this->assertEqual('date_iso8601', $created_mapping['datatype_callback'], "Article created date has datatype callback 'date_iso8601'.");
+
+    // Changed date.
+    $changed_mapping = $article_mapping->getFieldMapping('changed');
+    $this->assertEqual(array('schema:dateModified'), $changed_mapping['properties'], "Article changed date is mapped to schema:dateModified.");
+    $this->assertEqual('date_iso8601', $changed_mapping['datatype_callback'], "Article changed date has datatype callback 'date_iso8601'.");
+
+    // Body.
+    $body_mapping = $article_mapping->getFieldMapping('body');
+    $this->assertEqual(array('schema:text'), $body_mapping['properties'], "Article body is mapped to schema:text.");
+
+    // Uid.
+    $uid_mapping = $article_mapping->getFieldMapping('uid');
+    $this->assertEqual(array('schema:author'), $uid_mapping['properties'], "Article uid is mapped to schema:author.");
+    $this->assertEqual('rel', $uid_mapping['mapping_type'], "Article uid uses 'rel' mapping_type.");
+
+    // Comment count.
+    $comment_count_mapping = $article_mapping->getFieldMapping('comment_count');
+    $this->assertEqual(array('schema:interactionCount'), $comment_count_mapping['properties'], "Article comment count is mapped to schema:interactionCount.");
+    $this->assertEqual('Drupal\rdf\SchemaOrgDataConverter::interactionCount', $comment_count_mapping['datatype_callback'], "Article comment count uses correct datatype callback.");
+
+    // Image.
+    $image_mapping = $article_mapping->getFieldMapping('field_image');
+    $this->assertEqual(array('schema:image'), $image_mapping['properties'], "Article image is mapped to schema:image.");
+    $this->assertEqual('rel', $image_mapping['mapping_type'], "Article image uses 'rel' mapping_type.");
+
+    // Tags.
+    $tags_mapping = $article_mapping->getFieldMapping('field_tags');
+    $this->assertEqual(array('schema:about'), $tags_mapping['properties'], "Article tags are mapped to schema:about.");
+    $this->assertEqual('rel', $tags_mapping['mapping_type'], "Article tags uses 'rel' mapping_type.");
+  }
+
+  /**
+   * Test that the standard mapping for page has been saved.
+   */
+  protected function _testPageMapping() {
+    $page_mapping = rdf_get_mapping('node', 'page');
+
+    // Bundle.
+    $bundle_mapping = $page_mapping->getBundleMapping();
+    $this->assertEqual(array('schema:WebPage'), $bundle_mapping['types'], "Page is mapped to schema:WebPage.");
+
+    // Title.
+    $title_mapping = $page_mapping->getFieldMapping('title');
+    $this->assertEqual(array('schema:name'), $title_mapping['properties'], "Page title is mapped to schema:name.");
+
+    // Created date.
+    $created_mapping = $page_mapping->getFieldMapping('created');
+    $this->assertEqual(array('schema:dateCreated'), $created_mapping['properties'], "Page created date is mapped to schema:dateCreated.");
+    $this->assertEqual('date_iso8601', $created_mapping['datatype_callback'], "Page created date has datatype callback 'date_iso8601'.");
+
+    // Changed date.
+    $changed_mapping = $page_mapping->getFieldMapping('changed');
+    $this->assertEqual(array('schema:dateModified'), $changed_mapping['properties'], "Page changed date is mapped to schema:dateModified.");
+    $this->assertEqual('date_iso8601', $changed_mapping['datatype_callback'], "Page changed date has datatype callback 'date_iso8601'.");
+
+    // Body.
+    $body_mapping = $page_mapping->getFieldMapping('body');
+    $this->assertEqual(array('schema:text'), $body_mapping['properties'], "Page body is mapped to schema:text.");
+
+    // Uid.
+    $uid_mapping = $page_mapping->getFieldMapping('uid');
+    $this->assertEqual(array('schema:author'), $uid_mapping['properties'], "Page uid is mapped to schema:author.");
+    $this->assertEqual('rel', $uid_mapping['mapping_type'], "Page uid uses 'rel' mapping_type.");
+
+    // Comment count.
+    $comment_count_mapping = $page_mapping->getFieldMapping('comment_count');
+    $this->assertEqual(array('schema:interactionCount'), $comment_count_mapping['properties'], "Page comment count is mapped to schema:interactionCount.");
+    $this->assertEqual('Drupal\rdf\SchemaOrgDataConverter::interactionCount', $comment_count_mapping['datatype_callback'], "Page comment count uses correct datatype callback.");
+  }
+
+  /**
+   * Test that article data is exposed using RDFa.
+   *
+   * Two fields are not tested for output here. Changed date is not displayed
+   * on the page, so there is no test for output in node view. Comment count is
+   * displayed in teaser view, so it is tested in the front article tests.
+   */
+  protected function _testArticleRDFa() {
+    $uri_info = $this->article->uri();
+    $path = $uri_info['path'];
+
+    // Feed the HTML into the parser.
+    $parser = new \EasyRdf_Parser_Rdfa();
+    $graph = new \EasyRdf_Graph();
+    $parser->parse($graph, $this->drupalGet($path), 'rdfa', $this->base_uri);
+
+    // Type.
+    $this->assertEqual($graph->type($this->article_uri), 'schema:Article', 'Article type was found (schema:Article).');
+
+    // Title.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => $this->article->get('title')->offsetGet(0)->get('value')->getValue(),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/name', $expected_value), 'Article title was found (schema:name).');
+
+    // Created date.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => date_iso8601($this->article->get('created')->offsetGet(0)->get('value')->getValue()),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/dateCreated', $expected_value), 'Article created date was found (schema:dateCreated).');
+
+    // Created date.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => date_iso8601($this->article->get('created')->offsetGet(0)->get('value')->getValue()),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/dateCreated', $expected_value), 'Article changed date was found (schema:dateModified).');
+
+    // Body.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => $this->article->get('body')->offsetGet(0)->get('value')->getValue(),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/text', $expected_value), 'Article body was found (schema:text).');
+
+    // Uid.
+    $expected_value = array(
+      'type' => 'uri',
+      'value' => $this->user_uri,
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/author', $expected_value), 'Article author was found (schema:author).');
+
+    // Image.
+    $expected_value = array(
+      'type' => 'uri',
+      'value' => $this->image_uri,
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/image', $expected_value), 'Article image was found (schema:image).');
+
+    // Tags.
+    $expected_value = array(
+      'type' => 'uri',
+      'value' => $this->term_uri,
+    );
+    $this->assertTrue($graph->hasProperty($this->article_uri, 'http://schema.org/about', $expected_value), 'Article tag was found (schema:about).');
+  }
+
+  /**
+   * Test that page data is exposed using RDFa.
+   *
+   * Two fields are not tested for output here. Changed date is not displayed
+   * on the page, so there is no test for output in node view. Comment count is
+   * displayed in teaser view, so it is tested in the front page tests.
+   */
+  protected function _testPageRDFa() {
+    // The standard profile hides the created date on pages. Revert display to
+    // true for testing.
+    variable_set('node_submitted_page', TRUE);
+
+    $path = 'node/' . $this->page->nid;
+    $this->page_uri = url($path, array('absolute' => TRUE));
+    $user_uri = url('user/' . $this->root_user->uid, array('absolute' => TRUE));
+
+    // Feed the HTML into the parser.
+    $parser = new \EasyRdf_Parser_Rdfa();
+    $graph = new \EasyRdf_Graph();
+    $parser->parse($graph, $this->drupalGet($path), 'rdfa', $this->base_uri);
+
+    // Type.
+    $this->assertEqual($graph->type($this->page_uri), 'schema:WebPage', 'Page type was found (schema:WebPage).');
+
+    // Title.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => $this->page->get('title')->offsetGet(0)->get('value')->getValue(),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->page_uri, 'http://schema.org/name', $expected_value), 'Page title was found (schema:name).');
+
+    // Created date.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => date_iso8601($this->page->get('created')->offsetGet(0)->get('value')->getValue()),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->page_uri, 'http://schema.org/dateCreated', $expected_value), 'Page created date was found (schema:dateCreated).');
+
+    // Created date.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => date_iso8601($this->page->get('created')->offsetGet(0)->get('value')->getValue()),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->page_uri, 'http://schema.org/dateCreated', $expected_value), 'Page changed date was found (schema:dateModified).');
+
+    // Body.
+    $expected_value = array(
+      'type' => 'literal',
+      'value' => $this->page->get('body')->offsetGet(0)->get('value')->getValue(),
+      'lang' => 'en',
+    );
+    $this->assertTrue($graph->hasProperty($this->page_uri, 'http://schema.org/text', $expected_value), 'Page body was found (schema:text).');
+
+    // Uid.
+    $expected_value = array(
+      'type' => 'uri',
+      'value' => $user_uri,
+    );
+    $this->assertTrue($graph->hasProperty($this->page_uri, 'http://schema.org/author', $expected_value), 'Page author was found (schema:author).');
+  }
+}
diff --git a/core/modules/rdf/rdf.module b/core/modules/rdf/rdf.module
index 1dccf02..5167a7a 100644
--- a/core/modules/rdf/rdf.module
+++ b/core/modules/rdf/rdf.module
@@ -92,6 +92,7 @@ function rdf_rdf_namespaces() {
     'foaf'     => 'http://xmlns.com/foaf/0.1/',
     'og'       => 'http://ogp.me/ns#',
     'rdfs'     => 'http://www.w3.org/2000/01/rdf-schema#',
+    'schema'   => 'http://schema.org/',
     'sioc'     => 'http://rdfs.org/sioc/ns#',
     'sioct'    => 'http://rdfs.org/sioc/types#',
     'skos'     => 'http://www.w3.org/2004/02/skos/core#',
diff --git a/core/profiles/standard/config/rdf.mapping.node.article.yml b/core/profiles/standard/config/rdf.mapping.node.article.yml
index ac31562..b5413de 100644
--- a/core/profiles/standard/config/rdf.mapping.node.article.yml
+++ b/core/profiles/standard/config/rdf.mapping.node.article.yml
@@ -2,48 +2,35 @@ id: node.article
 targetEntityType: node
 bundle: article
 types:
-  - 'foaf:Document'
-  - 'sioc:Item'
+  - 'schema:Article'
 fieldMappings:
   title:
     properties:
-      - 'dc:title'
+      - 'schema:name'
   created:
     properties:
-      - 'dc:date'
-      - 'dc:created'
-    datatype: 'xsd:dateTime'
+      - 'schema:dateCreated'
     datatype_callback: 'date_iso8601'
   changed:
     properties:
-      - 'dc:modified'
-    datatype: 'xsd:dateTime'
+      - 'schema:dateModified'
     datatype_callback: 'date_iso8601'
   body:
     properties:
-      - 'content:encoded'
+      - 'schema:text'
   uid:
     properties:
-      - 'sioc:has_creator'
+      - 'schema:author'
     mapping_type: 'rel'
-  name:
-    properties:
-      - 'foaf:name'
   comment_count:
     properties:
-      - 'sioc:num_replies'
-    datatype: 'xsd:integer'
-  last_activity:
-    properties:
-      - 'sioc:last_activity_date'
-    datatype: 'xsd:dateTime'
-    datatype_callback: 'date_iso8601'
+      - 'schema:interactionCount'
+    datatype_callback: 'Drupal\rdf\SchemaOrgDataConverter::interactionCount'
   field_image:
     properties:
-      - 'og:image'
-      - 'rdfs:seeAlso'
+      - 'schema:image'
     mapping_type: 'rel'
   field_tags:
     properties:
-      - 'dc:subject'
+      - 'schema:about'
     mapping_type: 'rel'
diff --git a/core/profiles/standard/config/rdf.mapping.node.page.yml b/core/profiles/standard/config/rdf.mapping.node.page.yml
index b21ff4c..91330c7 100644
--- a/core/profiles/standard/config/rdf.mapping.node.page.yml
+++ b/core/profiles/standard/config/rdf.mapping.node.page.yml
@@ -2,39 +2,27 @@ id: node.page
 targetEntityType: node
 bundle: page
 types:
-  - 'foaf:Document'
-  - 'sioc:Item'
+  - 'schema:WebPage'
 fieldMappings:
   title:
     properties:
-      - 'dc:title'
+      - 'schema:name'
   created:
     properties:
-      - 'dc:date'
-      - 'dc:created'
-    datatype: 'xsd:dateTime'
+      - 'schema:dateCreated'
     datatype_callback: 'date_iso8601'
   changed:
     properties:
-      - 'dc:modified'
-    datatype: 'xsd:dateTime'
+      - 'schema:dateModified'
     datatype_callback: 'date_iso8601'
   body:
     properties:
-      - 'content:encoded'
+      - 'schema:text'
   uid:
     properties:
-      - 'sioc:has_creator'
+      - 'schema:author'
     mapping_type: 'rel'
-  name:
-    properties:
-      - 'foaf:name'
   comment_count:
     properties:
-      - 'sioc:num_replies'
-    datatype: 'xsd:integer'
-  last_activity:
-    properties:
-      - 'sioc:last_activity_date'
-    datatype: 'xsd:dateTime'
-    datatype_callback: 'date_iso8601'
+      - 'schema:interactionCount'
+    datatype_callback: 'Drupal\rdf\SchemaOrgDataConverter::interactionCount'
