I am looking into Schema.org as a means of improving SEO for our product. It's pretty clear to me why it makes sense to use it, but I'm struggling to choose an appropriate schema which fits my needs.
Our product can be described approximately as a kind of dictionary, where word has its own page, which is composed of a brief definition, followed by a more extensive elaboration on the meaning. Like so:
WORD
definition paragraph
extended description paragraph
- list of used sources
So my question would be: what schema is best suited for my needs, and if no of the existing options suffices, would you recommend me to create my own scheme? I can imagine using existing schemes benefits SEO better, but I'm a layman on the subject.
So far the best option seems to be the Article
scheme, which has an articleSection
property which can be used to distinguish between definition as description, however not semantically, so I wonder if there's a better option I'm overlooking. Also, a decent property covering listed sources seems to be lacking, since I don't consider citations and mentions to quite respect the actual semantic meaning.
Thanks!
Here is a JSON-LD array that may be appropriate for you.
When spoken it says: "I have a data catalog named Product Dictionary. The Product Dictionary is composed of individual data sets. Words from our Product Dictionary are defined in data-sets. Two data-sets are featured here. Each data-set has parts that provide additional information about the Word. The name of the parts is data-feed. Each data-feed includes additional information. etc."
Here is that structure:
<script type="application/ld+json" id="">
{
"@context": {
"@vocab": "http://schema.org/"
},
"@type": "DataCatalog",
"@id": "http://example.com/identifier/20000",
"name": "Product Dictionary",
"hasPart": [{
"@type": "Dataset",
"@id": "http://example.com/identifier/21000",
"name": "word-1",
"description": "meaning of word-1",
"hasPart": {
"@type": "DataFeed",
"@id": "http://example.com/identifier/21100",
"name": "name of DataFeed-1",
"dataFeedElement": {
"@type": "DataFeedItem",
"@id": "http://example.com/identifier/21110",
"name": "name of DataFeedItem-1",
"item": {
"@type": "Thing",
"@id": "http://example.com/identifier/21111",
"name": "name of Thing-1",
"description": "description of Thing-1"
}
}
}
},
{
"@type": "Dataset",
"@id": "http://example.com/identifier/22000",
"name": "word-2",
"description": "meaning of word-2",
"hasPart": {
"@type": "DataFeed",
"@id": "http://example.com/identifier/22100",
"name": "name of DataFeed-2",
"dataFeedElement": {
"@type": "DataFeedItem",
"@id": "http://example.com/identifier/22110",
"name": "name of DataFeedItem-2",
"item": {
"@type": "Thing",
"@id": "http://example.com/identifier/22111",
"name": "name of Thing-2",
"description": "description of Thing-2"
}
}
}
}]
}
</script>
If you adapt this approach, include the <script>
(also known as a JSON-LD island) in your HTML page.
You can test the structure here: https://search.google.com/structured-data/testing-tool