Search code examples
rdfsemantic-webrdfsrdfa

Add RDFa using own RDF Schema


I want to create an RDFS ontology describing some specific classes and properties. Then I want to add RDFa into HTML with the vocabulary I defined in RDFS. I know that we need to provide a URL to the vocabulary in RDFa, but I am not sure where to put my RDFS file in the web app or how to deploy the RDFS file.

When I add RDFa with schema.org, the HTML is like:

  <div vocab="http://schema.org/" typeof="Person">
  <span property="name">Jane Doe</span>
  <img src="janedoe.jpg" property="image" alt="Photo of Jane Joe"/>
  <span property="jobTitle">Professor</span>
  <div property="address"  typeof="PostalAddress">
    <span property="streetAddress">
      20341 Whitworth Institute
      405 N. Whitworth
    </span>
    <span property="addressLocality">Seattle</span>,
    <span property="addressRegion">WA</span>
    <span property="postalCode">98052</span>
  </div>
  <span property="telephone">(425) 123-4567</span>
  <a href="mailto:[email protected]" property="email">
    [email protected]</a>
  Jane's home page:
  <a href="http://www.janedoe.com" property="url">janedoe.com</a>
  Graduate students:
  <a href="http://www.xyz.edu/students/alicejones.html" property="colleague">
    Alice Jones</a>
  <a href="http://www.xyz.edu/students/bobsmith.html" property="colleague">
    Bob Smith</a>
</div>

In the beginning of the HTML

<div vocab="http://schema.org/" typeof="Person">

it states using the vocabulary Schema.org.

I want to ask how to use own RDFS. Also, how can I validate the RDFa is properly linked to my RDFS and written correctly


Solution

  • There are two common ways how to host a vocabulary/ontology:

    • hash namespace (e.g., http://example.com/vocabulary#Person)
    • slash namespace (e.g., http://example.com/vocabulary/Person)

    The W3C Working Group Note Best Practice Recipes for Publishing RDF Vocabularies contains some recipes, which illustrate example configurations.

    Let’s assume that you go with a hash namespace, so that the complete vocabulary is contained in http://example.com/my-voc, and a class like "Person" would have the URI http://example.com/my-voc#Person.

    Now you want to use classes/properties from your vocabulary in your RDFa. So let’s add a prefix for each vocabulary you want to use (you could also keep using vocab for a "default", prefix-less vocabulary, if you want to):

    <div prefix="schema: http://schema.org/ foo: http://example.com/my-voc#">
    </div>
    

    You can now use schema:Person for Schema.org’s Person class, and foo:Person for the Person class from your own vocabulary.