html5 microdata markup using Schema.org - html

I am working on a site of a christian church. It has a page with schedule list and house churches list which I want to mark up using Schema.org microdata. The thing is I cannot find appropriate type to describe these items. For schedule I decided to go for http://Schema.org/Event type, however I need to add contact person name and phone but which property of Event can I use for that? I used "performer" property, but that is not really it...
<div itemscope="" itemtype="http://schema.org/Event">
<span class="time"><time itemprop="startDate" datetime="2012-07-02T19:00:00">19:00</time></span>
<h2 class="colored" itemprop="name">Worship Group</h2>
<strong>Address:</strong> <span itemprop="location">St. Patric 42</span>
<br><strong>Contacts:</strong>
<span itemprop="performer" itemscope="" itemtype="http://schema.org/Person">
<span itemprop="telephone">8-422-212-5532</span> (<span itemprop="name">John Parker</span>)</span>
<span itemprop="description">We want to worhip God together</span>
</div>
As for a house church - it's something between an Organization and Event - it's a group of believers getting together at a place at a certain time. I decided to go for http://schema.org/Organization, added ContactPoint as church leader contacts info. But how can I mark start time?
Is there any way to combine entity types so that I could describe all important properties I have?

First part of your question:
For schedule I decided to go for http://Schema.org/Event type, however
I need to add contact person name and phone but which property of
Event can I use for that?
You're spot on using an Event for your schedules. You could of course be a bit more precise and and use an extension of Event to be more precise as itemtype.
When you wish to specify a contact person as a performer I'm a bit unsure. I would rather flip your thinking around and not specify a contact person but instead specify the events as upcoming or past events associated with the organization. The organization then has a contact point that will go for all the events.
<div itemscope="" itemtype="http://schema.org/Organization/ReligiousGroup">
<div itemprop="location" itemscope="" itemtype="http://schema.org/Church">
...
</div>
<div itemprop="contactPoint" itemscope="" itemtype="http://schema.org/Person">
...
</div>
<div itemprop="events" itemscope="" itemtype="http://schema.org/Event">
...
</div>
<div itemprop="events" itemscope="" itemtype="http://schema.org/Event">
...
</div>
<div itemprop="events" itemscope="" itemtype="http://schema.org/Event">
...
</div>
</div>
Or more simple described with YAML:
---
Organization/ReligiousGroup:
location : Church
contactPoint : Person
events :
- Event
- Event
- Event
You can extend Organization to ReligiousGroup to be more precise of the item.
Read more about extending here: http://www.schema.org/docs/extension.html
Now the final part of your question:
As for a house church - it's something between an Organization and
Event - it's a group of believers getting together at a place at a
certain time.
A group of people getting together at a place at a certain time is an Event.

Related

How can I tell if I nested microdata correctly within my code?

I am new to microdata, and have to try and put together an assignment.
It requires "At least one itemtype should be embedded (or nested) in another itemtype: the value for at least one itemprop should itself be another itemtype with its own set of properties."
The code I came up with is this:
<div itemscope itemtype="https://schema.org/Person">
<div style="white-space: pre-wrap;">
<span itemprop="description">
Since I am still in my <span itemprop="knowsAbout">library and information science program</span>, I do not have as many finished projects as I wish to showcase here.
</span>
I have been performing coursework on reference and information services, information organization (including metadata), and an introduction to technologies that are used in the library sciences field, such as database management.
<div itemscope itemtype="https://schema.org/Action">
I have done a few <span itemprop="result">library science projects</span> over the last year that have been recently completed. Actually, this<span itemprop="result"> early version of my website</span> you are on is one of them! I programmed this
myself over the course of several days using a combination of HTML and CSS to create this website experience.</div>
<div itemscope itemtype="https://schema.org/CreativeWork">
Another project I have worked on is a <a itemprop="exampleOfWork" href="link_insert_here" target="_blank">LibGuide</a> (a library research guide) for LGBTQ+ characters in Comic Books and Graphic Novels. I have also created several learning aids.
First is an example of a <a itemprop="exampleOfWork" href="handout.pdf" target="_blank">handout</a> I created discussing some basic information on virtual machines. This is an example of a <a itemprop="exampleOfWork" href="link_insert_here" target="_blank">video tutorial</a> I created on how to sign up for a Local Public Library eCard.
</div>
</div>
</div>
I'm not sure I nested everything properly, and when I use various structured testing tools it picks up my microdata. While it seems right, I just can't tell.

Schema/Metadata for members of organisation/Team Page

I am building a team page for my client's website.
The team page contains a list of their employees along with following details:
image
Twitter Link
Facebook Link
Full Name
Designation (CEO/Founder, etc).
How can I use metadata from schema.org for adding all of the above fields?
This is what I have come up so far.
<ul>
<li>
<article itemscope itemtype="http://schema.org/Person">
<h1 itemprop="name">Team Member's Name</h1>
<p>CEO</p>
<img src="" alt="" itemprop="image">
Facebook Profile
LinkedIn Profile
</article>
</li>
</ul>
Also, In terms of adding further meta data, I want to even add a additional property to a wrapper <div> with itemscope of the company that I am developing this website for.
So, that I add not only the meta data of each emplyoee, but I also add the company name (which is same for each employee).
You can use
name for the full name (and if you want, givenName, familyName, and honorificPrefix/honorificSuffix in addition),
image for the image,
sameAs for the social media profiles, and
jobTitle for the designation.
To link the persons and the organization, look for appropriate properties that have Person as expected value (from Organization) or Organization as expected value (from Person).
A simple way could be:
<div itemscope itemtype="http://schema.org/Organization">
<ul>
<li itemprop="founder" itemscope itemtype="http://schema.org/Person"></li>
<li itemprop="employee" itemscope itemtype="http://schema.org/Person"></li>
<li itemprop="employee" itemscope itemtype="http://schema.org/Person"></li>
</ul>
</div>
If your markup doesn’t allow this, Microdata’s itemref attribute might be useful (example).
According to schema.org this is how you add properties. You can learn more here. http://schema.org/docs/gs.html#schemaorg_types
<div itemscope itemtype="http://schema.org/Person">
Alice Jones
</div>
<div itemscope itemtype="http://schema.org/Person">
Bob Smith
</div>
Then you can use the available property types from this table. http://schema.org/Person
However, since you're doing team members (employees), you may want to structure the markup around properties from Organization. http://schema.org/Organization

How do I use Schema.org to identify filters on our hotel search site?

I'm working on a site designed to help a user find a hotel. We've got lots of widgets for filtering the hotels we show (e.g. price filters) or else ordering the hotels we show (e.g. by distance).
I can see how to markup our hotels as being a list. And also how to communicate the sort order of the list.
And we're already marking up the hotel's themselves:
<div itemscope itemtype="http://schema.org/Hotel">
<div itemprop="image" style="background-image: url('{{{ imageUrl }}}');"></div>
<h2 class="title" itemprop="name">{{ name }}</h2>
<div itemscope itemtype="http://schema.org/Offer">
<div itemprop="price">{{{ price }}}</div>
</div>
</div>
Is there a way of identifying our filters as being tools for adjusting the list?
To get an idea of how the website works see - http://mapov.com/hotels/the+strip/.
Is there a way of identifying our filters as being tools for adjusting the list?
With an Action type.
See SearchAction or perhaps FindAction (DiscoverAction).
An Action can be used to represent what happened (e.g., "User 3 searched for hotels in Amsterdam"), but also for representing potential actions: use the potentialAction property to specify the possible actions an item can have.
<section itemscope itemtype="http://schema.org/ItemList">
<div itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction">
…
</div>
</section>
Side notes about your markup
Your image property won’t work, it can’t have an image specified in the style attribute as value. You have to provide the image property on a "link" element (e.g., img, a, link, …).
Your Offer is not associated with the Hotel. You could use the makesOffer property.
<div itemscope itemtype="http://schema.org/Hotel">
<img itemprop="image" src="http://yourhostel.es/content/124"/>
<meta itemprop="address" content="you street"/>
<h2 class="title" itemprop="name">name </h2>
<div itemprop="priceRange">price</div><div itemprop="telephone">9999999</div>
price

"availability" not showing in Google Rich Snippet

I’m using Schema.org properties to provide product data of my webshop to search engines. It includes stuff like the image, product name and price. All works great, and as a result, the price shows up nicely in Google’s search results.
However, the availability (In stock) for some reason doesn’t make it into the results, even after waiting a few weeks.
My products are on number 1 in the SERPs, just without the availability. I validated my page with Google's Structured Data Testing Tool and it looks great.
Does anyone know why Google doesn’t bother to show the availability?
A snippet of my source:
<div itemscope itemtype="http://schema.org/Product">
<img itemprop="image" src="/media/product.jpg" alt="Product image">
<h2 itemprop="name">Product name</h2>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta itemprop="priceCurrency" content="EUR">
<span itemprop="price">€ 12,95</span>
<ul>
<li itemprop="availability" href="http://schema.org/InStock">Op voorraad</li>
</ul>
</div>
</div>
I don’t know if this is the reason why Google Search does not pick it up, but your markup is not valid.
The li element can’t have a href attribute.
So instead of this
<li itemprop="availability" href="http://schema.org/InStock">Op voorraad</li>
you should use, for example, this
<li><link itemprop="availability" href="http://schema.org/InStock"/>Op voorraad</li>
Side note: About your price
The value of the price property should not contain the currency symbol, so you might want to use this instead:
<span itemprop="price">12,95</span> €
As Schema.org recommends to use the . as decimal separator, you could use the data element or the meta element to still how , to your visitors:
<data itemprop="price" value="12.95">12,95</data> €
<span><meta itemprop="price" content="12.95" />12,95</span> €
The http://schema.org/InStock should idealy be defined at the itemscope level and your itemprop can continue to be mentioned in the li tag as before, without the link in it.
Google may not choose to show availability in organic search results depending on how relevant it perceives that information to be for users compared to price, item name etc (remember, there's only a limited amount of space in the results).
Do any of your other competitors' listings show availability?

HTML5 tags and microdata for a list of apartments

which HTML5 tags and microdata schema should I use to describe a list of apartments to rent?
They have the following properties:
Name
Image
Unique number
Location
Description
Price
My HTML structure is currently like this:
<section id="featured">
<h2>Featured appartaments</h2>
<ul>
<li>
<article>
<h3>House #1</h3>
<img src="http://placehold.it/250x150/" alt="House #1" />
<p>Ref. 40</p>
<p>My location</p>
<p>My description.</p>
<p>Price: € 500.000,00</p>
</article>
</li>
<li>
<article>
<h3>House #2</h3>
<img src="http://placehold.it/250x150/" alt="House #2" />
<p>Ref. 41</p>
<p>My location</p>
<p>My description.</p>
<p>Price: € 500.000,00</p>
</article>
</li>
</ul>
</section>
Update (2016): Schema.org now has new types/properties for accommodations, including an Apartment type. See the update in my related answer. I’ll leave the old answer below unchanged for now.
If you want to use the Schema.org vocabulary:
Each apartment could be represented by a Product (bold emphasis mine):
Any offered product or service. For example: a pair of shoes; a concert ticket; the rental of a car; a haircut; or an episode of a TV show streamed online.
The offer to rent such an apartment could be represented by an Offer:
An offer to transfer some rights to an item or to provide a service—for example, an offer to sell tickets to an event, to rent the DVD of a movie, to stream a TV show over the internet, to repair a motorcycle, or to loan a book.
For linking from the Product to the Offer, use the offers property (resp. the itemOffered property for the other direction).
It’s also possible to use Offer on its own (without using Product at all), and judging from your example, this might make sense here. (Using Offer and Product makes sense when you have different offers for the same apartment, i.e., you can give the metadata for the apartment in the Product and use separate Offer items for different dates etc.).
So using your example, it could look like:
<article itemscope itemtype="http://schema.org/Offer">
<h3 itemprop="name"><a itemprop="url" href="">House #1</a></h3>
<img itemprop="image" src="http://placehold.it/250x150/" alt="House #1" />
<p itemprop="serialNumber">Ref. 40</p>
<p>My location</p>
<p itemprop="description">My description.</p>
<p>Price: € <span itemprop="price">500.000,00</span> <meta itemprop="priceCurrency" content="EUR" /></p>
</article>
There is no property for specifying the address of the offered apartment. Offer only allows for giving the address/place where you can obtain the offer (availableAtOrFrom). You could just use the PostalAddress type, but as there is no appropriate property to link it to Offer, there would be no machine-readable connection between the offer and the address.
Additionally, you might want to use
businessFunction → BusinessFunction for specifying that it’s about renting,
category for specifying that it’s about an apartment (i.e., Residence),
etc.