User:Ck3d/Ontology Proposal
Article TODOs
- complete migration process
- complete templates of all classes
I currently develop the templates based on this ontology on my private server, which is sometimes online.
This ontology proposal provides a guideline how to setup a semantic structure in combination with the MediaWiki extension Semantic MediaWiki. discussion→
Summary
The ontology is based on the current scheme used in the wiki to structure information transfer.
This proposal introduces a possibility to define distinctive domains in order to differentiate and to interpret different features based upon organizational units (e.g. countries).
It also will define members, and tags which are applicable to relations.
Further more it is possible to define combined tags (e.g. highway=path
+ bicycle=designated
≙ Cycleway).
In a first step, the proposal suggests to address only the semantics of pages "Key:..." and "Tag:..." since these pages already present structured information. As a consequence of the semantic information content map feature tables could be automatically generated.
Guidelines
Guidelines of this ontology are:
- KISS in order to provide optimal usability
- seamless migration
- a minimum of changes to actual wiki structures
- the definition of semantic names by intuition
- users shouldn't be confronted with semantics
- templates as simple as possible
- possible to extend the ontology for future requirements
Problems
- SMW has limitations on many-valued properties. This properties can be avoided by defining separate identities (see n-ary relations)
- SMW has problems with equal sign (=) in page titles (e.g. "Tag:highway=trunk"); limitation? or bug?
- StringFunctions can't deal with quotation mark (") in strings
Glossary
OSM basic terms
- node (WGS84 plan position)
- can have many tags
- way (nodes)
- can have many tags
- relation
- can have many tags, many members and many relations
- member
- consists of one role and one node, way or relation; it will be assigned to a relation
- role (string)
- it describes which role a node, way or relation has; it is a free definable English abbreviation/term or nothing or a number or a combination of that; its meaning can be:
- English term, boolean, index, orientation, ...
- tag
- consists of one key and one value; it will be assigned to a node, way or relation, which will be described but it can also describe a other tag; tag description pages actually use this template
- key (string)
- it is a free definable English abbreviation/term; key description pages actually use this template; its meaning can be:
- English term
- value (string)
- it is a free definable English abbreviation/term or a number; its meaning can be:
- English term, boolean, number, index, orientation, speed, meter, height, width, weight, ...
Other terms
- area
- it is not part of OSM protocol; a way has the meaning of area if beginning and ending node is the same node (closed way) in combination of tag
area=yes
, which can be explicit or implicit defined. - domain
- There are cases where tags present too general descriptions of an object's properties. The planned domain, therefore should present a possibility to define additional implications to a tag.
- Actual domains are useful only in country or state.
- The term "domain" intends to show the possibility to extend the concept of planned developments of the ontology proposal for future requirements.
- Necessity of domains is shown in the following examples:
- A domain can be defined in other languages than in English.
Ontology
OSM Element
- Title
Category:Node|Way|Relation|Member|Tag
- Name type string; [1];automatic assignment from Title
- correct name of a OSM Element; MediaWiki doesn't allow page titles with beginning lower case character and underlines in it
OSM Element examples
Title Category: | Name |
---|---|
Node | node |
Way | way |
Template:OSM Element Definition
<includeonly>
;Name
:[[Name::{{lc:{{PAGENAME}}}}]]
[[Category:OSM Element]]
</includeonly>
Tag
Each tag has exactly one definition, which are defined in English. For a language specific translation of a tag the class translation has to be used. According to the tag a wiki redirect has to be manually created or will be automatically created by a wiki bot (e.g. "Tag:Highway=residential" → "Residential road").
- Title
Tag:unique English term Tag:unique non English term (only for tags which refer to a domain)
- Key↗ type string; [1]
- a key individual
- Value↗ type string; [1]
- a value individual
- Applicable to↗ type page → OSM Element; [1]
- a OSM element class
- Implied by↗ type page → Tag|Member; [0..*]
- a list of tag and member individuals which are implied by a tag
- Required by↗ type page → Tag|Member; [0..*]
- a list of tag and member individuals which are required by a tag
- Suggested for↗ type page → Tag|Member; [0..*]
- a list of tag and member individuals which are suggested for a tag
- Group type string; [0..1]
- group of a tag
- Summary type text; [1]
- summary of a tag
- Photo↗ type page → Image; [0..1]
- photo of a tag
- Domain type string; [0..1]
- domain of a tag (e.g. country code UK)
- Language code type enumeration; [1]
- language code of a tag; if no domain is specified en
Tag examples
definition types: | Title Tag: | Key | Value | Applicable to↗ Category: | Language code | Group | Implied by↗ | Suggested for↗ | Summary | Domain |
---|---|---|---|---|---|---|---|---|---|---|
way | Residential road | highway | residential | Way | en | physical | Roads accessing or around residential ... | |||
way | Road of unknown classification | highway | road | Way | en | physical | A road of unknown classification. This... | |||
relation | Boundary (relation) | type | boundary | Relation | en | non physical | for grouping boundaries and marking en... | |||
domain specific way | Class "A" road | highway | trunk | Way | en | UK/Road | ... | UK | ||
domain specific way | Verkehrsberuhigter Bereich | highway | living_street | Way | de | DE/Straße | ... | DE | ||
tag | 2 highway lanes | lanes | 2 | Tag | en | physical |
|
2 physical travel lanes... | ||
unspecified tag | Highway lanes? | lanes | '1-' | Tag | en | physical |
|
Total number of physical travel lanes ... | ||
unspecified tag | Name? | name | '*' | Tag | en | non physical |
|
Name of the taged object |
Template:Tag Definition
<includeonly>
;Key
:[[Key::{{{Key}}}]]
;Value
:[[Value::{{{Value}}}]]
;Applicable to
:[[Applicable to::{{{Applicable to}}}]]
;Implied by
:{{#arraymap:{{{Implied by|}}}|,|x|[[Implied by::x| ]]}}
;Required by
:{{#arraymap:{{{Required by|}}}|,|x|[[Required by::x| ]]}}
;Suggested for
:{{#arraymap:{{{Suggested for|}}}|,|x|[[Suggested for::x| ]]}}
;Group
:{{#if:{{{Group|}}}|[[Group::{{{Group}}}]]|-}}
;Summary
:[[Summary::{{{Summary}}}]]
;Photo
:{{#if:{{{Photo|}}}|[[Photo::{{{Photo}}}]]|-}}
;Domain
:{{#if:{{{Domain|}}}|[[Domain::{{{Domain}}}]]|-}}
;Language code
:[[Language code::{{#if:{{{Language code|}}}|{{#if:{{{Domain|}}}|{{{Language code}}}|en}}|en}}]]
;Translations
:{{#ask: [[Category:Translation]] [[Refers to::{{FULLPAGENAME}}]]}}
;Implies
:{{#ask: [[Implied by::{{FULLPAGENAME}}]]}}
;Requires
:{{#ask: [[Required by::{{FULLPAGENAME}}]]}}
;Suggests
:{{#ask: [[Suggested for::{{FULLPAGENAME}}]]}}
[[Category:Tag]]
</includeonly>
Member
- Developments planned
Each member has exactly one definition, which are defined in English. For a language specific translation of a member the class translation has to be used.
- Title
Member:unique English term Member:unique non English term (only for members which refer to a domain)
- Role type string; [1]
- a role individual
- Applicable to↗ type page → OSM Element; [1]
- a OSM Element class
- Has Tag↗ type page → Tag; [1]
- a tag individual
- Group type string; [0..1]
- group of a member
- Summary type text; [1]
- summary of a member
- Photo↗ type page → Image; [0..1]
- photo of a member
- Domain type string; [0..1]
- domain of a member (e.g. country code UK)
- Language code type enumeration; [1]
- language code of a member; if no domain is specified en
Member examples
definition types: | Title Member: | Role | Applicable to↗ Category: | Has Tag↗ Tag: | Language code | Summary |
---|---|---|---|---|---|---|
term | Border | 'blank' | Way | Boundary (relation) | en | the multiple ways that form the border |
term | Enclave | enclave | Way | Boundary (relation) | en | enclaves of this border |
Template:Member Definition
TBD
Translation
OSM is a multilingual project.
Each tag or member can have a translation into other languages. The translations have to be stored in respective pages. The semantic content of the referred page, then, will be displayed in an info box equivalent to the actual state.
- Title
Language Code:Referred Page
- Name type string; [1]
- translated title of the referred page
- Refers to↗ type page → Tag|Member; [1]; automatic assignment from Title
- referred page that will be translated
- Language Code type enumeration; [1];automatic assignment from Title
- language code of a translation
- Group type string; [0..1]
- translated group of the referred page
- Summary type text; [1]
- translated summary of the referred page
Translation examples
definition types: | Title | Name | Refers to↗ | Group | Language code | Summary |
---|---|---|---|---|---|---|
term | De:Tag:Living street | Spielstraße | Tag:Living street | Straßen | de | ... |
Template:Translation Definition
<includeonly>
;Name
:[[Name::{{{Name}}}]]
;Refers to
:[[Refers to::{{#explode:{{PAGENAME}}|{{#explode:{{PAGENAME}}|:|0}}:|1}}]]
;Language code
:[[Language::{{lc:{{#explode:{{PAGENAME}}|:|0}}}}]]
;Group
:{{#if:{{{Group|}}}|[[Group::{{{Group}}}]]|-}}
;Summary
:[[Summary::{{{Summary}}}]]
[[Category:Translation]]
</includeonly>
Migration process
To keep the templates clean, following MediaWiki namespaces should be defined:
- Tag
- "Language code" (e.g. En, De, Fr)
- Member (in the future)
Templates
MediaWiki has built in functions, these are called Magic words. Used functions are:
Functions used from further extensions: