5

After reading several recent popular articles on the internet I decided to use ProfessionalService over LocalBusiness for my web design company. It is my understanding that LocalBusiness is very broad and it is best to be as specific as much as possible and the reason why I opted to use both ProfessionalService and additionalType with The Product Types Ontology.

Using Google Tag Manager my json-ld looks like this:

<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "ProfessionalService",
    "additionalType": "http://www.productontology.org/id/Web_design",
    "name": "BYBE",
    "url": "https://www.bybe.net",
    "logo": "https://www.bybe.net/wp-content/themes/showboat/logo-bybe.png",
    "description": "Creative website design company based in Bournemouth and Poole, Dorset.",
    "telephone": "01202 949749",
    "areaServed": ["Bournemouth", "Poole", "Dorset"],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "09:00",
      "closes": "17:00"
    }
  ],
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Flat 11, East Cliff Grange, 35 Knyveton Road",
      "addressLocality": "Bournemouth",
      "addressRegion": "Dorset",
      "postalCode":"BH1 3QJ"
    },
    "geo": {
    "@type": "GeoCoordinates",
    "latitude": "50.73744",
    "longitude": "-1.8495269"
    },
    "sameAs" : [ "https://plus.google.com/+ByBeBournemouth",
    "https://twitter.com/bybe_net",
    "https://www.facebook.com/ByBeUK",
    "https://uk.pinterest.com/bybenet/",
    "https://www.youtube.com/c/ByBeBournemouth",
    "https://www.linkedin.com/company/bybe"]
  }
</script>

I'm a little confused over the choice of words Schema has used on the ProfessionalService page:

SOURCE

Original definition: "provider of professional services."

The general ProfessionalService type for local businesses was deprecated due to confusion with Service. For reference, the types that it included were: Dentist, AccountingService, Attorney, Notary, as well as types for several kinds of HomeAndConstructionBusiness: Electrician, GeneralContractor, HousePainter, Locksmith, Plumber, RoofingContractor. LegalService was introduced as a more inclusive supertype of Attorney.

It's not clear if ProfessionalService is completely deprecated since it is still listed on the list of Schema's, I suspect they mean its deprecated for using it in a certain way, I'd be grateful if a Schema Jedi could shed some light on this issue.

Question(s):

Is ProfessionalService completely deprecated? If it's not then please include an example demonstrating the type of usage that is deprecated, that way it'll help and others.

Simon Hayter
  • 3,131
  • 27
  • 53
  • 2
    It may be worth reaching out to the maintainers, I have done so before and they are quick at responding. For the schema you mention you could file an issue on the official [Github](https://github.com/schemaorg/schemaorg/issues?q=is%3Aissue+ProfessionalService+is%3Aopen) or get in touch via the [Schema.org quick feedback form](https://docs.google.com/a/google.com/forms/d/e/1FAIpQLSfdGaYIlyG0mylDEEDH8CJEbuMvsylxnpDdJlqjQX3KPl7ImA/viewform?entry.1174568178&entry.41124795=http://schema.org/ProfessionalService&entry.882602760=type) – Shannon Young Oct 27 '16 at 10:41

1 Answers1

3

ProfessionalService is deprecated for all cases, not only for some specific ones.

However, it will likely never be removed from Schema.org, because it would do more harm than good: many sites might still use this type, and many of them will probably never update their structured data (or even notice that it got deprecated in the meantime).
See also what the Schema.org webmaster, Dan Brickley, says about superseded types:

We shouldn't make the warnings too heavy or it creates awkwardness e.g. when search marketing people have recommended something to their clients then it gets superseded. We want consumers to respect older structures wherever possible and not worry publishers into constantly updating in the absence of concrete product-related incentives imho.

So if you have to use this type, nothing will break (just don’t expect updates for this type, or integration with future developments of the vocabulary). But if possible, it would better to use an alternative.

If not using ProfessionalService, the closest type for your web design company would be LocalBusiness. The services (design, development, consulting, CMS updates etc.) your company provides can be modelled with Service (where the provider is the LocalBusiness) and/or with makesOffer (where the Offer can reference the Service with itemOffered) (or with hasOfferCatalog in the same way, if you want to model it as list).

unor
  • 92,415
  • 26
  • 211
  • 360
  • (I created a related issue: [*ProfessionalService is deprecated, but it doesn’t say so in the RDF*](https://github.com/schemaorg/schemaorg/issues/1418)) – unor Oct 27 '16 at 14:12
  • Great answer again... problem I have with makesOffer is that it expects a price to be mentioned on the page and obviously my services are bespoke and no price range exists since every project is different. Does using `LocalBusiness` with `"additionalType": "http://www.productontology.org/id/Web_design",` and service make a viable option? – Simon Hayter Oct 27 '16 at 16:54
  • Along with `Local Business` > `Service` > `OfferCatalog` > `"name": ["Bournemouth", "Poole", "Dorset"],` – Simon Hayter Oct 27 '16 at 17:00
  • @SimonHayter: From the perspective of Schema.org, it’s perfectly fine (and intended) to have an `Offer` without `price`. It’s just Google’s SDTT that gives an "error" in such a case, but it should really be just "informational" instead, as it just means that Google Search won’t display a Rich Result if no price is provided. So for Google, it should be the same if you don’t provide `Offer` or if you provide `Offer` but without `price`: no related rich result for you. – unor Oct 27 '16 at 18:59
  • @SimonHayter: I think I would use the additional type for the `Service` instead of the `LocalBusiness`, but apart from this, if you don’t want to use `Offer`, I think it’s fine to just have a `LocalBusiness` and a `Service` (or multiple) and to connect them via `provider`. (Although I don’t understand what you do in "`Service > OfferCatalog > "name"`") – unor Oct 27 '16 at 19:06
  • I just came up with https://www.bybe.net/files/stackoverflow/bybe-schema-01.txt using `Service` > `Provider`. I've tried using `OfferCatalog` but I get 3 three problems, it complains about Website Design not being valid in the serviceType (might me not closing tags off correct), and the other 2 issues is that Google is expecting a URL and position markup when using `OfferCatalog` > `itemListElement` > `Offer`. I'd like to attach 2 services but is OfferCatalog itemlist valid even through I don't have a `
      ` on the page representing this?
    – Simon Hayter Oct 27 '16 at 19:46
  • How can I attach services to Service without using offerCatalog? or is the latest code I've done good enough? – Simon Hayter Oct 27 '16 at 20:13
  • @SimonHayter: (Guess it’s too much for the comment section.) The linked example looks fine to me. If your company provides multiple services, you don’t *have* to use an `OfferCatalog`. You could simply provide two (or more) `Service` items. That said, you might want to consider using `LocalBusiness` as top-level item and reference the `Service` items in an array with `@reverse`-`provider` ([example](http://stackoverflow.com/a/39331042/1591669)); but this doesn’t change the data, it’s just a different way to structure it. – unor Oct 27 '16 at 20:47
  • Hey Unor thanks for the recommendations, I looked into @reserve usign provider but seems its not valid because its not supported within LocalBusiness. Can you take a look at https://jsfiddle.net/SimonHayter/bkg2xyee/ when you have some downtime and make any changes required if you like, or have the time. – Simon Hayter Oct 28 '16 at 10:32
  • @SimonHayter: What I meant is the other way around: https://jsfiddle.net/bkg2xyee/1/ – unor Oct 28 '16 at 11:46