<!-- This file was created using the HTML documentation generator. -->
<!-- Creation date: Sun Nov 01 10:49:02 GMT 2020-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
      	<title>Metamodel Documentation (platform:/resource/org.eclipse.efbt.cocamo.smcubes.model.input_data/model/column_structured_data.ecore)</title>
    	<script type="text/javascript">
//<![CDATA[				    	
// TOC script based on code taken from http://www.quirksmode.org/dom/toc.html
function makeTOC() {
	
	var toc = document.createElement('div')				
	toc.id = "toc";
	toc.innerHTML = "Table of Contents"				
	document.body.appendChild(toc);
				
	var innertocDiv = createTOC()				
	toc.appendChild(innertocDiv);
}


function createTOC() {
	var y = document.createElement('div');
	y.id = 'innertoc';
	//var a = y.appendChild(document.createElement('span'));
	//a.onclick = showhideTOC;
	//a.id = 'contentheader';
	//a.innerHTML = 'Show Table of Contents';
	var z = y.appendChild(document.createElement('div'));
	//z.onclick = showhideTOC;
	var toBeTOCced = getElementsByTagNames('h1,h2,h3');
	if (toBeTOCced.length < 2) return false;
	var hCount = 0;
	var hhCount = 0;
	var hhhCount = 0;
	for (var i=0;i<toBeTOCced.length;i++) {
	var tmp = document.createElement('a');
	tmp.className = 'page';
	var text;
	var textPre;
	if (toBeTOCced[i].nodeName == 'h2'){
		tmp.className += ' indent';
		textPre = hCount + "."+ ++hhCount + ". "; 
	}
	else if (toBeTOCced[i].nodeName == 'h3'){
		tmp.className += ' extraindent';
		textPre = hCount + "."+ hhCount + "."+ ++hhhCount +". "; 
	}
	else {
		textPre = ++hCount + ". "; 
		hhCount = 0;
		hhhCount = 0;
	}
	text = textPre + toBeTOCced[i].textContent;
	toBeTOCced[i].innerHTML = textPre + toBeTOCced[i].innerHTML;
	
	tmp.innerHTML = text; 
	z.appendChild(tmp);
	var headerId = toBeTOCced[i].id || 'link' + i;
	tmp.href = '#' + headerId;
	toBeTOCced[i].id = headerId;
	}
	return y;
}

function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}
	    	
//]]>				    	
	    	</script>
	    	<link rel="stylesheet" type="text/css" href="https://raw.github.com/necolas/normalize.css/master/normalize.css" /> 
	    	<style>
#toc {
	position: fixed;
	  right: 0;
	  top: 0;
	  background-color:#eee;
	  overflow: scroll;
	  border: 1px dashed;
}

#toc #innertoc { 
	display: none;
	height: 500px;
} /* Hide the full TOC by default */

#toc:hover #innertoc{
	display: block; /* Show it on hover */
}
	td {
	border: 1px solid;
	}
	.page{
	display:table-row;
	}
	.indent {
	text-indent:12pt;
	}
	.extraindent {
	text-indent:14pt;
	}

	    	</style>
	    	<link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body onload="makeTOC();">
<h1 id="columnstructureddata"><a href="#columnstructureddata"><span class="packageName">column_structured_data</span> package</a></h1>

<p>This package describes the storage of  data which can be represented in a column structure,  This includes dat for cubes and smcubes since we can represent cube structures as a set of cubse structure items which can be represesnted as columns</p>
<div class="">EPackage properties:</div>
<div class="keyValue"><span class="label">Namespace Prefix: </span><span class="teletype">column_structured_data</span></div>
<div class="keyValue"><span class="label">Namespace URI: </span><span class="teletype">http://www.eclipse.org/efbt/column_structured_data</span></div>
<h2 id="columnstructureddataCell"><a href="#columnstructureddataCell"><a href="#columnstructureddataCell">Cell</a></a></h2>

<p>Cell data of Rows of Column Structured Entities such as cubes,</p>
<table>
<tr>
	<th colspan="3"><div class="tableHeader">Attributes</div></th>
</tr>
<tr>
	<th><div class="columnHeader">Name</div></th>
	<th><div class="columnHeader">Properties</div></th>
	<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr>	<td><div id="columnstructureddataCell.cellID" class="teletype">cellID</div>
	</td>
	<td><div class="keyValue"><span class="label">T: </span><span class="teletype">EString</span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Identifier</div>
 </td> <td><p>The unique ID of a cell</p>
</td>
		</tr></table>
<a href="#column_structured_data.Cell.attr"></a>
<table>
<tr>
	<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
	<th><div class="columnHeader">Name</div></th>
	<th><div class="columnHeader">Properties</div></th>
	<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr>	<td><div id="columnstructureddataCell.column" class="teletype">column</div>
	</td>
	<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td> 
<td> <p>The variable associated with the cell</p>
</td>
		</tr></table>
<a href="#column_structured_data.Cell.ref"></a>
<h2 id="columnstructureddataColumnStructuredData"><a href="#columnstructureddataColumnStructuredData"><a href="#columnstructureddataColumnStructuredData">ColumnStructuredData</a></a></h2>

<p>Data For Column Structured entities (like cubes or tables)</p>
<table>
<tr>
	<th colspan="3"><div class="tableHeader">Attributes</div></th>
</tr>
<tr>
	<th><div class="columnHeader">Name</div></th>
	<th><div class="columnHeader">Properties</div></th>
	<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr>	<td><div id="columnstructureddataColumnStructuredData.name" class="teletype">name</div>
	</td>
	<td><div class="keyValue"><span class="label">T: </span><span class="teletype">EString</span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Identifier</div>
 </td> <td><p>The unique ID of the data</p>
</td>
		</tr></table>
<a href="#column_structured_data.ColumnStructuredData.attr"></a>
<h2 id="columnstructureddataColumnStructuredDataModule"><a href="#columnstructureddataColumnStructuredDataModule"><a href="#columnstructureddataColumnStructuredDataModule">ColumnStructuredDataModule</a></a></h2>

<p>A Module containing a set of ColumnStructuredData</p>
<h4><b>Supertype:</b><a href="#modulemanagementModule">Module</a></h4><table>
<tr>
	<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
	<th><div class="columnHeader">Name</div></th>
	<th><div class="columnHeader">Properties</div></th>
	<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr>	<td><div id="columnstructureddataColumnStructuredDataModule.cubeData" class="teletype">cubeData</div>
	</td>
	<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#columnstructureddataColumnStructuredData">ColumnStructuredData</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td> 
<td> <p>The set of ColumnStructuredData</p>
</td>
		</tr></table>
<a href="#column_structured_data.ColumnStructuredDataModule.ref"></a>
<h2 id="columnstructureddataRowData"><a href="#columnstructureddataRowData"><a href="#columnstructureddataRowData">RowData</a></a></h2>

<p>Data For Rows of column structures such as cubes</p>
<table>
<tr>
	<th colspan="3"><div class="tableHeader">Attributes</div></th>
</tr>
<tr>
	<th><div class="columnHeader">Name</div></th>
	<th><div class="columnHeader">Properties</div></th>
	<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr>	<td><div id="columnstructureddataRowData.rowID" class="teletype">rowID</div>
	</td>
	<td><div class="keyValue"><span class="label">T: </span><span class="teletype">EString</span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Identifier</div>
 </td> <td><p>The unique ID of the row data</p>
</td>
		</tr></table>
<a href="#column_structured_data.RowData.attr"></a>
</body>
</html>
