@startuml
package MetaModel {
  class Context {
    name:Text
    since:Date
    updated:Date
    copyright:Text
    master:URL
  }
Note top of Context
A Context groups some topics like a
Namespace/Package
End note
  class Property {
    name:Text
    label:Text
    type:Page
    index:Number
    sortPos:Number
    primaryKey:Boolean
    mandatory:Boolean
    namespace:Text
    size:Number
    uploadable:Boolean
    defaultValue:Code
    inputType:Text
    allowedValues:Text
    documentation:Text
    values_from:Code
    externalFormatterURI:Text
    showInGrid:Boolean
    isLink:Boolean
    nullable:Boolean
  }
Note top of Property
a Property is a Feature/Attribute of a
Topic
End note
  class SMW_Type {
    type:Text
    documentation:Text
    id:Text
    helppage:URL
    typepage:Page
    javaType:Text
  }
Note top of SMW_Type
an SMW_Type is a data type which
determines the possible values for that
type e.g. a Boolean can hold true/false
values while a Number can hold 3.1459 or
20. A Page can hold the name of a Wiki
page see https://semantic-mediawiki.org/
wiki/Help:List_of_datatypes
End note
  class Topic {
    name:Text
    pluralName:Text
    icon:Page
    iconUrl:Code
    documentation:Text
    wikiDocumentation:Text
    defaultstoremode:Text
    listLimit:Number
    cargo:Boolean
    headerTabs:Boolean
  }
Note top of Topic
A Topic is a Concept/Class/Thing/Entity
End note
  class Action {
    name:Text
    servicetype:Text
    service:URL
    inputtype:Text
    input:Code
    actionpage:Page
    output:Text
    engine:Text
    author:Page
    since:Date
    comment:Text
  }
Note top of Action
An action/function/operation to be
performed
End note
  class TopicLink {
    name:Text
    source:Page
    sourceRole:Text
    sourceMultiple:Boolean
    sourceDocumentation:Text
    target:Page
    targetRole:Text
    targetMultiple:Boolean
    targetDocumentation:Text
    masterDetail:Boolean
  }
Note top of TopicLink
A TopicLink links two Concepts
End note
  class Annotation_URI {
  }
Note top of Annotation_URI
Holds URIs, but has some technical
differences during export compared to
the 'URL' type
End note
  class Boolean {
  }
Note top of Boolean
Holds boolean (true/false) values
End note
  class Code {
  }
Note top of Code
Holds technical, pre-formatted texts
(similar to type Text)
End note
  class Date {
  }
Note top of Date
Holds particular points in time
End note
  class Email {
  }
Note top of Email
Holds e-mail addresses
End note
  class Geographic_coordinate {
  }
Note top of Geographic_coordinate
Holds coordinates describing geographic
locations
End note
  class Number {
  }
Note top of Number
Holds integer and decimal numbers, with
an optional exponent
End note
  class Page {
  }
Note top of Page
Holds names of wiki pages, and displays
them as a link
End note
  class Quantity {
  }
Note top of Quantity
Holds values that describe quantities,
containing both a number and a unit
End note
  class Record {
  }
Note top of Record
Allows saving compound property values
that consist of a short list of values
with fixed type and order
End note
  class Telephone_number {
  }
Note top of Telephone_number
Holds international telephone numbers
based on the
[https://tools.ietf.org/html/rfc3966 RFC
3966 standard]
End note
  class Temperature {
  }
Note top of Temperature
Holds temperature values (similar to
type Quantity)
End note
  class Text {
  }
Note top of Text
Holds text of arbitrary length
End note
  class URL {
  }
Note top of URL
Holds URIs, URNs and URLs
End note
}
Topic "topic 1" -- "properties *" Property
Context "context 1" -- "topics *" Topic
Property "usedByProperties *" -- "smw_type 1" SMW_Type

' BITPlan Corporate identity skin params
' Copyright (c) 2015-2024 BITPlan GmbH
' see http://wiki.bitplan.com/PlantUmlSkinParams#BITPlanCI
' skinparams generated by com.bitplan.restmodelmanager
skinparam note {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam component {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam package {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam usecase {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam activity {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam classAttribute {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam interface {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam class {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
skinparam object {
  BackGroundColor #FFFFFF
  FontSize 12
  ArrowColor #FF8000
  BorderColor #FF8000
  FontColor black
  FontName Technical
}
hide Circle
' end of skinparams '

@enduml
