<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sones GraphDB &#187; Example</title>
	<atom:link href="http://developers.sones.de/category/sones/documentation/example/feed/" rel="self" type="application/rss+xml" />
	<link>http://developers.sones.de</link>
	<description></description>
	<lastBuildDate>Thu, 20 Oct 2011 15:16:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>new index interfaces and how to integrate custom indices</title>
		<link>http://developers.sones.de/2011/09/08/new-index-interfaces-and-how-to-integrate-custom-indices/</link>
		<comments>http://developers.sones.de/2011/09/08/new-index-interfaces-and-how-to-integrate-custom-indices/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 12:37:07 +0000</pubDate>
		<dc:creator>Martin Junghanns</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=1076</guid>
		<description><![CDATA[In the course of our work at sones GraphDB 2.1 we refactored our index interfaces to make them more suitable for our needs. Furthermore, we wanted to make it easier for the community to implement custom index structures for their special needs. For the latter reason we set up a tutorial and published a sample [...]]]></description>
			<content:encoded><![CDATA[<p>In the course of our work at sones GraphDB 2.1 we refactored our index interfaces to make them more suitable for our needs. Furthermore, we wanted to make it easier for the community to implement custom index structures for their special needs. For the latter reason we set up a tutorial and published a sample implementation on github.</p>
<p><a href="http://developers.sones.de/wp-content/uploads/2011/09/IndexInterfaces_overview.png"><img src="http://developers.sones.de/wp-content/uploads/2011/09/IndexInterfaces_overview-1024x371.png" alt="" title="IndexInterfaces_overview" width="600" class="alignnone size-large wp-image-1079" /></a></p>
<p>The interfaces are explained in our developer wiki, the tutorial can also be found there. The source code regarding the tutorial is located at github.</p>
<p>Source 1: <a href="http://developers.sones.de/wiki/doku.php?id=documentation:plugins:database:indices" title="Index Interfaces at developer wiki" target="_blank">Index Interfaces at developer wiki</a><br />
Source 2: <a href="http://developers.sones.de/wiki/doku.php?id=documentation:plugins:database:indices#implementing_a_custom_index" title="Integration tutorial at developer wiki" target="_blank">Integration tutorial at developer wiki</a><br />
Source 3: <a href="https://github.com/sones/sones-bstindex-tutorial" title="Source code at github" target="_blank">Source code at github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2011/09/08/new-index-interfaces-and-how-to-integrate-custom-indices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>more complex graphs in GraphDB 2.1</title>
		<link>http://developers.sones.de/2011/08/24/more-complex-graphs-in-graphdb-2-1/</link>
		<comments>http://developers.sones.de/2011/08/24/more-complex-graphs-in-graphdb-2-1/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 14:05:43 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[demo]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[WebShell]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=1045</guid>
		<description><![CDATA[Not long ago we showed off the new capabilities of GraphDB 2.1 (to be released at the end of 2011) regarding the visualization of data. Now we extended that capabilities and added another Output Plug-In to the Community Edition. It’s called GraphVis. And you can download it now with our source-code package from our GitHub [...]]]></description>
			<content:encoded><![CDATA[<p>Not long ago we showed off the new capabilities of GraphDB 2.1 (to be released at the end of 2011) regarding the visualization of data. Now we extended that capabilities and added another Output Plug-In to the Community Edition. It’s called GraphVis.</p>
<p>And you can download it now with our source-code package from our <a href="http://github.com/sones/sones" target="_blank">GitHub repository</a>.</p>
<p>The best way to show-off the new functionality is by literally showing it:</p>
<p style="text-align: center;"><iframe width="560" height="345" src="http://www.youtube.com/embed/6WlOIJ8OZT8" frameborder="0" allowfullscreen></iframe></p>
<p>A good start for the documentation of the new visualization options is our <a href="http://developers.sones.de/wiki/doku.php?id=connectors:graphdsrest2" target="_blank">ever growing wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2011/08/24/more-complex-graphs-in-graphdb-2-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>new developer tutorial available: use GraphDB in C#</title>
		<link>http://developers.sones.de/2011/07/05/new-developer-tutorial-available-use-graphdb-in-c/</link>
		<comments>http://developers.sones.de/2011/07/05/new-developer-tutorial-available-use-graphdb-in-c/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 12:01:33 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Connectors]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[GraphQL]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=997</guid>
		<description><![CDATA[There is a new example available for all the developers out there who want to start using GraphDB. This tutorial describes and shows the simplicity of setting up a GraphDB by using the sones GraphDB CommunityEdition. It shows  how to create your own database by using the sones GraphDB C# API and how to use [...]]]></description>
			<content:encoded><![CDATA[<p>There is a new example available for all the developers out there who want to start using GraphDB.</p>
<p>This tutorial describes and shows the simplicity of setting up a GraphDB by using the sones GraphDB <a title="https://github.com/sones/sones" href="https://github.com/sones/sones" rel="nofollow">CommunityEdition</a>. It shows  how to create your own database by using the sones GraphDB C# <acronym title="Application Programming Interface">API</acronym> and how to use GraphDB to create your own graph scheme (in not one but two different approaches).</p>
<ol>
<li>
<div>by using GraphDB API Requests</div>
</li>
<li>
<div>by using GraphQL queries</div>
</li>
</ol>
<p>Beside the tutorial itself there is <a href="https://github.com/sones/sones/tree/master/Applications/TagExample" target="_blank">source code available here</a>.</p>
<p style="text-align: center;"><a href="http://developers.sones.de/wp-content/uploads/2011/07/tagexample_tutorial.png"><img class="size-medium wp-image-999 aligncenter" title="tagexample_tutorial" src="http://developers.sones.de/wp-content/uploads/2011/07/tagexample_tutorial-300x159.png" alt="" width="300" height="159" /></a></p>
<p>If you are using the GraphQL please read our <a title="https://github.com/downloads/sones/sones/GQL_cheatsheet_latest.pdf" href="https://github.com/downloads/sones/sones/GQL_cheatsheet_latest.pdf" rel="nofollow">GraphQL Cheatsheet</a> there you can find the description of all available statements and some additional examples.</p>
<p>The tutorial itself will show you how to:</p>
<ol>
<li>
<div>create user defined types, add structured properties, add unknown/schemeless properties</div>
</li>
<li>
<div>create outgoing and incoming edges on a vertex type</div>
</li>
<li>
<div>create an index on a specified property in 3 different ways</div>
</li>
<li>
<div>set constraints on properties (like “unique” and “mandatory”)</div>
</li>
<li>
<div>set up queries and analyze them</div>
</li>
<li>
<div>use function and aggregates in a query</div>
</li>
</ol>
<p>Source 1: <a title="TagExample C# Tutorial" href="http://developers.sones.de/wiki/doku.php?id=tutorials:tagexample" target="_blank">C# TagExample Tutorial</a><br />
Source 2: <a href="https://github.com/sones/sones/tree/master/Applications/TagExample" target="_blank">C# TagExample Source Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2011/07/05/new-developer-tutorial-available-use-graphdb-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the “Crunchbase use-case” part 5–link­ing nodes and edges</title>
		<link>http://developers.sones.de/2010/10/29/the-crunchbase-use-case-part-5linking-nodes-and-edges/</link>
		<comments>http://developers.sones.de/2010/10/29/the-crunchbase-use-case-part-5linking-nodes-and-edges/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 15:36:24 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[use-case]]></category>
		<category><![CDATA[Crunchbase]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=871</guid>
		<description><![CDATA[In the previous article of this series a short introduction into graph databases was provided. In article 3 of the series an initial scheme of the Crunchbase use case was created. In this article this initial scheme is going to be extended by more complex attributes. The possiblity to alter a scheme whenever necessary is [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous article of this series a short introduction into graph databases was provided. In article 3 of the series an initial scheme of the Crunchbase use case was created. In this article this initial scheme is going to be extended by more complex attributes. The possiblity to alter a scheme whenever necessary is a feature of the sones GraphDB. In traditional relational database management systems this scheme alteration is, when even possible, very slow when dealing with large data sets. As a result the typical relational tables contain “reserved” columns which are later filled with information.</p>
<p>When article 3 and 4 was successfully applied the database should contain the basic attributes and data of the 5 main objects (nodes). At this point only 2 example relations (edges) are inserted. The next step would be to take a closer look at how the 5 node types can be linked together. A good example and starting point is the many-to-many (m:n) relationship of persons to companies and financial organizations.</p>
<p>In the sones GraphDB many-to-many (m:n) relationships are implicitly formed with one-to-many (1:n) relationships: One object holds a named SET&lt;&gt; attribute which then stores the edges to a number of objects. In the context of the example this means that a person has edges pointing to companies and financial organizations this persons had worked for in the past.</p>
<p>Since the information about the relationship are held in the node type <em>Relationship</em> this node type will be expanded with edges to the node types <em>Company</em> and <em>FinancialOrganisation</em><em>.</em> The edge to the person was already in the original scheme. The corresponding GraphQL expression is:</p>
<ul>
<li><em>ALTER VERTEX Relationship ADD ATTRIBUTES(Company CompanyRelationship, FinancialOrganisation FinancialOrganisationRelationship) </em></li>
</ul>
<p>Now, through the use of backward edges, a backward edge can be prepared. This means, if a person connects with a company an edge occurs from the company to the person.</p>
<p>The GraphQL instructions are:</p>
<ul>
<li><em>ALTER VERTEX Company ADD BACKWARDEDGES (Relationship.CompanyRelationship Relationships) </em></li>
<li><em>ALTER VERTEX FinancialOrganisation ADD BACKWARDEDGES ( Relationship.FinancialOrganisationRelationship Relationships) </em></li>
<li><em>ALTER VERTEX Person ADD BACKWARDEDGES (Relationship.Person Relationships) </em></li>
</ul>
<p>Now we have an extended scheme – only the data is still missing.</p>
<p>To extract this from the already exported JSON objects, a small JSON parser tool was written. This tool reads and deserializes all the previously mirrored JSON files into corresponding .NET objects. These objects are later used by the <em>IScriptWriter </em>implementations. Each implementation works exactly on one relation in the scheme and generates GraphQL queries using the information of the. NET objects.</p>
<p>This tool can be downloaded as <a href="http://developers.sones.de/wp-content/uploads/2010/10/Connecting-Nodes-Source.zip" target="_blank">source code</a> and <a href="http://developers.sones.de/wp-content/uploads/2010/10/Connecting-Nodes-Binary.zip" target="_blank">pre-compiled binary</a>. If run without parameters, it tries to find the folders company, financial-organization, person, service-provider and product in the current folder. The resulting scripts are then written to the current folder.</p>
<p>If the desired input and output folders differ from the local The input and output directory can be passed to the program:</p>
<p><em>Connecting Nodes.exe [INPUT-FOLDER [OUTPUT-FOLDER]]</em></p>
<p>The output will look like this:</p>
<p align="center"><a href="http://developers.sones.de/wp-content/uploads/2010/10/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://developers.sones.de/wp-content/uploads/2010/10/image_thumb.png" alt="image" width="400" height="199" border="0" /></a></p>
<p>The implementation of the <em>IScriptWriter</em> interface for the relationship from persons to companies and financial organizations is shown in this picture / code:</p>
<p align="center"><a href="http://developers.sones.de/wp-content/uploads/2010/11/image4.png" target="_blank"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://developers.sones.de/wp-content/uploads/2010/11/image4_thumb.png" alt="image" width="460" height="343" border="0" /></a></p>
<p>The interested reader is of course free to implement not yet implemented connections between nodes. For example, the relationship of companies to products.</p>
<p>For example a request from the file Step_4_Relationships.qgl looks like this:</p>
<ul>
<li><em>INSERT INTO Relationship VALUES (Person = REF(Permalink = ‘andrew-cheung’), Title = ‘President &amp; CEO’, IsPast = False, CompanyRelationship = REF(Permalink = ’01-communique’))</em></li>
</ul>
<p>In this case, the person „<em>Andrew Cheung</em>“ is connected with the company „<em>01 Communique“. </em>The relationship is enriched with additional information, such as the job title he had or has in that company.</p>
<p>The backward edges of the companies <em>„01 Communique“ </em>to <em>„Andrew Cheung“ </em>was automatically generated due to the applied reverse relationship (backward edge) and can be queried immediately.</p>
<p>In this article was exemplarily demonstrated, how even after the import of data connections in GraphDB can be produced and existing data linked with each other. The following section 6 will show how easy it is to write and run complex queries in GraphQL on the sones GraphDB.</p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/10/29/the-crunchbase-use-case-part-5linking-nodes-and-edges/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>the “Crunchbase use-case” part 4 – the initial data import</title>
		<link>http://developers.sones.de/2010/07/07/the-crunchbase-use-case-part-4-the-initial-data-import/</link>
		<comments>http://developers.sones.de/2010/07/07/the-crunchbase-use-case-part-4-the-initial-data-import/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 12:43:57 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[use-case]]></category>
		<category><![CDATA[Crunchbase]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://developers.sones.de/2010/07/07/the-crunchbase-use-case-part-4-the-initial-data-import/</guid>
		<description><![CDATA[It’s about time to import some data into our previously established object scheme. If you want to do this yourself you want to first run the Crunchbase mirroring tool and create your own mirror on your hard disk. In the next step another small tool needs to be written. A tool that creates nice clean [...]]]></description>
			<content:encoded><![CDATA[<p>It’s about time to import some data into our <a href="http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/" target="_blank">previously established object scheme.</a> If you want to do this yourself you want to first run the Crunchbase mirroring tool and create your own mirror on your hard disk.</p>
<p>In the next step another small tool needs to be written. A tool that creates nice clean GraphQL import scripts for our data. Since every data source is different there’s not really a way around this step – in the end you’ll need to extract data here and import data here. One possible different solution could be to implement a dedicated importer for the GraphDB – but I’ll leave that for another article series. Back to our tool: It’s called <a href="http://188.40.88.109/wp-content/uploads/2010/07/First-Import.zip" target="_blank">“First-Import</a>” and it’s only purpose is to create a first small graph out of the mirrored Crunchbase data and fill the mainly primitive data attributes. <a href="http://188.40.88.109/wp-content/uploads/2010/07/First-Import.zip" target="_blank">Download this tool here.</a></p>
<p>This is why in this first step we mainly focus on the following object types:</p>
<ul>
<li><strong>Company</strong></li>
<li><strong>FinancialOrganization</strong></li>
<li><strong>Person</strong></li>
<li><strong>Product</strong></li>
<li><strong>ServiceProvider</strong></li>
</ul>
<p>Additionally all edges to a company object and the competition will be imported in this part of the article series.</p>
<p>So what does the first-import tool do? Simple:</p>
<ol>
<li>it deserializes the JSON data into a useable object – in this case it’s written in C# and uses .NETs own JavaScript deserializer</li>
<li>it then maps all attributes of that deserialized JSON object to attribute names in our graph data object scheme and it does so by outputting a simple query
<ol>
<li>Simple Attribute Types like String and Integer are just simply assigned using the “=” operator in the Graph Query Language</li>
<li>1:1 References are assigned by assigning a REF(…) to the attribute – for example: <strong>INSERT INTO Product VALUES (Company = REF(Permalink=’companyname’))</strong></li>
<li>1:n References are assigned by assigning a SETOF(…) to the attribute – because we are not using a bulk import interface but the standard GraphQL REST Interface it’s necessary that the object(s) we’re going to reference are already in existence – therefore we chose to do this 1:n linking step after creating the objects itself in a separate <strong>UPDATE</strong> step. Knowing this the <strong>UPDATE</strong> looks like this: <strong>UPDATE Company SET (ADD TO Competitions SETOF(permalink=’…’,permalink=’…’)) WHERE Permalink = ’companyname’</strong></li>
</ol>
</li>
</ol>
<p>For the most part of the work it’s copy-n-paste to get the first-import tool together – it could have been done in a more sophisticated way (like using reflection on the deserialized JSON objects) but that’s most probably part of another article.</p>
<p>When run in the “crunchbase” directory created by the Crunchbase Mirroring tool the first-import tool generates GraphQL scripts – 6 of them to be precise:</p>
<p><a href="http://developers.sones.de/wp-content/uploads/2010/07/crunchbasefirstimport.png"><img class="wlDisabledImage" style="display: block; margin-left: auto; margin-right: auto; border: 0pt none;" title="crunchbase-first-import" src="http://188.40.88.109/wp-content/uploads/2010/07/crunchbasefirstimport_thumb.png" alt="crunchbase-first-import" width="400" height="212" border="0" /></a></p>
<p><a href="http://188.40.88.109/wp-content/uploads/2010/07/gqlscriptspart4.png"><img class="wlDisabledImage" style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="gql-scripts-part-4" src="http://188.40.88.109/wp-content/uploads/2010/07/gqlscriptspart4_thumb.png" alt="gql-scripts-part-4" width="400" height="130" border="0" /></a></p>
<p>The last script is named “Step_3” because it’s supposed to come after all the others.</p>
<p>These scripts can be easily imported after establishing the object scheme. The thing is though – it won’t be that fast. Why is that? We’re creating several thousand nodes and the edges between them. To create such an edge the Query Language needs to identify the node the edge originates and the node the edge should point to. To find these nodes the user is free to specify matching criteria just like in a <strong>WHERE </strong>clause.</p>
<p>So if you do a <strong>UPDATE Company SET (ADD TO Competitions SETOF(Permalink=’company1’,Permalink=’company2’)) WHERE Permalink = ’companyname’</strong> the GraphDB needs to access the node identified by the Permalink Attribute with the value “companyname” and the two nodes with the values “company1” and “company2” to create the two edges. It will work just like all the scripts are but it won’t be as fast as it could be. What can help to speed up things are indices. Indices are used by the GraphDB to identify and find specific objects. These indices are used mainly in the evaluation of a <strong>WHERE</strong> clause.</p>
<p>The sones GraphDB offers a number of integrated indices, one of which is HASHTABLE which we are going to use in this example. Furthermore everyone interested can implement it’s own index plugin – we will have a tutorial how to do that online in the future – if you’re interested now just ask how we can help you to make it happen!</p>
<p>Back to the indices in our example:</p>
<p>The syntax of creating an index is quite easy, the only thing you have to do is tell the <strong>CREATE INDEX </strong>query on which type and attribute the index should be created and of which indextype the index should be. Since we’re using the Permalink attribute of the Crunchbase objects as an identifier in the example (it could be any other attribute or group of attributes that identify one particular object) we want to create indices on the Permalink attribute for the full speed-up. This would look like this:</p>
<ul>
<li><strong>CREATE INDEX ON Company (Permalink) INDEXTYPE HashTable</strong></li>
<li><strong>CREATE INDEX ON FinancialOrganization (Permalink) INDEXTYPE HashTable</strong></li>
<li><strong>CREATE INDEX ON Person (Permalink) INDEXTYPE HashTable</strong></li>
<li><strong>CREATE INDEX ON ServiceProvider (Permalink) INDEXTYPE HashTable</strong></li>
<li><strong>CREATE INDEX ON Product (Permalink) INDEXTYPE HashTable</strong></li>
</ul>
<p>Looks easy, is easy! To take advantage of course this index creation should be done before creating the first nodes and edges.</p>
<p>After we got that sorted the only thing that’s left is to run the scripts. This will, depending on your machine, take a minute or two.</p>
<p>So after running those scripts what happened is: all Company, FinancialOrganization, Person, ServiceProvider and Product objects are created and filled with primitive data types</p>
<ol>
<li>all attributes which are essentially references (1:1 or 1:n) to a Company object are being set, these are
<ol>
<li><strong>Company.Competitions</strong></li>
<li><strong>Product.Company</strong></li>
</ol>
</li>
</ol>
<p>That’s it for this part – in the next part of the series we will dive deeper into connecting nodes with edges. There is a ton of things that can be done with the data – stay tuned for the next part.</p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/07/07/the-crunchbase-use-case-part-4-the-initial-data-import/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The “Crunchbase use-case” part 3 – How does a graph data scheme start?</title>
		<link>http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/</link>
		<comments>http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 12:16:00 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[use-case]]></category>
		<category><![CDATA[Crunchbase]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/</guid>
		<description><![CDATA[After the overview and the first use-case introduction it’s about time to play with some data objects. So how can one actually access the data of crunchbase? Easy as pie: Crunchbase offers an easy to use interface to get all information out of their database in a fairly structured JSON format. So what we did [...]]]></description>
			<content:encoded><![CDATA[<p>After the overview and the first use-case introduction it’s about time to play with some data objects.</p>
<p>So how can one actually access the data of crunchbase? Easy as pie: Crunchbase offers an easy to use interface to get all information out of their database in a fairly structured JSON format. So what we did is to write a tool that actually downloads all the available data to a local machine so we can play with it as we like in the following steps.</p>
<p>This small tool is called <a href="http://188.40.88.109/wp-content/uploads/2010/07/MirrorCrunchbaseJSON.zip" target="_blank">MirrorCrunchbase and can be downloaded in binary and sourcecode here.</a> As for all sourcecode and tools in this series this runs on windows and linux (mono). You can use the sourcecode to get an impression what’s going on there or just the included binaries (in bin/Debug) to mirror the data of Crunchbase.</p>
<p>To say a few words about what the MirrorCrunchbase tool actually does first a small source code excerpt:</p>
<p align="center"><a href="http://188.40.88.109/wp-content/uploads/2010/03/codesnippet_1.png" target="_blank"><img style="display: inline; border-width: 0px;" title="codesnippet_1" src="http://188.40.88.109/wp-content/uploads/2010/03/codesnippet_1_thumb.png" alt="codesnippet_1" width="400" height="316" border="0" /></a></p>
<p align="left">So first it gets the list of all objects like the <strong>company </strong>names and then it retrieves each <strong>company</strong> object according to it’s name and stores everything in .js files. Easy eh?</p>
<p>When it’s running you get an output similar to that:</p>
<p align="center"><a href="http://188.40.88.109/wp-content/uploads/2010/03/mirror_run_linux.png" target="_blank"><img style="display: inline; border-width: 0px;" title="mirror_run_linux" src="http://188.40.88.109/wp-content/uploads/2010/03/mirror_run_linux_thumb.png" alt="mirror_run_linux" width="400" height="265" border="0" /></a></p>
<p>And after the successful completion you should end up with a directory structure</p>
<p align="center"><a href="http://188.40.88.109/wp-content/uploads/2010/07/crunchbase_directory_structure.png"><img class="wlDisabledImage" style="display: inline; border: 0px;" title="crunchbase_directory_structure" src="http://188.40.88.109/wp-content/uploads/2010/07/crunchbase_directory_structure_thumb.png" alt="crunchbase_directory_structure" width="400" height="179" border="0" /></a></p>
<p>The .js files store basically every information according to the data scheme overview picture of <a href="http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-2-eine-kurze-einfhrung/" target="_blank">part 2</a>.  So what we want to do now is to transform this overview into a GraphQL data scheme we can start to work with. A main concept of sones GraphDB is to allow the user to evolve a data scheme over time. That way the user does not have to have the final data scheme before the first create statement. Instead the user can start with a basic data scheme representing only standard data types and add complex user defined types as migration goes along. That’s a fundamentally different approach from what database administrators and users are used to today.</p>
<p>Todays user generated data evolves and grows and it’s not possible to foresee in which way attributes need to be added, removed, renamed. Maybe the scheme changes completely. Everytime the necessity emerged to change anything on a established and populated data scheme it was about time to start a complex and costly migration process. To substantially reduce or even in some cases eliminate the need for such a complex process is a design goal of the sones GraphDB.</p>
<p>In the Crunchbase use-case this results in a fairly straight-forward process to establish and fill the data scheme. First we create all types with their correct name and add only those attributes which can be filled from the start – like primitives or direct references. All Lists and Sets of Edges can be added later on.</p>
<p>So these would be the Create-Type Statements to start with in this use-case:</p>
<ul>
<li>
<h5><strong>CREATE TYPE</strong> Company <strong>ATTRIBUTES</strong> ( <strong>String</strong> Alias_List, <strong>String</strong> BlogFeedURL,    <strong>String</strong> BlogURL, <strong>String</strong> Category, <strong>DateTime</strong> Created_At, <strong>String</strong> CrunchbaseURL, <strong>DateTime</strong> Deadpooled_At, <strong>String</strong> Description, <strong>String</strong> EMailAdress, <strong>DateTime</strong> Founded_At, <strong>String</strong> HomepageURL, <strong>Integer</strong> NumberOfEmployees, <strong>String</strong> Overview, <strong>String</strong> Permalink, <strong>String</strong> PhoneNumber, <strong>String</strong> Tags, <strong>String</strong> TwitterUsername, <strong>DateTime</strong> Updated_At, <strong>Set&lt;<em>Company</em>&gt;</strong> Competitions )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> FinancialOrganization <strong>ATTRIBUTES</strong> ( <strong>String</strong> Alias_List, <strong>String</strong> BlogFeedURL, <strong>String</strong> BlogURL, <strong>DateTime</strong> Created_At, <strong>String</strong> CrunchbaseURL, <strong>String</strong> Description, <strong>String</strong> EMailAdress, <strong>DateTime</strong> Founded_At, <strong>String</strong> HomepageURL, <strong>String</strong> Name, <strong>Integer</strong> NumberOfEmployees, <strong>String</strong> Overview, <strong>String</strong> Permalink, <strong>String</strong> PhoneNumber, <strong>String</strong> Tags, <strong>String</strong> TwitterUsername, <strong>DateTime</strong> Updated_At )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Product <strong>ATTRIBUTES</strong> ( <strong>String</strong> BlogFeedURL, <strong>String</strong> BlogURL, <strong>Company</strong> Company, <strong>DateTime</strong> Created_At, <strong>String</strong> CrunchbaseURL, <strong>DateTime</strong> Deadpooled_At, <strong>String</strong> HomepageURL, <strong>String</strong> InviteShareURL, <strong>DateTime</strong> Launched_At, <strong>String</strong> Name, <strong>String</strong> Overview, <strong>String</strong> Permalink, <strong>String</strong> StageCode, <strong>String</strong> Tags, <strong>String</strong> TwitterUsername, <strong>DateTime</strong> Updated_At)</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> ExternalLink <strong>ATTRIBUTES</strong> ( <strong>String</strong> ExternalURL, <strong>String</strong> Title )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> EmbeddedVideo <strong>ATTRIBUTES</strong> ( <strong>String</strong> Description, <strong>String</strong> EmbedCode )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Image <strong>ATTRIBUTES</strong> ( <strong>String</strong> Attribution, <strong>Integer</strong> SizeX, <strong>Integer</strong> SizeY, <strong>String</strong> ImageURL )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> IPO <strong>ATTRIBUTES</strong> ( <strong>DateTime</strong> Published_At, <strong>String</strong> StockSymbol, <strong>Double</strong> Valuation, <strong>String</strong> ValuationCurrency )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Acquisition <strong>ATTRIBUTES</strong> ( <strong>DateTime</strong> Acquired_At, <strong>Company</strong> Company, <strong>Double</strong> Price, <strong>String</strong> PriceCurrency, <strong>String</strong> SourceDestination, <strong>String</strong> SourceURL, <strong>String</strong> TermCode )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Office <strong>ATTRIBUTES</strong> ( <strong>String</strong> Address1, <strong>String</strong> Address2, <strong>String</strong> City, <strong>String</strong> CountryCode, <strong>String</strong> Description, <strong>Double</strong> Latitude, <strong>Double</strong> Longit<br />
ude, <strong>String</strong> StateCode, <strong>String</strong> ZipCode )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Milestone <strong>ATTRIBUTES</strong> ( <strong>String</strong> Description, <strong>String</strong> SourceDescription, <strong>String</strong> SourceURL, <strong>DateTime</strong> Stoned_At )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Fund <strong>ATTRIBUTES</strong> ( <strong>DateTime</strong> Funded_At, <strong>String</strong> Name, <strong>Double</strong> RaisedAmount, <strong>String</strong> RaisedCurrencyCode, <strong>String</strong> SourceDescription, <strong>String</strong> SourceURL )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Person <strong>ATTRIBUTES</strong> ( <strong>String</strong> AffiliationName, <strong>String</strong> Alias_List, <strong>String</strong> Birthplace, <strong>String</strong> BlogFeedURL, <strong>String</strong> BlogURL, <strong>DateTime</strong> Birthday, <strong>DateTime</strong> Created_At, <strong>String</strong> CrunchbaseURL, <strong>String</strong> FirstName, <strong>String</strong> HomepageURL, <strong>Image</strong> Image, <strong>String</strong> LastName, <strong>String</strong> Overview, <strong>String</strong> Permalink, <strong>String</strong> Tags, <strong>String</strong> TwitterUsername, <strong>DateTime</strong> Updated_At )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Degree <strong>ATTRIBUTES</strong> ( <strong>String</strong> DegreeType, <strong>DateTime</strong> Graduated_At, <strong>String</strong> Institution, <strong>String</strong> Subject )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Relationship <strong>ATTRIBUTES</strong> ( <strong>Boolean</strong> Is_Past, <strong>Person</strong> Person, <strong>String</strong> Title )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> ServiceProvider <strong>ATTRIBUTES</strong> ( <strong>String</strong> Alias_List, <strong>DateTime</strong> Created_At, <strong>String</strong> CrunchbaseURL, <strong>String</strong> EMailAdress, <strong>String</strong> HomepageURL, <strong>Image</strong> Image, <strong>String</strong> Name, <strong>String</strong> Overview, <strong>String</strong> Permalink, <strong>String</strong> PhoneNumber, <strong>String</strong> Tags, <strong>DateTime</strong> Updated_At )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Providership <strong>ATTRIBUTES</strong> ( <strong>Boolean</strong> Is_Past, <strong>ServiceProvider</strong> Provider, <strong>String</strong> Title )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> Investment <strong>ATTRIBUTES</strong> ( <strong>Company</strong> Company, <strong>FinancialOrganization</strong> FinancialOrganization, <strong>Person</strong> Person )</h5>
</li>
<li>
<h5><strong>CREATE TYPE</strong> FundingRound <strong>ATTRIBUTES</strong> ( <strong>Company</strong> Company, <strong>DateTime</strong> Funded_At, <strong>Double</strong> RaisedAmount, <strong>String</strong> RaisedCurrencyCode, <strong>String</strong> RoundCode, <strong>String</strong> SourceDescription, <strong>String</strong> SourceURL )</h5>
</li>
</ul>
<p>You can directly <a href="http://188.40.88.109/wp-content/uploads/2010/07/Step_1_Crunchbase_CreateTypes.zip" target="_blank">download the according GraphQL script here</a>. If you use the sonesExample application from our open source distribution you can create a subfolder “scripts” in the binary directory and put the downloaded script file there. When you’re using the integrated WebShell, which is by default launched on port 9975 an can be accessed by browsing to <a href="http://localhost:9975/WebShell">http://localhost:9975/WebShell</a> you can execute the script using the command “execdbscript” followed by the filename of the script.</p>
<p>As you can see it’s quite straight forward a copy-paste action from the graphical scheme. Even references are not represented by a difficult relational helper, instead if you want to reference a <strong>company</strong> object you can just do that (we actually did that – look for example at the last line of the graphql script above). As a result when you execute the above script you get all the Types necessary to fill data in in the next step.</p>
<p>So that’s it for this part – in the next part of this series we will start the initial data import using a small tool which reads the mirrored data and outputs graphql insert queries.</p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The “CrunchBase use-case” – part 2 – A short introduction</title>
		<link>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-2-eine-kurze-einfhrung/</link>
		<comments>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-2-eine-kurze-einfhrung/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 14:01:00 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[use-case]]></category>
		<category><![CDATA[Crunchbase]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=752</guid>
		<description><![CDATA[Where to start: existing data scheme and API This series already tells in it’s name what the use case is: The “CrunchBase”.  On their website they speak for themselves to explain what it is: “CrunchBase is the free database of technology companies, people, and investors that anyone can edit.”. There are many reasons why this [...]]]></description>
			<content:encoded><![CDATA[<h3><strong>Where to start: existing data scheme and API</strong></h3>
<p>This series already tells in it’s name what the use case is: The “<a href="http://www.crunchbase.com/" target="_blank">CrunchBase</a>”.  On their website they speak for themselves to explain what it is: <em>“CrunchBase is the free database of technology companies, people, and investors that anyone can edit.”</em>. There are many reasons why this was chosen as a use-case. One important reason is that all data behind the CrunchBase service is licensed under Creative-Commons-Attribution (CC-BY) license. So it’s freely available data of high-tech companies, people and investors.</p>
<p><a href="http://www.crunchbase.com" target="_blank"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="crunchbase_logo" border="0" alt="crunchbase_logo" src="http://188.40.88.109/wp-content/uploads/2010/03/crunchbase_logo1.png" width="216" height="37" /></a></p>
<p>Currently there are more than 40.000 different companies, 51.000 different people and 4.200 different investors in the database. The flood of information is big and the scale of connectivity even bigger. The graph represented by the nodes could be even bigger than that but because of the limiting factors of current relational database technology it’s not feasible to try to do that. </p>
<p>sones GraphDB is coming to the rescue: because it’s optimized to handle huge datasets of strongly connected data. Since the CrunchBase data could be uses as a starting point to drive connectivity to even greater detail it’s a great use-case to show these migration and handling.</p>
<p>Thankfully the developers at CrunchBase already made one or two steps into an object oriented world by offering an API which answers queries in JSON format. By using this API everyone can access the complete data set in a very structured way. That’s both good and bad. Because the used technologies don’t offer a way to represent linked objects they had to use what we call “relational helpers”. For example: A <strong>person</strong> founded a <strong>company</strong>. (person and company being a JSON object). There’s no standardized way to model a relationship between those two. So what the CrunchBase developers did is they added an unique-Identifier to each object. And they added a new object which is uses as a “relational helper”-object. The only purpose of these helper objects is to point towards a unique-identifier of another object type. So in our example the <strong>relationship </strong>attribute of the <strong>person </strong>object is not pointing directly to a specific company or relationship, but it’s pointing to the helper object which stores the information which unique-identifier of which object type is meant by that link.</p>
<p>To visualize this here’s the data scheme behind the CrunchBase (+all currently available links):</p>
<p align="center"><a href="http://188.40.88.109/wp-content/uploads/2010/03/CrunchbaseRelations.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CrunchbaseRelations" border="0" alt="CrunchbaseRelations" src="http://188.40.88.109/wp-content/uploads/2010/03/CrunchbaseRelations_thumb.png" width="400" height="283" /></a></p>
<p>As you can see there are many more “relational helper” dead-ends in the scheme. What an application had to do up until now is to resolve these dead-ends by going the extra mile. So instead of retrieving a <strong>person </strong>and all <strong>relationships</strong>, and with them all data that one would expect, the application has to split the data into many queries to internally build a structure which essentially is a graph.</p>
<p>Another example would be the <strong>company </strong>object. Like the name implies all data of a company is stored there. It holds an attribute called <strong>investments </strong>which isn’t a primitive data type (like a number or text) but a user defined complex data type. This user defined data type is called <strong>List&lt;FundingRoundStructure&gt;</strong>. So it’s a simple list of <strong>FundingRoundStructure</strong> objects.</p>
<p>When we take a look at the <strong>FundingRoundStructure</strong> there’s an attribute called company which is made up by the user defined data type <strong>CompanyStructure</strong>.<strong> </strong>This <strong>CompanyStructure</strong> is one of these dead-ends because there’s just a name and a unique-id. The application now needs retrieve the right <strong>company</strong> object with this unique-id to access the company information. </p>
<p>Simple things told in a simple way: No matter where you start, you always will end up in a dead-end which will force you to start over with the information you found in that dead-end. It’s not user-friendly nor easy to implement. </p>
<p>The good news is that there is a way to handle this type of data and links between data in a very easy way. The sones GraphDB provides a rich set of features to make the life of developers and users easier. In that context: If we would like to know which companies also received funding from the same investor like let’s say the company “facebook” the only thing necessary would be one short query. Beside that those “relational helpers” are redundant information. That means in a graph database this information would be stored in the form of edges but not in any helper objects. </p>
<p>The reason why the developers of CrunchBase had to use these helpers is that JSON and the relational table behind it isn’t able to directly store this information or to query it directly. <a href="http://en.wikipedia.org/wiki/Relational_database" target="_blank">To learn more about those relational tables and databases try this link.</a></p>
<p>I want to end this part of the series with a picture of the above relational diagram (without the arrows and connections). </p>
<p align="center"><a href="http://188.40.88.109/wp-content/uploads/2010/03/Crunchbase1.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Crunchbase" border="0" alt="Crunchbase" src="http://188.40.88.109/wp-content/uploads/2010/03/Crunchbase_thumb1.png" width="400" height="337" /></a></p>
<p>The next part of the series will show how we can access the available information and how a graph scheme starts to evolve.</p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-2-eine-kurze-einfhrung/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The “CrunchBase use-case” – part 1 – Overview</title>
		<link>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-1-bersicht/</link>
		<comments>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-1-bersicht/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 14:00:00 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[Example]]></category>
		<category><![CDATA[GraphDB]]></category>
		<category><![CDATA[sones]]></category>
		<category><![CDATA[use-case]]></category>
		<category><![CDATA[Crunchbase]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://developers.sones.de/?p=746</guid>
		<description><![CDATA[If you want to explain how easy it is for a user or developer to use the sones GraphDB to work on existing datasets you do that by showing him an example – a use case. And this is exactly what this short series of articles will do: It’ll show the important steps and concepts, [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to explain how easy it is for a user or developer to use the sones GraphDB to work on existing datasets you do that by showing him an example – a use case. And this is exactly what this short series of articles will do: It’ll show the important steps and concepts, technologies and designs behind the use case and the sones GraphDB.</p>
<p>The sones GraphDB is a DBMS focusing on strong connected unstructured and semi-structured data. As the name implies these data sets are organized in Nodes and Edges objectoriented in a graph data structure.</p>
<p><a href="http://188.40.88.109/wp-content/uploads/2010/03/graph.png" target="_blank"><img style="display: inline; border-width: 0px;" title="graph" src="http://188.40.88.109/wp-content/uploads/2010/03/graph_thumb.png" alt="graph" width="400" height="291" border="0" /></a></p>
<p><em>“a simple graph”</em></p>
<p>To handle these complex graph data structures the user is given a powerful toolset: the graph query language. It’s a lot like SQL when it comes to comprehensibility – but when it comes to functionality it’s completely designed to help the user do previously tricky or impossible things with one easy query.</p>
<p>This articles series is going to show how real conventional-relational data is aggregated and ported to an easy to understand and more flexible graph datastructure using the sones GraphDB. And because this is not only about telling but also about doing we will release all necessary tools and source codes along with this article. That means: This is a workshop and a use case in one awesome article series.</p>
<p>The requirements to follow all steps of this series are: You want to have a working sone GraphDB. Because we just released the OpenSource Edition Version 1.1 you should be fine following <a href="http://developers.sones.com/wiki/" target="_blank">the documentation on how to download and install it here</a>. Beside that you won’t need programming skills but if you got them you can dive deep into every aspect. Be our guest!</p>
<p>This first article is titled “Overview” and that’s what you’ll get:</p>
<blockquote><p><em><strong><a href="http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-1-bersicht/" target="_blank">part 1: Overview</a></strong></em></p>
<p><em><strong><a href="http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-2-eine-kurze-einfhrung/" target="_blank">part 2: A short introduction into the use-case and it’s relational data</a></strong></em></p>
<p><em><strong><a href="http://developers.sones.de/2010/07/01/the-crunchbase-use-case-part-3-which-data-and-how-does-a-gql-data-scheme-start/" target="_blank">part 3: Which data and how does a GraphQL data scheme start?</a></strong></em></p>
<p><em><strong><a href="http://developers.sones.de/2010/07/07/the-crunchbase-use-case-part-4-the-initial-data-import/" target="_blank">part 4: The initial data import</a></strong></em></p>
<p><a href="http://developers.sones.de/2010/10/29/the-crunchbase-use-case-part-5linking-nodes-and-edges/"><strong><em>part 5:  Linking nodes and edges: What’s connected with what and how does the scheme evolve?</em></strong></a></p>
<p><strong><em>part 6: Querying the data and how to access it from applications?</em></strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/06/30/der-crunchbase-use-case-teil-1-bersicht/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>weighted graphs? Do that with sones GraphDB!</title>
		<link>http://developers.sones.de/2010/01/26/weighted-graphs-do-that-with-sones-graphdb/</link>
		<comments>http://developers.sones.de/2010/01/26/weighted-graphs-do-that-with-sones-graphdb/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 12:05:38 +0000</pubDate>
		<dc:creator>bietiekay</dc:creator>
				<category><![CDATA[documentation]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[weighted graphs]]></category>

		<guid isPermaLink="false">http://developers.sones.de/2010/01/26/weighted-graphs-do-that-with-sones-graphdb/</guid>
		<description><![CDATA[You know that with the sones GraphDB you can achieve amazing things by connecting objects through edges. A graph data structure is based upon this idea and having the ability to add weight to these edges gives you the ability to create weighted graphs. “A graph is a weighted graph if a number (weight) is [...]]]></description>
			<content:encoded><![CDATA[<p>You know that with the sones GraphDB you can achieve amazing things by connecting objects through edges. A graph data structure is based upon this idea and having the ability to add weight to these edges gives you the ability to create weighted graphs.</p>
<p><em>“A graph is a weighted graph if a number (weight) is assigned to each edge. Such weights might represent, for example, costs, lengths or capacities, etc. depending on the problem.” (<a href="http://en.wikipedia.org/wiki/Graph_%28mathematics%29#Weighted_graph" target="_blank">Wikipedia</a>)</em></p>
<p>There’s an example of a simple weighted graph in the <a href="http://developers.sones.de/examples/a-weighted-graph/" target="_blank">example section of this website</a>. Have a look at it!</p>
<p><a href="http://developers.sones.de/examples/a-weighted-graph/" target="_blank"><span style="color: #acb613;"> </span><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt none;" title="sonesdev" src="http://developers.sones.de/wp-content/uploads/2010/01/sonesdev.png" border="0" alt="sonesdev" width="400" height="285" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://developers.sones.de/2010/01/26/weighted-graphs-do-that-with-sones-graphdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

