Un conjunto de bibliotecas PHP que utilizan el vocabulario http://schema.org para implementar y generar semántica de microdatos o RDFa Lite 1.1.
Esta biblioteca se utiliza en el CMS Joomla desde la versión 3.2 (llamada JMicrodata).
Creado durante Google Summer of Code 2013 y 2014.
La biblioteca fue diseñada con estos objetivos en mente:
Compositor :
Agregue su archivo composer.json :
{
"require" : {
"palex/ PHPStructuredData " : " * "
}
} De la fuente :
Ejecute git clone https://github.com/alexprut/PHPStructuredData.git
Descarga directa :
Descarga la última versión desde aquí
Supongamos que ya tienes una instancia de la biblioteca Microdata o RDFa. Y necesita agregar semántica de Microdatos o RDFa al siguiente HTML que es parte de un artículo ( por ejemplo, $sd = new PHPStructuredData Microdata('Article'); ).
<div <?php echo $ sd -> displayScope (); ?> >
<!-- Language -->
<?php echo $ sd -> content ( null , ' en-GB ' )-> property ( ' inLanguage ' )-> display ( ' meta ' , true ) ?>
<!-- Title -->
<?php echo $ sd -> content ( ' How to Tie a Reef Knot ' )-> property ( ' name ' )-> display (); ?>
<!-- Author-->
<span>
Written by <?php echo $ sd -> content ( ' John Doe ' )-> property ( ' author ' )-> fallback ( ' Person ' , ' name ' )-> display (); ?>
</span>
<!-- Date published -->
<?php echo $ sd -> content ( ' 1 January 2014 ' , ' 2014-01-01T00:00:00+00:00 ' )-> property ( ' datePublished ' )-> display (); ?>
<!-- Content -->
<?php echo $ sd -> content ( ' Lorem ipsum dolor sit amet... ' )-> property ( ' articleBody ' )-> display (); ?>
<div> La biblioteca Microdata representará:
< div itemscope itemtype =' https://schema.org/Article ' >
<!-- Language -->
< meta itemprop =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > La biblioteca RDFa renderizará:
< div vocab =' https://schema.org ' typeof =' Article ' >
<!-- Language -->
< meta property =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > En cambio, si decide cambiar el tipo actual ( por ejemplo, $sd->setType('Review'); ).
La biblioteca Microdata representará:
< div itemscope itemtype =' https://schema.org/Review ' >
<!-- Language -->
< meta itemprop =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div > La biblioteca RDFa renderizará:
< div vocab =' https://schema.org ' typeof =' Review ' >
<!-- Language -->
< meta property =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div > Como puede ver, John Doe recurre al tipo de persona y no hay pérdida de información, incluso si el tipo actual no tiene una propiedad de autor , mostrará información importante para las máquinas, los motores de búsqueda saben que hay una persona John Doe .
En cambio, si decide no representar la semántica de Microdatos o RDFa, simplemente deshabilite la salida de la biblioteca ( por ejemplo, $sd->enable('false'); ).
Tanto la biblioteca Microdata como RDFa representarán:
< div >
<!-- Language -->
<!-- Title -->
How to Tie a Reef Knot
<!-- Author-->
< span >
Written by John Doe
</ span >
<!-- Date published -->
1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div > Actualmente, tanto la biblioteca RDFa como la Microdata no admiten múltiples alternativas.
Si desea mantener sus vistas separadas de la lógica, ParserPlugin es una clase PHP para analizar el marcado HTML y convertir los atributos HTML5 data-* en la semántica Microdata o RDFa Lite 1.1 con el formato correcto.
Los atributos data-* son nuevos en HTML5 y nos brindan la posibilidad de incrustar atributos de datos personalizados en todos los elementos HTML. Entonces, si desactiva la salida de la biblioteca, el HTML aún será validado. El sufijo predeterminado que buscará la biblioteca es data-sd , donde sd significa datos estructurados, pero puede registrar más de un sufijo personalizado.
El tipo define qué esquema se utiliza para el siguiente marcado. El Tipo siempre debe tener el primer carácter en Mayúscula para que se interprete correctamente. Si el tipo es un esquema válido, el alcance global de la página a partir de este punto se actualiza a este esquema. El complemento reemplazará la etiqueta de datos con itemscope itemtype='https://schema.org/Type' en el caso de semántica de microdatos o vocab='https://schema.org' typeof='Type' en el caso de RDFa Lite 1.1 semántica.
< div data-sd =" Article " >
< p > This is my article </ p >
</ div > Esto se generará utilizando la semántica Microdata como:
< div itemscope itemtype =" http://schema.org/Article " >
< p > This is my article </ p >
</ div > O usando la semántica RDFa como:
< div vocab =" http://schema.org " typeof =" Article " >
< p > This is my article </ p >
</ div >
Una vez declarado un esquema, el siguiente paso es declarar propiedades individuales, explicando el contenido y dándole significado semántico.
La propiedad siempre debe tener el primer carácter en minúscula para que se interprete correctamente. Si se descubre que la propiedad es parte del esquema actual, el complemento reemplazará la etiqueta de datos con itemprop='property' en el caso de la semántica de Microdatos o property='property' en el caso de la semántica de RDFa Lite 1.1. Si se determina que la propiedad no es una propiedad válida del esquema activo, se ignorará y se analizará la siguiente propiedad disponible.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
</ div > Esto se generará utilizando la semántica Microdata como:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
</ div > O usando la semántica RDFa como:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
</ div >
A veces es posible que desee indicar explícitamente una propiedad que solo debe usarse cuando un esquema específico está activo; por ejemplo, si la propiedad tiene una propiedad específica en un esquema, que se llama de otra manera en otro esquema.
Es posible lograr esto utilizando una propiedad dependiente del esquema. Esto funciona mediante el uso de una combinación entre Type y property , separados por un punto. En resumen, si el alcance global actual es igual a Tipo y la propiedad es parte de ese Tipo, el complemento reemplazará la etiqueta de datos con itemprop='property' en el caso de la semántica de Microdatos o property='property' en el caso de RDFa Lite. 1.1.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
</ div > Esto se generará utilizando la semántica Microdata como:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
</ div > O usando la semántica RDFa como:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
</ div >
Es posible, utilizando una combinación de estas, especificar múltiples propiedades, incluidas algunas específicas de un esquema y otras genéricas. El orden de los bloques de construcción no es significativo y se utiliza un espacio en blanco como separador.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
< p data-sd =" Recipe.recipeCategory Article.articleSection description " > Amazing dessert recipes </ p >
</ div > Esto se generará utilizando la semántica Microdata como:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
< p itemprop =" articleSection " > Amazing dessert recipes </ p >
</ div > O usando la semántica RDFa como:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
< p property =" articleSection " > Amazing dessert recipes </ p >
</ div > A veces es necesario anidar esquemas, por ejemplo si desea describir a una persona cuando tiene abierto el esquema del artículo. Esto es posible utilizando esquemas anidados. Para usar esto, simplemente agregue el esquema precedido por un punto, después de la propiedad. Una vez que haya terminado de usar el esquema anidado, cierre la etiqueta que lo contiene y restablezca el esquema original.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
< div data-sd =" author.Person " >
< p data-sd =" Person name " > John Doe </ p >
</ div >
< p data-sd =" Article keywords " > Cake </ p >
</ div > Esto se generará utilizando la semántica Microdata como:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
< div itemprop =" author " itemscope itemtype =" http://schema.org/Person " >
< p itemprop =" name " > John Doe </ p >
</ div >
< p itemprop =" keywords " > Cake </ p >
</ div > O usando la semántica RDFa como:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
< div property =" author " vocab =" http://schema.org " typeof =" Person " >
< p property =" name " > John Doe </ p >
</ div >
< p itemprop =" keywords " > Cake" </ p >
</ div > Supongamos que ya tiene una instancia de la biblioteca ParserPlugin . Y necesita agregar semántica de Microdatos o RDFa al siguiente HTML que es parte de un artículo ( por ejemplo, $parser = new PHPStructuredData ParserPlugin('microdata'); $scope='Article'; ).
< div data-sd =" <?php echo $scope;?> " >
<!-- Title -->
< span data-sd =" Review.itemReviewed name " >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span data-sd =" author.Person " >
< span data-sd =" name " > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta data-sd =' <?php echo $scope;?> datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span data-sd =' reviewBody articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > La salida Microdata será:
< div itemscope itemtype =' https://schema.org/Article ' >
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > La salida RDFa será:
< div vocab =' https://schema.org ' typeof =' Article ' >
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > En cambio, si decide cambiar el tipo actual ( por ejemplo, $scope="Review"; ).
La salida Microdata será:
< div itemscope itemtype =' https://schema.org/Review ' >
<!-- Title -->
< span itemprop =' itemReviewed ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' reviewBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > La salida RDFa será:
< div vocab =' https://schema.org ' typeof =' Review ' >
<!-- Title -->
< span property =' itemReviewed ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' reviewBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div > Las bibliotecas PHPStructuredData utilizan el archivo types.json para verificar y generar semántica validada, ese archivo contiene todos los tipos y propiedades disponibles del vocabulario http://schema.org y se generó automáticamente con https://github.com/ Rastreador web alexprut/Spider4Schema.
itemref .StructuredData .types.json todas las propiedades requeridas especificadas por Google, Yandex, Baidu. PHPStructuredData tiene la licencia MIT; consulte el archivo LICENCIA para obtener más detalles.