Difference between revisions of "Template:Edge"

From AtlasWiki
Jump to: navigation, search
(Refactored to use a separate template for replacing asterisks, now correctly supports 1..* as a possible multiplicity)
(Added properties to allow auto-discovery of edges by node kind pages.)
Line 28: Line 28:
 
In addition, the following properties will be created:
 
In addition, the following properties will be created:
  
 +
edge from [predecessor]::[successor],[multiplicity],[description of this edge]
  
 +
edge to [successor]::[predecessor],[multiplicity],[description of this edge]
 +
 +
 +
For the above example, the properies will be:
 +
 +
edge from Foo::Bar,*,Connects a Foo to a Bar or a Baz
 +
 +
edge to Bar::Foo,1,Connects a Foo to a Bar or a Baz
 +
 +
edge from Foo::Baz,*,Connects a Foo to a Bar or a Baz
 +
 +
edge to Baz::Foo,0..1,Connects a Foo to a Bar or a Baz
  
 
</noinclude><noinclude><!--
 
</noinclude><noinclude><!--
Line 44: Line 57:
 
|-  
 
|-  
 
|{{#arraymap:{{{connects|Node Kind,Node Kind,1,*;Node Kind,Node Kind,*,1}}}| ; | PredSuccMult | [[{{#explode:PredSuccMult|,|0}}]] {{!}}{{!}} {{ReplaceAsterisks|{{#explode:PredSuccMult|,|2}}}} &#10142; {{ReplaceAsterisks|{{#explode:PredSuccMult|,|3}}}} {{!}}{{!}} [[{{#explode:PredSuccMult|,|1}}]] | \n{{!}}-\n{{!}}}}
 
|{{#arraymap:{{{connects|Node Kind,Node Kind,1,*;Node Kind,Node Kind,*,1}}}| ; | PredSuccMult | [[{{#explode:PredSuccMult|,|0}}]] {{!}}{{!}} {{ReplaceAsterisks|{{#explode:PredSuccMult|,|2}}}} &#10142; {{ReplaceAsterisks|{{#explode:PredSuccMult|,|3}}}} {{!}}{{!}} [[{{#explode:PredSuccMult|,|1}}]] | \n{{!}}-\n{{!}}}}
|}
+
|}<noinclude><!--
 +
 
 +
 
  
<noinclude><!--
 
 
Property-only additions:
 
Property-only additions:
  
Knowing only the edge type, we want to be able to discover all connection types, with both
+
Knowing only the origin node, we want to be able to discover this edge, the destination node, the multiplicity from the origin node, and the short description of this edge.
--></noinclude>
+
 
 +
--></noinclude>{{#arraymap:{{{connects|}}}| ; | PredSuccMult | [[edge from {{#explode:PredSuccMult|,|0}}::{{#explode:PredSuccMult|,|1}},{{#explode:PredSuccMult|,|3}},{{{description|}}}| ]] | }}<noinclude><!--
 +
 
 +
 
 +
 
 +
Knowing only the destination node, we want to be able to discover this edge, the predecessor node, the multiplicity of incoming edges of this type, and the short description of this edge.
 +
 
 +
--></noinclude>{{#arraymap:{{{connects|}}}| ; | PredSuccMult | [[edge to {{#explode:PredSuccMult|,|1}}::{{#explode:PredSuccMult|,|0}},{{#explode:PredSuccMult|,|2}},{{{description|}}}| ]] | }}

Revision as of 17:35, 24 March 2014


This template, for use on edge kind pages, takes in a short description of this edge, and a list of the kinds of connections this edge can form (the predecessor node kind, successor node kind, and multiplicities at each end), and stores that information in properties so it can be retrieved by knowing either the edge kind, the predecessor kind, or the successor kind, using a single query.

It also produces a table summarizing this information.

For example, this is the template call that would be used on a page "Edge" to indicate that "Edge" is an edge kind, that connects either a "Foo" node kind to a "Bar" node kind, or to a "Baz" node kind, with each "Bar" node being associated with exactly one "Foo" node, and each "Baz" node optionally being associated with exactly one "Foo" node:

{{Edge | description = Connects a Foo to a Bar or a Baz | connects = Foo,Bar,1,*;Foo,Baz,0..1,* }}

The visible output of this will be a metaclass table describing the edge, plus a table summarizing the connections:

Metaclass Edge
Description Connects a Foo to a Bar or a Baz
Predecessor Multiplicity Successor
Foo 1 ➞ ✱ Bar
Foo 0..1 ➞ ✱ Baz

In addition, the following properties will be created:

edge from [predecessor]::[successor],[multiplicity],[description of this edge]

edge to [successor]::[predecessor],[multiplicity],[description of this edge]


For the above example, the properies will be:

edge from Foo::Bar,*,Connects a Foo to a Bar or a Baz

edge to Bar::Foo,1,Connects a Foo to a Bar or a Baz

edge from Foo::Baz,*,Connects a Foo to a Bar or a Baz

edge to Baz::Foo,0..1,Connects a Foo to a Bar or a Baz


Metaclass Edge
Description {{{description}}}
Predecessor Multiplicity Successor
Node Kind 1 ➞ ✱ Node Kind
Node Kind ✱ ➞ 1 Node Kind