4 . Collection Properties

Distinction between fields and relations(outbound, inbound); Choose properties that can be used through render panel. Data Types. Based on data types selection of dims modules. Custom properties. Dims module settings.

The settings button of a collection exposes all available collection properties.

Selection of properties. We can choose properties that we'll use in our project. Only those properties that we select here will be available for usage in VPTL renders (via Render Panel).

Merged list of properties for inherited classes. If we, for example, create a collection Articles out of the class Article, we'll have a chain of inheritance such as Thing > CreativeWork > Article, so all the properties from Article, CreativeWork, and Thing will appear together in the list of available properties for collection Articles, sorted alphabetically.

Fields and Relations

Depending on a selection of Expected Type, the property will behave as a field or as a relation.

Property as a Field. Property will behave as a field if it's expected type is any of basic schema types, such as Text, Boolean, Date, etc... (Those which inherit from https://schema.org/DataType).

Property as a Relation. Property will behave as a relation if it's expected type is any other complex schema type which inherits from https://schema.org/Thing, such as Person, Organization, Place etc... More precisely, it will be an outbound relation.

Manifestation of the property as a field or a relation is clearly visible via a Render Panel. Let's take for example the 'image' property. At first, expected type is URL, so 'image' will appear in the list of Fields on the Render Panel.

But, as soon as we switch the expected type to be ImageObject (which is actually in its definition Thing > CreativeWork > ImageObject), the property 'image' will appear under the list of Outbound Relations in the Render Panel.

Polymorphism

In the context of properties' expected types the polymorphism is an ability of a property to have multiple expected types defined.

Relations can be polymorphic. It means that we can select multiple expected types. For example, Article can have relation author which expects both Person and Organization.
Article -author-> Person
Article -author-> Organization

Fields cannot be polymorphic. If property is meant to be field, by its nature it can't be polymorphic and its value can be defined by only one expected type at the time. In simple words property can't be Text and Boolean at the same time. It can only be either Text or Boolean.

Inbound Properties

Inbound properties represents the opposite side of a graph and they are always relations (there is no logic to think of them as fields ever).

So, if we take as an example Article -author-> Person, then it's certain, if we inspect properties of the Person, that we will find 'author' in the list of Inbound properties. Inbound properties are serving to bring the content 'that is set somewhere else' (from outbound direction). So if we say from outbound direction 'This Article has an author, and it's John', then from the opposite side we can say 'John is the author of this Article, and this one, and this one'. This is the power of inbound relations.

Expected Type defines the list of available DIMS Modules

Selection of property's Expected Type defines the list of available DIMS Modules through which the property is finally rendered. Some examples are:

  • For expected type Text, available DIMS modules are text, cedit, anchor, time, open-html

  • For expected type URL, available DIMS modules are anchor and image

For expected types that inherit from Thing (thus we say the property is a relation), the only available DIMS module is select-search. At the moment, select-search is the only relational DIMS module available in Momentum.

Custom Properties

Besides default properties which are the part of Schema classes, we are able to define custom non-semantic properties.

Using custom property as a relation

To use the custom property as a relation we would set its expected type to Thing. Since all other types inherit from Thing, it means that we can make a relation from any created collection to any other collection. This feature unlocks the powerful mechanism of Momentum for creation of custom taxonomies.

  1. Core Concepts
    1. Structured Data, MicroData, Schema.org
    2. GraphDB & Dynamic Content
    3. Html Renders (VPTL Model)
    4. Semantic HTML  (Document Semantics)
    5. CSS & Preprocessors
    6. External CSS & JS Libraries
    7. Integrated CMS
    8. Momentum Network and Market
  2. Environment
    1. Viewport
    2. Project Settings
    3. Tools Panel
    4. Code Editor & External Libraries
    5. Visual Helpers
    6. Web Parser
    7. Structure Panel
    8. Render Panel
    9. Stylebook
    10. Assets
  3. HTML
    1. Layout Structure (Master Template)
    2. Basic HTML Building
    3. Parsing Pre-made HTML
    4. Working With Snippets
    5. HTML In Dynamic Collection
    6. Hidden HTML Elements
    7. Forms
    8. Container Lock
  4. Website Structure
    1. Blank Pages
    2. Schema.org Classes
    3. Collections
    4. Collection Properties
    5. DIMS Module Settings
    6. Stylebook (vptli)
    7. Using Render Panel
    8. Index Operations
    9. Relations Between Collections
    10. Taxonomies
  5. Schema.org, Advanced
    1. Independent vs Context
    2. Testing Schema
    3. Knowing When To Stop
  6. Classes & Attributes, Advanced
    1. Auto Generated Classes
    2. Dynamic Attributes
  7. DIMS (CMS)
    1. Overview
    2. DIMS Interfaces
    3. DIMS Modules
    4. Publishing Content
  8. Building Editing Flow
    1. Inbound & Outbound Relations
    2. Using Dims Attributes
  9. Going Live
    1. Connect An External Domain Name