<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
	$pageTitle 		= "SMILA";
	$pageKeywords	= "SMILA, unstructured information management, information logistics, semantic web, framework, platform, eclipse";
	$pageAuthor		= "Igor Novakovic";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>SMILA - SeMantic Information Logistics Architecture</h1>
		<h2>Unleashing the potential of unstructured data sources</h2>
		<p>
			The amount and diversity of information is growing exponentially, mainly in the area of unstructured data, <br>
			like emails, text files, blogs, images etc. Poor data accessibility, user rights integration and the lack of <br>
			semantic meta data are constraining factors for building next generation enterprise search and other document <br>
			centric applications. Missing standards result in proprietary solutions with huge short and long term cost.
		</p>
		<p>
			<b>SMILA</b> is an extensible framework for building search solutions to access unstructured information in <br>
			the enterprise. Besides providing essential infrastructure components and services, <b>SMILA</b> also delivers <br>
			ready-to-use add-on components, like connectors to most relevant data sources. Using the framework as their <br>
			basis will enable developers to concentrate on the creation of higher value solutions, like semantic driven <br>
			applications etc.
		</p>
		<p>
			<img src="images/SMILA_Architecture_Overview.png" alt="SMILA Architecture Overview" align="middle">	  
		</p>
		<div class="homeitem3col">
			<h3>News</h3>
			<h4>Meet us at <a href="http://www.eclipsecon.org/summiteurope2008/" target="_blank">ESE 2008</a>!</h4>
				Besides having a <a href="http://www.eclipsecon.org/summiteurope2008/sessions?id=41" target="_blank">short talk</a>
				there, almost our whole project team will be attending the summit too. We look forward to answering questions
				and exchanging ideas with the community.
			<p>
			</p> 
		</div>
	</div>
	  
	<div id="rightcolumn">
    	<div class="sideitem">
       		<h6>Incubation</h6><p>
       		<div align="center">
         		<a href="/projects/what-is-incubation.php">
           		<img align="center" src="/images/egg-incubation.png" border="0"/></a>
       		</div>
     	</div>
	  	<div class="sideitem">
			<h6>Links</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/SMILA" target="_blank">Project Wiki</a></li>				
				<li><a href="http://www.eclipse.org/proposals/eilf/SMILA_Creation_Review.pdf" target="_blank">Creation Review</a></li>
				<li><a href="http://www.eclipse.org/proposals/eilf" target="_blank">Project proposal</a></li>
			</ul>
		</div>
		<div class="sideitem">
			<h6>Meet us</h6>
			<div align="center">
 				<a href="http://www.eclipsesummit.org/">
 					<img border="0" src="http://www.eclipsesummit.org/summiteurope2008/image/friends/125x72.gif" 
 					height="72" width="125" alt="Eclipse Summit Europe 2008"/>
 				</a>
 			</div>			
		</div>	
	</div>	

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
