Product Information Graph

Product Information Graph

Properties

Element Typeuml:Model

▣  Metamodel

The metamodel is a 'platform independent model' in OMG terms and defines both the classes (top) and their instances (bottom) for the Product Information Graph (PIG):

  • pig:EntityClass and pig:Entity are used for model elements, such as a system component or a requirement.
  • pig:RelationshipClass and pig:Relationship are used for relations between entities, such as a 'system component satisfies a requirement'. A relationship class may define the classes of entities or relationships, whose instances are eligible as subject or object in a relationship.
  • pig:OrganizerClass and pig:Organizer are used for diagrams, chapters, folders or similar with links to any pig:ModelElement, which is an entity or relationship. An organizer class may define the classes of entities or relationships, whose instances are eligible to be linked (i.e. organized).
  • Every pig:OrganizerClass, pig:EntityClass and pig:RelationshipClass can define an individual set of pig:PropertyClasses, each of which specifies a data type. For example, a requirement might have three property classes, such as a „Title“ with data type „String of max. length 96“, a „Description“ with data type „String“ without restriction and a „Priority“ with data type „String with a single choice of ['(1) high', '(2) medium', '(3) low']“.
  • A data type may be any of those known from XML. As described above, some parameters may restrict the value range, such as minimum and/or maximum value of a number, the number of decimals of a real number, a string length or a set of enumerated values.
  • pig:Organizer, pig:Entity or pig:Relationship is an instance of a pig:OrganizerClass, pig:EntityClass or pig:RelationshipClass respectively. Each instance usually has a set of pig:Property corresponding with the pig:PropertyClasses of its class.

Note:

  • The prefixes 'pig*', 'xs*' and 'dcterms*' designate namespaces. In other technical environments such as RDF, XML and JSON, a namespace would be separated with ':' more appropriately, which may lead to confusion in UML. The separator '*' may be replaced during transformation.
  • As usual, the classes with white background and italic name are abstract.

Metamodel.png

Properties

Element TypeModel Diagram
NotationUML Class Diagram

Statements

▣  Metamodelshows○  pig:value
☆  pig:ConfigurationItem
☆  pig:Organizer
○  xs:fractionDigits
○  dcterms:title
☆  pig:Class
○  xs:minInclusive
○  sh:datatype
☆  pig:PropertyClass
☆  pig:ModelElementClass
○  pig:icon
○  dcterms:creator
☆  pig:ElementClass
○  sh:maxCount
☆  pig:ModelElement
○  xs:maxInclusive
○  dcterms:modified
☆  pig:Relationship
☆  pig:EntityClass
○  dcterms:description
☆  pig:RelationshipClass
○  sh:minCount
☆  pig:Element
○  xs:restriction
☆  pig:OrganizerClass
☆  pig:Entity
☆  pig:Property
○  xs:maxLength
○  pig:id
○  pig:revision
○  sh:defaultValue

☆  pig:ConfigurationItem

All specializations are identifiable and under revision control.

Details:

  • The class is abstract.
  • All attributes are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ConfigurationItemhas part○  pig:id
○  pig:revision
○  dcterms:modified
○  dcterms:creator
☆  pig:Element
☆  pig:Class
specializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:ConfigurationItem

○  pig:id

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  pig:id
▣  Metamodel
shows○  pig:id

○  pig:revision

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  pig:revision
▣  Metamodel
shows○  pig:revision

○  dcterms:modified

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  dcterms:modified
▣  Metamodel
shows○  dcterms:modified

○  dcterms:creator

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  dcterms:creator
▣  Metamodel
shows○  dcterms:creator

☆  pig:Class

A superclass of all data types and all classes for organizers, entities, relationships as well as properties.

Details:

  • dcterms:title is the name of the class, most often an ontology term for entity classes resp. relationship classes.
  • dcterms:description is the definition of the ontology term
  • The class is abstract.
  • All attributes are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:Classhas part○  dcterms:title
○  dcterms:description
☆  pig:PropertyClass
☆  pig:ElementClass
specializes☆  pig:Class
☆  pig:Classspecializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:Class

○  dcterms:title

Properties

Element Typeuml:Property

Statements

☆  pig:Class
has part○  dcterms:title
▣  Metamodel
shows○  dcterms:title

○  dcterms:description

Properties

Element Typeuml:Property

Statements

☆  pig:Class
has part○  dcterms:description
▣  Metamodel
shows○  dcterms:description

☆  pig:ElementClass

A superclass of pig:EntityClass (type of graph node), pig:RelationshipClass (type of graph edge) and pig:OrganizerClass (type of diagrams, folders etc.). Any of those classes may be selected by a pig:OrganizerClass to restrict the type of pig:Elements. Thus, a folder class may be defined allowing its instances to contain activity diagrams and activities, but not any other.

Details:

  • The class is abstract.
  • All attributes and associations are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ElementClasspig:eleigiblePropertyClass☆  pig:PropertyClass
☆  pig:ModelElementClass
☆  pig:OrganizerClass
specializes☆  pig:ElementClass
☆  pig:ElementClassspecializes☆  pig:Class
▣  Metamodel
shows☆  pig:ElementClass

☆  pig:ModelElementClass

A superclass of pig:EntityClass (type of graph node) and pig:RelationshipClass (type of graph edge).

Details:

  • The class is abstract.
  • All attributes and associations are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ModelElementClasshas part○  pig:icon
☆  pig:RelationshipClass
pig:eligibleSubjectClass☆  pig:ModelElementClass
☆  pig:RelationshipClass
pig:eligibleObjectClass☆  pig:ModelElementClass
☆  pig:OrganizerClass
pig:eligibleModelElementClass☆  pig:ModelElementClass
☆  pig:RelationshipClass
☆  pig:EntityClass
specializes☆  pig:ModelElementClass
☆  pig:ModelElementClassspecializes☆  pig:ElementClass
▣  Metamodel
shows☆  pig:ModelElementClass

○  pig:icon

Properties

Element Typeuml:Property

Statements

☆  pig:ModelElementClass
has part○  pig:icon
▣  Metamodel
shows○  pig:icon

☆  pig:EntityClass

pig:EntityClass is used for types of model elements, such as a system component or a requirement.

Details:

  • An entity should have a title (name) and may have a description (definition).
  • An entity class lists one to many classes of properties its instances may have. (No propertyClass at all is formally allowed to be consistent with other elements, but an entitiy without property has no reason to exist.)
  • The definitions of the entity class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Entity
pig:hasClass☆  pig:EntityClass
☆  pig:EntityClassspecializes☆  pig:ModelElementClass
▣  Metamodel
shows☆  pig:EntityClass

☆  pig:PropertyClass

Every pig:EntityClass, pig:RelationshipClass and pig:OrganizerClass can have an individual set of pig:PropertyClasses, each of which is uniquely defined by a data type. For example, a requirement might have three pig:PropertyClasses, such as a „Title“ with data type „String of max. length 96“, a „Description“ with data type „String of max. length 8192“ and a „Priority“ with data type „String with a single choice of ['(1) high', '(2) medium', '(3) low']“.

Details:

  • A property class must have a title named dcterms:title and may have a description named dcterms:description.
  • A property class may define a minimum and maximum count of values.
  • A property class may define default value(s) which must of course satisfy its own constraints and those of its data type.
  • A property class may be composed of multiple property classes to form a structured data type (xs:complexType). The structure must be a tree, i.e without cyclic dependency.

Properties

Element TypeClass

Statements

☆  pig:PropertyClasshas part○  sh:datatype
○  sh:minCount
○  sh:maxCount
○  xs:maxLength
○  xs:minInclusive
○  xs:maxInclusive
○  xs:fractionDigits
○  xs:restriction
○  sh:defaultValue
☆  pig:Property
pig:hasClass☆  pig:PropertyClass
☆  pig:PropertyClasspig:hasChild☆  pig:PropertyClass
☆  pig:ElementClass
pig:eleigiblePropertyClass☆  pig:PropertyClass
☆  pig:PropertyClassspecializes☆  pig:Class
▣  Metamodel
shows☆  pig:PropertyClass

○  sh:datatype

One of the xs: data types.
tbd: Use 'xs:type' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:datatype
▣  Metamodel
shows○  sh:datatype

○  sh:minCount

tbd: Use 'xs:minOccurs' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:minCount
▣  Metamodel
shows○  sh:minCount

○  sh:maxCount

tbd: Use 'xs:maxOccurs' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:maxCount
▣  Metamodel
shows○  sh:maxCount

○  xs:maxLength

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:maxLength
▣  Metamodel
shows○  xs:maxLength

○  xs:minInclusive

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:minInclusive
▣  Metamodel
shows○  xs:minInclusive

○  xs:maxInclusive

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:maxInclusive
▣  Metamodel
shows○  xs:maxInclusive

○  xs:fractionDigits

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:fractionDigits
▣  Metamodel
shows○  xs:fractionDigits

○  xs:restriction

tbd: Use 'sh:in' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:restriction
▣  Metamodel
shows○  xs:restriction

○  sh:defaultValue

Optional default value(s) in case a modelElement's property does not have an individual value. It is a list of multiple values, if maxCount is undefined or >1, or a single value otherwise.

Here, the attribute is called 'defaultValue' for clarity and may just be called 'values' in an implementation, as all restrictions and operations of a property's values apply.

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:defaultValue
▣  Metamodel
shows○  sh:defaultValue

☆  pig:OrganizerClass

pig:OrganizerClass is used for types of diagrams, chapters, folders and similar with links to any pig:Element, which is an entity, relationship or organizer.

Details:

  • An organizer class must have a title (name) and may have a description (definition).
  • An organizer class lists one to many classes of properties its instances may have.
  • An organizer class may define the classes of entities, relationships or organizers, whose instances are eligible to be linked (i.e. organized). If none are defined, all entities, relationships and organizers are eligible.
  • The definitions of the organizer class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:OrganizerClasspig:eligibleModelElementClass☆  pig:ModelElementClass
☆  pig:Organizer
pig:hasClass☆  pig:OrganizerClass
☆  pig:OrganizerClassspecializes☆  pig:ElementClass
▣  Metamodel
shows☆  pig:OrganizerClass

☆  pig:RelationshipClass

pig:RelationshipClass is used for types of relations between two entities, such as a 'system component satisfies a requirement'. All relationships are bilateral and directed. This allows for assertions according to propositional logic. They can be easily mapped to many technologies such as RDF or ReqIF.

Details:

  • A relationship class must have a title (name) and may have a description (definition).
  • A relationship class lists zero to many classes of properties its instances may have.
  • A relationship class may define entitiy classes or relationship classes, whose instances are eligible as subject or object in a relationship. If none are defined, all entities and relationships are eligible.
  • The definitions of the relationship class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:RelationshipClasspig:eligibleSubjectClass☆  pig:ModelElementClass
☆  pig:RelationshipClasspig:eligibleObjectClass☆  pig:ModelElementClass
☆  pig:Relationship
pig:hasClass☆  pig:RelationshipClass
☆  pig:RelationshipClassspecializes☆  pig:ModelElementClass
▣  Metamodel
shows☆  pig:RelationshipClass

☆  pig:Element

A superclass of pig:ModelElement and pig:Organizer. Thus, an instance of pig:Organizer may be related with pig:hasElement to any instance of pig:Entity, pig:Relationship or pig:Organizer, as long as the related element's class is among the pig:OrganizerClass' eligible element classes.

Details:

  • The class is abstract.

Properties

Element TypeClass

Statements

☆  pig:Elementpig:hasProperty☆  pig:Property
☆  pig:ModelElement
☆  pig:Organizer
specializes☆  pig:Element
☆  pig:Elementspecializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:Element

☆  pig:ModelElement

A superclass of pig:Entity (graph node) and pig:Relationship (reified graph edge). Thus, an instance of pig:Relationship may be related to any pig:Entity or pig:Relationship with pig:hasSubject and pig:hasObject.

Details:

  • The class is abstract.

Properties

Element TypeClass

Statements

☆  pig:Relationship
pig:hasSubject☆  pig:ModelElement
☆  pig:Relationship
pig:hasObject☆  pig:ModelElement
☆  pig:Organizer
pig:hasModelElement☆  pig:ModelElement
☆  pig:Relationship
☆  pig:Entity
specializes☆  pig:ModelElement
☆  pig:ModelElementspecializes☆  pig:Element
▣  Metamodel
shows☆  pig:ModelElement

☆  pig:Property

Each property belongs to a single entity or relationship, wheras

  • an entity may have 1 to many properties and
  • a relationship may have 0 to many properties.

Details:

  • A property must have one to many values according to the constraints of its property class and data type.
  • A property without value is omitted as a whole, as there is no need of a place-holder.
  • A property may be composed of multiple properties to form a structured data set according to its property class.

Properties

Element TypeClass

Statements

☆  pig:Propertyhas part○  pig:value
☆  pig:Propertypig:hasClass☆  pig:PropertyClass
☆  pig:Propertypig:hasChild☆  pig:Property
☆  pig:Element
pig:hasProperty☆  pig:Property
▣  Metamodel
shows☆  pig:Property

○  pig:value

Properties

Element Typeuml:Property

Statements

☆  pig:Property
has part○  pig:value
▣  Metamodel
shows○  pig:value

☆  pig:Organizer

pig:Organizer is used for diagrams, chapters, folders and similar with links to any pig:Element, which is an entity, relationship or organizer. An organizer class may define the classes of entities, relationships or organizers, whose instances are eligible to be linked (i.e. organized).

Details:

  • An organizer must have at least one link to an entity, relationship or organizer with a class defined in its pig:OrganizerClass. If none is defined, all entities, relationships and organizers are eligible.
  • A organizer may have zero to many properties as defined in its class.
  • The definitions of the organizer class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Organizerpig:hasModelElement☆  pig:ModelElement
☆  pig:Organizerpig:hasClass☆  pig:OrganizerClass
☆  pig:Organizerpig:hasChild☆  pig:Organizer
☆  pig:Organizerspecializes☆  pig:Element
▣  Metamodel
shows☆  pig:Organizer

☆  pig:Entity

pig:Entity is used for model elements, such as a system component or a requirement.

Details:

  • An entity shpuld have at least one property as properties are the only payload an entity can carry. (No property at all is formally allowed to be consistent with other elements, but an entitiy without property has no reason to exist.)
  • The entity's class lists the classes of properties it may have.
  • The definitions of the entity class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Entitypig:hasClass☆  pig:EntityClass
☆  pig:Entityspecializes☆  pig:ModelElement
▣  Metamodel
shows☆  pig:Entity

☆  pig:Relationship

pig:Relationship is used for relations between entities, such as a 'system component satisfies a requirement'. All relationships are bilateral and directed. This allows for assertions according to propositional logic. They can be easily mapped to many technologies such as RDF or ReqIF.

Details:

  • A pig:Relationship is a reified graph edge and must have exactly one subject and object entity each. The subject must be an entity or relationship with a class defined by an eligible subject class of its pig:RelationshipClass. The same applies for the object.
  • A relationship may have zero to many properties as defined in its class.
  • The definitions of the relationship class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Relationshippig:hasClass☆  pig:RelationshipClass
☆  pig:Relationshippig:hasSubject☆  pig:ModelElement
☆  pig:Relationshippig:hasObject☆  pig:ModelElement
☆  pig:Relationshipspecializes☆  pig:ModelElement
▣  Metamodel
shows☆  pig:Relationship

☆  pig:HierarchyRoot

pig:HierarchyRoot anchors hierarchies (trees) whose leaves point to a pig:Entity each. Thus, hierarchies with their items organize entities for a given target group or purpose, such as a bill of material (BoM) or a document outline. A given entity may be referenced by none, one or multiple items in one or more hierarchies.

Properties

Element TypeClass

Model Elements (Glossary)

Properties

Element TypeModel Elements (Glossary)

○  dcterms:creator

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  dcterms:creator
▣  Metamodel
shows○  dcterms:creator

○  dcterms:description

Properties

Element Typeuml:Property

Statements

☆  pig:Class
has part○  dcterms:description
▣  Metamodel
shows○  dcterms:description

○  dcterms:modified

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  dcterms:modified
▣  Metamodel
shows○  dcterms:modified

○  dcterms:title

Properties

Element Typeuml:Property

Statements

☆  pig:Class
has part○  dcterms:title
▣  Metamodel
shows○  dcterms:title

☆  pig:Class

A superclass of all data types and all classes for organizers, entities, relationships as well as properties.

Details:

  • dcterms:title is the name of the class, most often an ontology term for entity classes resp. relationship classes.
  • dcterms:description is the definition of the ontology term
  • The class is abstract.
  • All attributes are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:Classhas part○  dcterms:title
○  dcterms:description
☆  pig:PropertyClass
☆  pig:ElementClass
specializes☆  pig:Class
☆  pig:Classspecializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:Class

☆  pig:ConfigurationItem

All specializations are identifiable and under revision control.

Details:

  • The class is abstract.
  • All attributes are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ConfigurationItemhas part○  pig:id
○  pig:revision
○  dcterms:modified
○  dcterms:creator
☆  pig:Element
☆  pig:Class
specializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:ConfigurationItem

☆  pig:Element

A superclass of pig:ModelElement and pig:Organizer. Thus, an instance of pig:Organizer may be related with pig:hasElement to any instance of pig:Entity, pig:Relationship or pig:Organizer, as long as the related element's class is among the pig:OrganizerClass' eligible element classes.

Details:

  • The class is abstract.

Properties

Element TypeClass

Statements

☆  pig:Elementpig:hasProperty☆  pig:Property
☆  pig:ModelElement
☆  pig:Organizer
specializes☆  pig:Element
☆  pig:Elementspecializes☆  pig:ConfigurationItem
▣  Metamodel
shows☆  pig:Element

☆  pig:ElementClass

A superclass of pig:EntityClass (type of graph node), pig:RelationshipClass (type of graph edge) and pig:OrganizerClass (type of diagrams, folders etc.). Any of those classes may be selected by a pig:OrganizerClass to restrict the type of pig:Elements. Thus, a folder class may be defined allowing its instances to contain activity diagrams and activities, but not any other.

Details:

  • The class is abstract.
  • All attributes and associations are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ElementClasspig:eleigiblePropertyClass☆  pig:PropertyClass
☆  pig:ModelElementClass
☆  pig:OrganizerClass
specializes☆  pig:ElementClass
☆  pig:ElementClassspecializes☆  pig:Class
▣  Metamodel
shows☆  pig:ElementClass

☆  pig:Entity

pig:Entity is used for model elements, such as a system component or a requirement.

Details:

  • An entity shpuld have at least one property as properties are the only payload an entity can carry. (No property at all is formally allowed to be consistent with other elements, but an entitiy without property has no reason to exist.)
  • The entity's class lists the classes of properties it may have.
  • The definitions of the entity class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Entitypig:hasClass☆  pig:EntityClass
☆  pig:Entityspecializes☆  pig:ModelElement
▣  Metamodel
shows☆  pig:Entity

☆  pig:EntityClass

pig:EntityClass is used for types of model elements, such as a system component or a requirement.

Details:

  • An entity should have a title (name) and may have a description (definition).
  • An entity class lists one to many classes of properties its instances may have. (No propertyClass at all is formally allowed to be consistent with other elements, but an entitiy without property has no reason to exist.)
  • The definitions of the entity class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Entity
pig:hasClass☆  pig:EntityClass
☆  pig:EntityClassspecializes☆  pig:ModelElementClass
▣  Metamodel
shows☆  pig:EntityClass

○  pig:icon

Properties

Element Typeuml:Property

Statements

☆  pig:ModelElementClass
has part○  pig:icon
▣  Metamodel
shows○  pig:icon

○  pig:id

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  pig:id
▣  Metamodel
shows○  pig:id

☆  pig:ModelElement

A superclass of pig:Entity (graph node) and pig:Relationship (reified graph edge). Thus, an instance of pig:Relationship may be related to any pig:Entity or pig:Relationship with pig:hasSubject and pig:hasObject.

Details:

  • The class is abstract.

Properties

Element TypeClass

Statements

☆  pig:Relationship
pig:hasSubject☆  pig:ModelElement
☆  pig:Relationship
pig:hasObject☆  pig:ModelElement
☆  pig:Organizer
pig:hasModelElement☆  pig:ModelElement
☆  pig:Relationship
☆  pig:Entity
specializes☆  pig:ModelElement
☆  pig:ModelElementspecializes☆  pig:Element
▣  Metamodel
shows☆  pig:ModelElement

☆  pig:ModelElementClass

A superclass of pig:EntityClass (type of graph node) and pig:RelationshipClass (type of graph edge).

Details:

  • The class is abstract.
  • All attributes and associations are inherited by its subclasses.

Properties

Element TypeClass

Statements

☆  pig:ModelElementClasshas part○  pig:icon
☆  pig:RelationshipClass
pig:eligibleSubjectClass☆  pig:ModelElementClass
☆  pig:RelationshipClass
pig:eligibleObjectClass☆  pig:ModelElementClass
☆  pig:OrganizerClass
pig:eligibleModelElementClass☆  pig:ModelElementClass
☆  pig:RelationshipClass
☆  pig:EntityClass
specializes☆  pig:ModelElementClass
☆  pig:ModelElementClassspecializes☆  pig:ElementClass
▣  Metamodel
shows☆  pig:ModelElementClass

☆  pig:Organizer

pig:Organizer is used for diagrams, chapters, folders and similar with links to any pig:Element, which is an entity, relationship or organizer. An organizer class may define the classes of entities, relationships or organizers, whose instances are eligible to be linked (i.e. organized).

Details:

  • An organizer must have at least one link to an entity, relationship or organizer with a class defined in its pig:OrganizerClass. If none is defined, all entities, relationships and organizers are eligible.
  • A organizer may have zero to many properties as defined in its class.
  • The definitions of the organizer class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Organizerpig:hasModelElement☆  pig:ModelElement
☆  pig:Organizerpig:hasClass☆  pig:OrganizerClass
☆  pig:Organizerpig:hasChild☆  pig:Organizer
☆  pig:Organizerspecializes☆  pig:Element
▣  Metamodel
shows☆  pig:Organizer

☆  pig:OrganizerClass

pig:OrganizerClass is used for types of diagrams, chapters, folders and similar with links to any pig:Element, which is an entity, relationship or organizer.

Details:

  • An organizer class must have a title (name) and may have a description (definition).
  • An organizer class lists one to many classes of properties its instances may have.
  • An organizer class may define the classes of entities, relationships or organizers, whose instances are eligible to be linked (i.e. organized). If none are defined, all entities, relationships and organizers are eligible.
  • The definitions of the organizer class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:OrganizerClasspig:eligibleModelElementClass☆  pig:ModelElementClass
☆  pig:Organizer
pig:hasClass☆  pig:OrganizerClass
☆  pig:OrganizerClassspecializes☆  pig:ElementClass
▣  Metamodel
shows☆  pig:OrganizerClass

☆  pig:Property

Each property belongs to a single entity or relationship, wheras

  • an entity may have 1 to many properties and
  • a relationship may have 0 to many properties.

Details:

  • A property must have one to many values according to the constraints of its property class and data type.
  • A property without value is omitted as a whole, as there is no need of a place-holder.
  • A property may be composed of multiple properties to form a structured data set according to its property class.

Properties

Element TypeClass

Statements

☆  pig:Propertyhas part○  pig:value
☆  pig:Propertypig:hasClass☆  pig:PropertyClass
☆  pig:Propertypig:hasChild☆  pig:Property
☆  pig:Element
pig:hasProperty☆  pig:Property
▣  Metamodel
shows☆  pig:Property

☆  pig:PropertyClass

Every pig:EntityClass, pig:RelationshipClass and pig:OrganizerClass can have an individual set of pig:PropertyClasses, each of which is uniquely defined by a data type. For example, a requirement might have three pig:PropertyClasses, such as a „Title“ with data type „String of max. length 96“, a „Description“ with data type „String of max. length 8192“ and a „Priority“ with data type „String with a single choice of ['(1) high', '(2) medium', '(3) low']“.

Details:

  • A property class must have a title named dcterms:title and may have a description named dcterms:description.
  • A property class may define a minimum and maximum count of values.
  • A property class may define default value(s) which must of course satisfy its own constraints and those of its data type.
  • A property class may be composed of multiple property classes to form a structured data type (xs:complexType). The structure must be a tree, i.e without cyclic dependency.

Properties

Element TypeClass

Statements

☆  pig:PropertyClasshas part○  sh:datatype
○  sh:minCount
○  sh:maxCount
○  xs:maxLength
○  xs:minInclusive
○  xs:maxInclusive
○  xs:fractionDigits
○  xs:restriction
○  sh:defaultValue
☆  pig:Property
pig:hasClass☆  pig:PropertyClass
☆  pig:PropertyClasspig:hasChild☆  pig:PropertyClass
☆  pig:ElementClass
pig:eleigiblePropertyClass☆  pig:PropertyClass
☆  pig:PropertyClassspecializes☆  pig:Class
▣  Metamodel
shows☆  pig:PropertyClass

☆  pig:Relationship

pig:Relationship is used for relations between entities, such as a 'system component satisfies a requirement'. All relationships are bilateral and directed. This allows for assertions according to propositional logic. They can be easily mapped to many technologies such as RDF or ReqIF.

Details:

  • A pig:Relationship is a reified graph edge and must have exactly one subject and object entity each. The subject must be an entity or relationship with a class defined by an eligible subject class of its pig:RelationshipClass. The same applies for the object.
  • A relationship may have zero to many properties as defined in its class.
  • The definitions of the relationship class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:Relationshippig:hasClass☆  pig:RelationshipClass
☆  pig:Relationshippig:hasSubject☆  pig:ModelElement
☆  pig:Relationshippig:hasObject☆  pig:ModelElement
☆  pig:Relationshipspecializes☆  pig:ModelElement
▣  Metamodel
shows☆  pig:Relationship

☆  pig:RelationshipClass

pig:RelationshipClass is used for types of relations between two entities, such as a 'system component satisfies a requirement'. All relationships are bilateral and directed. This allows for assertions according to propositional logic. They can be easily mapped to many technologies such as RDF or ReqIF.

Details:

  • A relationship class must have a title (name) and may have a description (definition).
  • A relationship class lists zero to many classes of properties its instances may have.
  • A relationship class may define entitiy classes or relationship classes, whose instances are eligible as subject or object in a relationship. If none are defined, all entities and relationships are eligible.
  • The definitions of the relationship class together with those of the property classes may be used to build user dialogs and to check its instances whether all properties have a correct type and value range as well as whether all required ones are present.

Properties

Element TypeClass

Statements

☆  pig:RelationshipClasspig:eligibleSubjectClass☆  pig:ModelElementClass
☆  pig:RelationshipClasspig:eligibleObjectClass☆  pig:ModelElementClass
☆  pig:Relationship
pig:hasClass☆  pig:RelationshipClass
☆  pig:RelationshipClassspecializes☆  pig:ModelElementClass
▣  Metamodel
shows☆  pig:RelationshipClass

○  pig:revision

Properties

Element Typeuml:Property

Statements

☆  pig:ConfigurationItem
has part○  pig:revision
▣  Metamodel
shows○  pig:revision

○  pig:value

Properties

Element Typeuml:Property

Statements

☆  pig:Property
has part○  pig:value
▣  Metamodel
shows○  pig:value

○  sh:datatype

One of the xs: data types.
tbd: Use 'xs:type' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:datatype
▣  Metamodel
shows○  sh:datatype

○  sh:defaultValue

Optional default value(s) in case a modelElement's property does not have an individual value. It is a list of multiple values, if maxCount is undefined or >1, or a single value otherwise.

Here, the attribute is called 'defaultValue' for clarity and may just be called 'values' in an implementation, as all restrictions and operations of a property's values apply.

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:defaultValue
▣  Metamodel
shows○  sh:defaultValue

○  sh:maxCount

tbd: Use 'xs:maxOccurs' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:maxCount
▣  Metamodel
shows○  sh:maxCount

○  sh:minCount

tbd: Use 'xs:minOccurs' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  sh:minCount
▣  Metamodel
shows○  sh:minCount

○  xs:fractionDigits

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:fractionDigits
▣  Metamodel
shows○  xs:fractionDigits

○  xs:maxInclusive

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:maxInclusive
▣  Metamodel
shows○  xs:maxInclusive

○  xs:maxLength

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:maxLength
▣  Metamodel
shows○  xs:maxLength

○  xs:minInclusive

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:minInclusive
▣  Metamodel
shows○  xs:minInclusive

○  xs:restriction

tbd: Use 'sh:in' instead?

Properties

Element Typeuml:Property

Statements

☆  pig:PropertyClass
has part○  xs:restriction
▣  Metamodel
shows○  xs:restriction