<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>blog.stavi.sh</title>
    <link>http://blog.stavi.sh</link>
    <description>Most recent posts at blog.stavi.sh</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#b102e3f13" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ToddStavishsPosterous" /><feedburner:info uri="toddstavishsposterous" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Wed, 08 Dec 2010 01:27:00 -0800</pubDate>
      <title>Bicycle Commuters Overtake Train Commuters In The District Of Columbia!</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/BKytlKEEMzI/bicycles-overtake-train-commuters-in-the-dist</link>
      <guid isPermaLink="false">http://blog.stavi.sh/bicycles-overtake-train-commuters-in-the-dist</guid>
      <description>&lt;p&gt;
	
&lt;div&gt;Recently, I've been looking at datasets from The Wasthington Post's Transportation &amp;amp; Development team. Very interesting. From the years 2004 to 2009, it shows big increases in 2 wheeled transportation (motorcycle, bicycle), in fact, the total number of bicycle commuters was more than train commuters (see below). Solidarity my two wheeled, friends. Solidarity. :)&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://washingtonpost.socrata.com/w/tc59-58zm/xhqs-a7fj?cur=uHL_cnbOwmG&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&lt;a href="http://washingtonpost.socrata.com/dataset/Commuting-By-Year-Timeline/tc59-58zm" title="Commuting By Year Timeline" target="_blank"&gt;Commuting By Year Timeline&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/bicycles-overtake-train-commuters-in-the-dist"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/bicycles-overtake-train-commuters-in-the-dist#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/BKytlKEEMzI" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/bicycles-overtake-train-commuters-in-the-dist</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 01 Oct 2010 08:10:00 -0700</pubDate>
      <title>Synchronous microcontroller communication interfaces. Everything you wanted to know, but were afraid to ask.</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/UauTMfWOwis/synchronous-microcontroller-communication-int</link>
      <guid isPermaLink="false">http://blog.stavi.sh/synchronous-microcontroller-communication-int</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Synchronous Interfaces (suitable for peripherals on the same board or &amp;lt;1 m):&lt;br /&gt;I2C (Inter Integrated Circuit, I squared C)&lt;br /&gt;SPI (Serial Peripheral Interface Bus )&lt;br /&gt;U(S)ART (Universal Synchronous &amp;amp; Asynchronous Receiver Transmitter)&lt;br /&gt;(aka Serial Communication Interface (SCI))&lt;br /&gt;(S) can be synchronous&lt;p /&gt;&amp;nbsp;I2C&lt;br /&gt;* true bus, requires only two pins for multiple devices (address space)&lt;br /&gt;* 100kbits/sec, 400kbits/sec, 1Mbits/sec&lt;br /&gt;* half-duplex&lt;br /&gt;* high noise sensitivity, lower data integrity&lt;br /&gt;* slave ack / rx confirmation&lt;p /&gt;SPI&lt;br /&gt;* not a true bus, N devices require 3+N pins&lt;br /&gt;* 10Mbits/sec&lt;br /&gt;* full&amp;ndash;duplex capability&lt;br /&gt;* any message sizes, suited for longer data streams (I2C limited to 8 bit word)&lt;p /&gt;USART&lt;br /&gt;* standard serial connection (also over USB)&lt;br /&gt;* few hundred bits per second (bps) up to 1.5Mbps&lt;br /&gt;* error checking with parity bit&lt;/span&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/synchronous-microcontroller-communication-int"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/synchronous-microcontroller-communication-int#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/UauTMfWOwis" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/synchronous-microcontroller-communication-int</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 30 Sep 2010 13:54:00 -0700</pubDate>
      <title>Unit Testing Arduino With Python</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/FxAggWOoIko/unit-testing-arduino-with-python</link>
      <guid isPermaLink="false">http://blog.stavi.sh/unit-testing-arduino-with-python</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;span style="font-family: helvetica, arial, freesans, clean, sans-serif; line-height: 20px;"&gt;Uses python to dynamically load Arduino hex images for unit testing. Supports windows and osx via configuration file. To find out where your hex images are placed by the Arduino IDE, hit the shift key before you hit the build (play) button. You can hit the shift for upload as well to find out where your avrdude (command line upload utility) is located. &amp;nbsp;Alternatively, you can look at the included config files and use your install location (using Arduino 0020).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://github.com/toddstavish/Python-Arduino-Unit-Testing"&gt;http://github.com/toddstavish/Python-Arduino-Unit-Testing&lt;/a&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/unit-testing-arduino-with-python"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/unit-testing-arduino-with-python#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/FxAggWOoIko" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/unit-testing-arduino-with-python</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 31 Aug 2010 12:51:00 -0700</pubDate>
      <title>Algerian Cities Spreadsheet, Latitude \ Longitude, And Map</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/_YjrAM5bZCI/algerian-cities-spreadsheet-latitude-longitud</link>
      <guid isPermaLink="false">http://blog.stavi.sh/algerian-cities-spreadsheet-latitude-longitud</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Spreadsheet: &lt;br /&gt;&lt;a href="http://www.stavi.sh/downloads/algerian-cities-lat-long.xls"&gt;http://www.stavi.sh/downloads/algerian-cities-lat-long.xls&lt;/a&gt; &lt;p /&gt; Google Docs: &lt;br /&gt;&lt;a href="https://spreadsheets0.google.com/ccc?key=tGdADtMhFEl1a10ruijx2Kw&amp;amp;hl=en"&gt;https://spreadsheets0.google.com/ccc?key=tGdADtMhFEl1a10ruijx2Kw&amp;amp;hl=en&lt;/a&gt; &lt;p /&gt; Socrata:&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/2ewa-umtn/y34g-bnf3?cur=uBhky0emYdt&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&lt;a href="http://www.socrata.com/dataset/Algerian-Cities-Latitude-And-Longitude/2ewa-umtn" title="Algerian Cities Latitude And Longitude" target="_blank"&gt;Algerian Cities Latitude And Longitude&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/yyyp-dz72/y34g-bnf3?cur=-3qnyifPw9P&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&lt;a href="http://www.socrata.com/dataset/Cities-of-Algeria/yyyp-dz72" title="Cities of Algeria" target="_blank"&gt;Cities of Algeria&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/algerian-cities-spreadsheet-latitude-longitud"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/algerian-cities-spreadsheet-latitude-longitud#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/_YjrAM5bZCI" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/algerian-cities-spreadsheet-latitude-longitud</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 31 Aug 2010 07:56:00 -0700</pubDate>
      <title>Afghani Cities Spreadsheet, Map, Latitude And Longitude</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/ig3SpyCddPw/cities-within-afghanistan-latitude-and-longit</link>
      <guid isPermaLink="false">http://blog.stavi.sh/cities-within-afghanistan-latitude-and-longit</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Spreadsheet: &lt;br /&gt;&lt;a href="http://www.stavi.sh/downloads/Cities_Within_Afghanistan_Latitude_Longitude.xls"&gt;http://www.stavi.sh/downloads/Cities_Within_Afghanistan_Latitude_Longitude.xls&lt;/a&gt; &lt;p /&gt; Google Docs: &lt;br /&gt;&lt;a href="https://spreadsheets.google.com/ccc?key=0At92oU3FPZ4QdHhfMFJ0a2lUcXNuN0J2bHRRUk01akE&amp;amp;hl=en"&gt;https://spreadsheets.google.com/ccc?key=0At92oU3FPZ4QdHhfMFJ0a2lUcXNuN0J2bHRR...&lt;/a&gt; &lt;p /&gt; Socrata:&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/vixk-q2bg/y34g-bnf3?cur=tXxwWi1cBoR&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&lt;a href="http://www.socrata.com/dataset/Cities-Within-Afghanistan-Latitude-Longitude/vixk-q2bg" title="Cities Within Afghanistan Latitude Longitude" target="_blank"&gt;Cities Within Afghanistan Latitude Longitude&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/n2yg-m6yk/y34g-bnf3?cur=YhZjHlhz1k0&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&lt;a href="http://www.socrata.com/dataset/Cities-In-Afghanistan/n2yg-m6yk" title="Cities In Afghanistan" target="_blank"&gt;Cities In Afghanistan&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/cities-within-afghanistan-latitude-and-longit"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/cities-within-afghanistan-latitude-and-longit#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/ig3SpyCddPw" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/cities-within-afghanistan-latitude-and-longit</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 26 Aug 2010 14:25:00 -0700</pubDate>
      <title>Real-time Relationship Analytics From Large-scale Graph Processing</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/W5PAZk5rdxg/real-time-relationship-analytics-from-large-s</link>
      <guid isPermaLink="false">http://blog.stavi.sh/real-time-relationship-analytics-from-large-s</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Cassandra excels at storing large, active, decentralized datasets. Additionally, Cassandra&amp;rsquo;s rich data model allows efficient use for many applications beyond simple &lt;a href="http://en.wikipedia.org/wiki/Associative_array"&gt;associative arrays&lt;/a&gt;. One interesting application is the processing of large-scale &lt;a href="http://en.wikipedia.org/wiki/Graph_theory"&gt;graph structures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have devised a &lt;a href="http://github.com/toddstavish/Cassandra-Graph-Extract"&gt;graph application layer&lt;/a&gt; to extract and process social network analysis data from Cassandra, using &lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt;. The technical benefits of the social-graph-extract application layer and its use of graph-oriented processing have been &lt;a href="http://blog.stavi.sh/polyglot-persistence-integrating-low-latency"&gt;articulated&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Social network analysis is one application of a more general category,
&lt;a href="http://www.dbms2.com/2009/08/21/social-network-analysis-aka-relationship-analytics/"&gt;relationship analytics&lt;/a&gt;,
as defined by &lt;a href="http://www.monash.com/curtbio.html"&gt;Curt Monash&lt;/a&gt;. The
relationship analytics problem domain maps well to the unique features
of the Cassandra-InfiniteGraph hybrid system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dedicated vertex/edge API&lt;/li&gt;
&lt;li&gt;data can be clustered according to vertex/edge proximity&lt;/li&gt;
&lt;li&gt;disk-based/memory-centric access&lt;/li&gt;
&lt;li&gt;peer-to-peer communication from InfiniteGraph node to Cassandra node&lt;/li&gt;
&lt;li&gt;bidirectional updates between raw Cassandra data and Infinitegraph analytics&lt;/li&gt;
&lt;li&gt;parallel streaming and caching from InfintiteGraph&lt;/li&gt;
&lt;li&gt;modeling flexibility to support a variety of sources&lt;/li&gt;
&lt;li&gt;redundancy and high-availability&lt;/li&gt;
&lt;li&gt;precision and speed for graph analytics&lt;/li&gt;
&lt;li&gt;finding extremely long paths, all paths, unknown paths, or paths of
nontrivial or indeterminate length&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Current business problems that can utilize these features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyzing high-frequency trading&lt;/li&gt;
&lt;li&gt;discovering high degrees of mutual interconnection in social networks&lt;/li&gt;
&lt;li&gt;data mining subtle retail correlations&lt;/li&gt;
&lt;li&gt;product recommendation engines&lt;/li&gt;
&lt;li&gt;determining terrorist or criminal behavior inferred from known relationships&lt;/li&gt;
&lt;li&gt;finding a pattern of relationships for fraud detection&lt;/li&gt;
&lt;li&gt;investigating the directed relationships between proteins and genes&lt;/li&gt;
&lt;li&gt;checking which entity has the shortest average connection to a group
of others for cyber security (botnet controller)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href="http://github.com/toddstavish/Cassandra-Graph-Extract"&gt;&lt;strong&gt;The working codebase for this Cassandra / InfiniteGraph integration can be retrieved from GitHub.&lt;/strong&gt;&lt;/a&gt; Forking of the main project is welcome (including downstream updates). If you have any questions or suggestions, please contact &lt;a href="http://twitter.com/toddstavish"&gt;@toddstavish&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/real-time-relationship-analytics-from-large-s"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/real-time-relationship-analytics-from-large-s#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/W5PAZk5rdxg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/real-time-relationship-analytics-from-large-s</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 18 Aug 2010 06:01:00 -0700</pubDate>
      <title>Python code that writes a multibyte value (long/float) over serial to Arduino</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/480etBo8Grg/python-code-that-writes-a-multibyte-value-lon</link>
      <guid isPermaLink="false">http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;div class="data type-python"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="n"&gt;Python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;packIntegerAsULong&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Packs a python 4 byte unsigned integer to an arduino unsigned long&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;struct&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;I&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;    &lt;span class="c"&gt;#should check bounds&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;span class="c"&gt;# To see what it looks like on python side&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15000&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;binascii&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hexlify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;packIntegerAsULong&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&lt;span class="c"&gt;# send and receive via pyserial&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&lt;span class="n"&gt;ser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;serialport&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bps&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;span class="n"&gt;ser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packIntegerAsULong&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ser&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readLine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&lt;span class="n"&gt;Arduino&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;put&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;PDE&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="nb"&gt;long&lt;/span&gt; &lt;span class="n"&gt;readULongFromBytes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;union&lt;/span&gt; &lt;span class="n"&gt;u_tag&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;byte&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="nb"&gt;long&lt;/span&gt; &lt;span class="n"&gt;ulval&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ulval&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="nb"&gt;long&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;readULongFromBytes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DEC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;send&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/480etBo8Grg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/python-code-that-writes-a-multibyte-value-lon</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 11 Aug 2010 08:42:00 -0700</pubDate>
      <title>Visualizing Public Policy Polling Survey Data Of Delaware Voters (August 7-8, 2010)</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/CkM4f4JDJSw/analyzing-and-visualizing-public-policy-polli</link>
      <guid isPermaLink="false">http://blog.stavi.sh/analyzing-and-visualizing-public-policy-polli</guid>
      <description>&lt;p&gt;
	&lt;p&gt;The Daily Kos &lt;a href="http://www.dailykos.com/storyonly/2010/8/10/11161/4340/280/891639" style="text-decoration: none;"&gt;posted&lt;/a&gt; commentary and analysis of a recent Public Policy Polling &lt;a href="http://www.dailykos.com/images/user/3/DelawareResults.pdf" style="text-decoration: none;"&gt;survey&lt;/a&gt; of Delaware voters. The &lt;a href="http://www.dailykos.com/images/user/3/DelawareRawData2.csv" style="text-decoration: none;"&gt;raw data&lt;/a&gt; was also posted. I loaded the raw data into &lt;a href="http://www.socrata.com" style="text-decoration: none;"&gt;Socrata&amp;rsquo;s&lt;/a&gt; social data platform to do some quick visualizations and corroborate the analysis.&lt;/p&gt;
&lt;p&gt;After loading the raw data CSV, the first thing that I did was add &lt;a href="http://en.wikipedia.org/wiki/Metadata" style="text-decoration: none;"&gt;meta-data&lt;/a&gt; into the column labels in Socrata. To do this, I cut and pasted the text&amp;nbsp;descriptions&amp;nbsp;of the questions from the survey PDF to the original raw data column label. You can see the meta information when you hover-over the columns in the &lt;a href="http://socrata.com/d/j7zu-5pf9" style="text-decoration: none;"&gt;tabular view&lt;/a&gt; or in the &lt;a href="http://www.stavi.sh/downloads/PPPDE-meta.jpg" style="text-decoration: none;"&gt;dataset summary&lt;/a&gt;; which also includes usage statistics, attribution to &lt;a href="http://www.publicpolicypolling.com/" style="text-decoration: none;"&gt;PPP&lt;/a&gt;, and the orignal PDF and CSV (embedded as attachments).&lt;/p&gt;
&lt;p&gt;The benefit of adding meta-data is that anyone that looks at the raw data can now understand the values of the columns quickly. Additionally, in Socrata, the meta-information is decoupled from the actual data, so the data values can change without losing the semantic labeling. Generally, the meta information and data can be combined as part of the ingest process, the manual step was only required for this data-set because of the nature of the existing information. Note, my preferred choice for ingesting is via automated workflow using the web services &lt;a href="http://dev.socrata.com/" style="text-decoration: none;"&gt;API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/markos" style="text-decoration: none;"&gt;Markos&amp;rsquo;&lt;/a&gt; commentary focused on questions 8 and 9 respectively:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q8: If the candidates for US Senate this fall were Republican Mike Castle and Democrat Chris Coons, who would you vote for? &lt;/li&gt;
&lt;li&gt;Q9: If the candidates for US Senate this fall were Republican Christine O&amp;rsquo;Donnell and Democrat Chris Coons, who would you vote for? &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To verify the voting result percentages from the survey raw data, I grouped the Question 8 results by vote calculating the sum and percentage (this can all be done in the Socrata User Interface). I could not find the integer vote choice&amp;nbsp;definitions, therefore I had to infer the values from the summary information in the PDF report. Excluding rounding errors, the results are the same, as can be seen in the Social Data Player embedded below:&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/supb-9uvn/y34g-bnf3?cur=bfBOM8TZOdt&amp;amp;from=root" frameborder="0" height="230px" width="500px"&gt;&lt;a href="http://www.socrata.com/Government/PPP-Survey-If-the-DE-candidates-for-US-Senate-this/supb-9uvn" title="PPP Survey: If the DE candidates for US Senate this fall were Republican Mike Castle and Democrat Chris Coons, who would you vote for?" target="_blank"&gt;PPP Survey: If the DE candidates for US Senate this fall were Republican Mike Castle and Democrat Chris Coons, who would you vote for?&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For visualization choices, I plotted Coons vs Castle on total voter favorability:&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/4cv4-kwx2/y34g-bnf3?cur=UPIezVtAdU5&amp;amp;from=root" frameborder="0" height="425px" width="500px"&gt;&lt;a href="http://www.socrata.com/dataset/Coons-D-vs-Castle-R-Favorability-Chart/4cv4-kwx2" title="Coons (D) vs Castle (R) Favorability Chart" target="_blank"&gt;Coons (D) vs Castle (R) Favorability Chart&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Chis Coons charted against favorability by party:&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/v9y5-9wrt/y34g-bnf3?cur=I6jxaV0QfqJ&amp;amp;from=root" frameborder="0" height="425px" width="500px"&gt;&lt;a href="http://www.socrata.com/dataset/Chris-Coons-D-Favorability-By-Party/v9y5-9wrt" title="Chris Coons (D) Favorability By Party" target="_blank"&gt;Chris Coons (D) Favorability By Party&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p /&gt;
&lt;p&gt;Disclaimer: I have no affiliation or preference for any candidate in any State of Delaware&amp;nbsp;political&amp;nbsp;party. My goal for this write-up was to demonstrate how to visualize and share political data. If you have any questions on how to do any of these visualizations, please submit via &lt;a href="http://twitter.com/toddstavish" style="text-decoration: none;"&gt;@toddstavish&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/analyzing-and-visualizing-public-policy-polli"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/analyzing-and-visualizing-public-policy-polli#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/CkM4f4JDJSw" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/analyzing-and-visualizing-public-policy-polli</feedburner:origLink></item>
    <item>
      <pubDate>Sat, 07 Aug 2010 15:41:00 -0700</pubDate>
      <title>Python Arduino Serial Port Text Communication (Send from PDE; Receive via PySerial)</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/Zt5EoaovfYI/python-arduino-serial-port-text-communication</link>
      <guid isPermaLink="false">http://blog.stavi.sh/python-arduino-serial-port-text-communication</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Test code to make sure Python and Arduino are working properly. The PDE sends a string out of the serial port. The Python code uses pyserial to receive it and then prints the message to standard out. Pick it up at GitHub via &amp;ldquo;git clone git://github.com/toddstavish/Python-Arduino-Serial-Text-Send-Receive.git&amp;rdquo; Any questions or suggestions, you can find me&amp;nbsp;&lt;a href="http://twitter.com/toddstavish" style="color: #660000;"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/python-arduino-serial-port-text-communication"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/python-arduino-serial-port-text-communication#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/Zt5EoaovfYI" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/python-arduino-serial-port-text-communication</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 04 Aug 2010 12:29:00 -0700</pubDate>
      <title>Country Spreadsheet List With Latitude, Longitude, ISO 3166 Codes, and Flag Images</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/KE53ZNSchd0/country-list-iso-3166-codes-latitude-longitud</link>
      <guid isPermaLink="false">http://blog.stavi.sh/country-list-iso-3166-codes-latitude-longitud</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Spreadsheet to help create &lt;a href="http://www.socrata.com/dataset/State-Heat-Map/eptn-wnzg"&gt;heatmaps&lt;/a&gt; in Socrata or Google &lt;a href="http://code.google.com/apis/visualization/documentation/gallery/geomap.html"&gt;geomap&lt;/a&gt; visualizations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spreadsheet download:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://stavi.sh/downloads/Countries.xls" target="_blank"&gt;Spreadsheet with flag images (Countries.xls)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Docs:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://spreadsheets.google.com/ccc?key=0At92oU3FPZ4QdEIwVV8tZGJHRmV6VXV3LWpfQThiUnc&amp;amp;hl=en" target="_blank"&gt;Country List Latitude Longitude ISO 3166 Codes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Socrata:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/dataset/Country-List-ISO-3166-Codes-Latitude-Longitude/mnkm-8ram" target="_blank"&gt;Country List ISO 3166 Codes Latitude Longitude&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scribd:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.scribd.com/doc/35371527/Country-List-Latitude-Longitude-Flags-ISO-3166-Codes" target="_blank"&gt;Country List Latitude Longitude Flags ISO 3166 Codes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previews:&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;&lt;iframe scrolling="no" src="http://www.socrata.com/w/mnkm-8ram/y34g-bnf3?cur=rDrJsGpNRlF&amp;amp;from=root" frameborder="0" height="646px" width="760px"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;a href="http://www.socrata.com/dataset/Country-List-ISO-3166-Codes-Latitude-Longitude/mnkm-8ram" _mce_href="http://www.socrata.com/dataset/Country-List-ISO-3166-Codes-Latitude-Longitude/mnkm-8ram" title="Country List ISO 3166 Codes Latitude Longitude" target="_blank"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;Country List ISO 3166 Codes Latitude Longitude&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.scribd.com/doc/35371527/Country-List-Latitude-Longitude-Flags-ISO-3166-Codes" title="View Country List Latitude Longitude Flags ISO 3166 Codes on Scribd" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; display: block; text-decoration: underline;"&gt;Country List Latitude Longitude Flags ISO 3166 Codes &lt;/a&gt; 
&lt;object data="http://d1.scribdassets.com/ScribdViewer.swf" type="application/x-shockwave-flash" height="500" width="500"&gt;
&lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf" /&gt;
&lt;param name="wmode" value="opaque" /&gt;
&lt;param name="bgcolor" value="#ffffff" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;
&lt;param name="FlashVars" value="document_id=35371527&amp;amp;access_key=key-1z7xcoyeca61iydjocwg&amp;amp;page=1&amp;amp;viewMode=list" /&gt; &lt;embed src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=35371527&amp;amp;access_key=key-1z7xcoyeca61iydjocwg&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" wmode="opaque" height="500" width="500"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/country-list-iso-3166-codes-latitude-longitud"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/country-list-iso-3166-codes-latitude-longitud#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/KE53ZNSchd0" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/country-list-iso-3166-codes-latitude-longitud</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 28 Jul 2010 14:35:00 -0700</pubDate>
      <title>Polyglot Persistence: Integrating Low-Latency NoSQL Systems (Cassandra and InfiniteGraph)</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/P2t4_twX30I/polyglot-persistence-integrating-low-latency</link>
      <guid isPermaLink="false">http://blog.stavi.sh/polyglot-persistence-integrating-low-latency</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Cassandra&amp;rsquo;s &lt;a href="http://architects.dzone.com/news/cassandra-adds-hadoop"&gt;integration&lt;/a&gt; to Hadoop&amp;rsquo;s MapReduce is a successful example of two overlapping NoSQL data-stores sharing common features. However, there are some features that are challenging to support across different NoSQL architectures, for instance the expression of the datamodel. Similar problems have been solved before in the programming world with the concept of &lt;a href="http://polyglotprogramming.com/"&gt;polyglot programming&lt;/a&gt;. The database analog, &lt;a href="http://www.infoq.com/news/2009/07/leberknight-polyglot-persistence"&gt;polyglot persistence&lt;/a&gt;, is now gaining widespread acceptance as well.
In an effort to learn more about NoSQL and polyglot storage patterns, I began to wonder if it would be possible to extract data from Cassandra for analysis in a graph database. In other-words, implement my own polyglot persistence application by fusing &lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt; and &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;. In order to understand what each data-store can give to the other, I want to try to define their commonalities. InfiniteGraph and Cassandra share similarities in their underlying architecture. Both data-stores offer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;distributed server nodes (for scalability and availability)&lt;/li&gt;
&lt;li&gt;based on proven underlying technologies &lt;a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html"&gt;Dynamo&lt;/a&gt; and &lt;a href="http://www.objectivity.com/"&gt;Objectivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;configurability for both disk and memory driven deployment&lt;/li&gt;
&lt;li&gt;tuning features for durability, consistency, read / write performance&lt;/li&gt;
&lt;li&gt;avoidance of JOINs&lt;/li&gt;
&lt;li&gt;low-latency solutions&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The direct benefit of these common features are linear scalability, massive write performance, and low operational cost. There are some notable differences between InfiniteGraph and Cassandra though. Presently, Cassandra has more choices for asynchronous operations and the availability options are more mature. Both are considered to be on the rich end of the NoSQL datamodel spectrum (simple key-value stores on the other end). My interpretation is that InfiniteGraph&amp;rsquo;s model and programming interface are more intuitive to the general object oriented programmer. Especially, if your use-cases are &lt;a href="http://bit.ly/bOCy4Q"&gt;graph oriented&lt;/a&gt;: Friend Of A Friend (FOAF) analysis, recommendation engines, fraud detection, correlating IP addresses among log files, clickstream or ad-servering metrics, etc.  
 &lt;/p&gt;

&lt;p&gt;Caveat: I have tried hard to understand each database; the fact is that both of these data-stores are quite comprehensive and summarizing their capabilities is not trivial. Additionally, both data-stores are under active development. I expect InfiniteGraph&amp;rsquo;s asynchronous features will expand and Cassandra&amp;rsquo;s rich client interface will improve as Avro becomes available.  
 &lt;/p&gt;

&lt;p&gt;In general merging of the two datastores was straight-forward and useful. After extracting the &amp;lsquo;friends&amp;rsquo; columns out of Cassandra, I used InfiniteGraph to perform path analysis to find a common friend amongst friends. A feature of the hybrid system that was particularly useful was the ability to to learn from the graph and update the original Cassandra store. For instance, learning a shorter path between friends in InfiniteGraph and then updating the columns in Cassandra. For a friend suggestion application, the shortest might be the critical one. However, InfiniteGraph can hop vertexes and edges quickly. Therefore, calculating the longer paths was possible too. Alternative longer path are useful for certain applications like tracking money laundering or other law enforcement needs. In general, I found that I could easily try multi-path analysis, update Cassandra, then run my original queries in Cassandra over the new data. As a potential followup post, I plan to try to use my new hybrid NoSQL database as a caching system. Using InfiniteGraph&amp;rsquo;s streaming capabilities to augment Cassandra&amp;rsquo;s &lt;a href="http://wiki.apache.org/cassandra/CassandraLimitations"&gt;limitation&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt; 
The working prototype can be found in GitHub via &amp;ldquo;git clone &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:toddstavish/Cassandra-Graph-Extract.git.&amp;rdquo; If you have any questions or suggestions, you can find me &lt;a href="http://twitter.com/toddstavish"&gt;here&lt;/a&gt;. I look forward to trying this &lt;a href="http://github.com/toddstavish/Cassandra-Graph-Extract"&gt;code base&lt;/a&gt; against a larger dataset with multinode deployments on both sides of the InfiniteGraph / Cassandra equation.
 &lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/polyglot-persistence-integrating-low-latency"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/polyglot-persistence-integrating-low-latency#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/P2t4_twX30I" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/polyglot-persistence-integrating-low-latency</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 22 Jul 2010 06:53:00 -0700</pubDate>
      <title>Building a Cassandra Application with Maven</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/9cL9ak4G5QE/building-a-cassandra-application-with-maven</link>
      <guid isPermaLink="false">http://blog.stavi.sh/building-a-cassandra-application-with-maven</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Here are the steps to get the &lt;a href="http://en.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt; data store, &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;, working with a &lt;a href="http://maven.apache.org/index.html"&gt;Maven&lt;/a&gt; project management environment. I used &lt;a href="http://twitter.com/sodesocompany/"&gt;Ronald Mathies'&lt;/a&gt; sample Cassandra &lt;a href="http://www.sodeso.nl/?p=251"&gt;application&lt;/a&gt; for the code base.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=nl.sodeso.blog -DartifactId=Authors&lt;/li&gt;
&lt;li&gt;Use this &lt;a href="http://gist.github.com/484659"&gt;POM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Copy Author.java to src/main/java/nl/sodeso/blog&lt;/li&gt;
&lt;li&gt;mvn compile&lt;/li&gt;
&lt;li&gt;/opt/apache-cassandra-0.6.3/bin/cassandra -f&lt;/li&gt;
&lt;li&gt;mvn exec:exec&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;If you are new to Maven, it might be easier to get the entirety from GitHub via &amp;ldquo;git clone &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:toddstavish/Cassandra-Maven-Setup.git.&amp;rdquo; If you have any questions or suggestions, you can find me &lt;a href="http://twitter.com/toddstavish"&gt;here&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/building-a-cassandra-application-with-maven"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/building-a-cassandra-application-with-maven#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/9cL9ak4G5QE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/building-a-cassandra-application-with-maven</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 16 Jul 2010 17:05:36 -0700</pubDate>
      <title>Socrata on the EPA homepage</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/eB2SWyAA-mU/socrata-on-the-epa-homepage</link>
      <guid isPermaLink="false">http://blog.stavi.sh/socrata-on-the-epa-homepage</guid>
      <description>&lt;p&gt;
	&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/toddstavish/HxRNGW67k8Ptx7LYZPc8NtXSw0afEfjQCsRGvhP4XeatMxjUikHECVzXtvkj/US_Environmental_Protection_Ag.png"&gt;&lt;img alt="Us_environmental_protection_ag" height="369" src="http://posterous.com/getfile/files.posterous.com/toddstavish/Q5Tt5ehxdDyMpN76DeglkOQjxIVTov5qh4Z52IlXJlBgVoGBz33JuVlPOzl4/US_Environmental_Protection_Ag.png.scaled.500.jpg" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;

	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/socrata-on-the-epa-homepage"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/socrata-on-the-epa-homepage#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/eB2SWyAA-mU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
      <media:content type="image/png" height="602" width="816" url="http://getfile3.posterous.com/getfile/files.posterous.com/toddstavish/HxRNGW67k8Ptx7LYZPc8NtXSw0afEfjQCsRGvhP4XeatMxjUikHECVzXtvkj/US_Environmental_Protection_Ag.png">
        <media:thumbnail height="369" width="500" url="http://getfile4.posterous.com/getfile/files.posterous.com/toddstavish/Q5Tt5ehxdDyMpN76DeglkOQjxIVTov5qh4Z52IlXJlBgVoGBz33JuVlPOzl4/US_Environmental_Protection_Ag.png.scaled.500.jpg" />
      </media:content>
    <feedburner:origLink>http://blog.stavi.sh/socrata-on-the-epa-homepage</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 16 Jul 2010 09:56:00 -0700</pubDate>
      <title>Building an InfiniteGraph Application with Maven</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/Z0ZCY9RK7u0/infinitegraph-maven-on-osx</link>
      <guid isPermaLink="false">http://blog.stavi.sh/infinitegraph-maven-on-osx</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Here are the steps to get the graph data store, &lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt;, working with a &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; project management environment. The &lt;a href="http://blog.stavi.sh/infinitegraph-first-look"&gt;codebase&lt;/a&gt; is a small social network application.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.infinitegraph.sample -DartifactId=GraphAPISample&lt;/li&gt;
&lt;li&gt;Use this &lt;a href="http://gist.github.com/484436"&gt;POM w/ filesystem dependency&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Copy GraphAPISample.java to src/main/java/com/infinitegraph/sample&lt;/li&gt;
&lt;li&gt;Add GraphAPISample to package com.infinitegraph.sample&lt;/li&gt;
&lt;li&gt;Create a resources directory for your properties file with &amp;lsquo;mkdir src/main/resources&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Copy SampleGraphProperties.properties to the resources directory. Note, this will move to the target directory during the compile step, so it can be picked up at runtime without path qualification. Therefore, take out the path in your code, for example:  GraphFactory.open(&amp;ldquo;SampleGraph&amp;rdquo;, &amp;ldquo;SampleGraphProperties.properties&amp;rdquo;);&lt;/li&gt;
&lt;li&gt;mvn compile&lt;/li&gt;
&lt;li&gt;mvn exec:exec&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Make sure you have the &lt;a href="http://blog.infinitegraph.com/2010/07/16/concurrency-control-lockserver-ls/"&gt;distributed lockserver&lt;/a&gt; running in advance and source the &lt;a href="http://stavi.sh/demos/infinitegraph/mvn/IGConfig"&gt;IGConfg script&lt;/a&gt;. If you are new to Maven, it might be easier to download &lt;a href="http://stavi.sh/demos/infinitegraph/mvn/GraphAPISample.zip"&gt;my whole setup&lt;/a&gt;. Or get it from GitHub via &amp;ldquo;git clone &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:toddstavish/InfiniteGraph-Maven-Example-Setup.git.&amp;rdquo; If you have any suggestions or questions, you can reach me &lt;a href="http://twitter.com/toddstavish"&gt;here&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/infinitegraph-maven-on-osx"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/infinitegraph-maven-on-osx#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/Z0ZCY9RK7u0" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/infinitegraph-maven-on-osx</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 14 Jul 2010 07:05:00 -0700</pubDate>
      <title>InfiniteGraph: Memory Model And Graph Partitioning</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/EpLP2sryuwY/infinitegraph-memory-model-and-graph-partitio</link>
      <guid isPermaLink="false">http://blog.stavi.sh/infinitegraph-memory-model-and-graph-partitio</guid>
      <description>&lt;p&gt;
	&lt;p&gt;A few questions have arisen on the
&lt;a href="http://bit.ly/9XvzXQ"&gt;partitioning&lt;/a&gt; /
&lt;a href="http://bit.ly/dg44nr"&gt;sharding&lt;/a&gt;
/ &lt;a href="http://en.wikipedia.org/wiki/Software_distribution"&gt;distribution&lt;/a&gt; features of the &lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt; &lt;a href="http://bit.ly/aigcbj"&gt;demo
code&lt;/a&gt;. I thought I&amp;rsquo;d take a moment to help
explain it better.&lt;/p&gt;

&lt;p&gt;First, &lt;a href="http://www.linkedin.com/in/arvindmg"&gt;Arvind&lt;/a&gt; posted a good
description on InfiniteGraph&amp;rsquo;s &lt;a href="http://bit.ly/9YP0w6"&gt;underlying
plumbing&lt;/a&gt;. InfiniteGraph is based on
&lt;a href="http://www.objectivity.com/"&gt;Objectivity&lt;/a&gt;. Kind of like other &lt;a href="http://en.wikipedia.org/wiki/Low_latency"&gt;low
latency&lt;/a&gt; database
architectures such as &lt;a href="http://hbase.apache.org/"&gt;HBase&lt;/a&gt; on
&lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt; or
&lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt; on
&lt;a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html"&gt;Dynamo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Underneath an InfiniteGraph database instance is an Objectivity
federated database. Objectivity has deep experience building
&lt;a href="http://www.objectivity.com/pages/downloads/whitepaper/html/slac.html"&gt;petascale database
architectures&lt;/a&gt;.
Logically, a federated database, looks like a single database
instance. Databases can be distributed accross servers or disks with
all of the logical to physical mapping done by the database engine.
Each database is a peer so there is no shared query engine or
centralized server. Threads have their own database cache, so database
requests stream directly from servers to threads without contention.
The federated database model allows for edges to transparently span
databases and subgraphs are delivered in pages to optimize I/O and
network traffic.&lt;/p&gt;

&lt;p&gt;InfiniteGraph abstracts this idea even further programmatically. There
is no thought of distribution in the application code. The placement
managers take care of it all. The plan is that InfiniteGraph will
provide a number of common placement algorithms. You will have plugin
classes that are chosen at runtime from the configuration properties.
The default multidatabase placement manager that I used in my example,
basically streams the graph in sequentially per thread. The database
the default multidatabase placement chooses depends on the capacity of storage remaining, or if there is an &lt;a href="http://blog.infinitegraph.com/2010/07/16/concurrency-control-lockserver-ls/"&gt;open lock&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;InfinteGraph&amp;rsquo;s partitioning is not a magic bullet. Partitioning will open doors scalability-wise for graph
persistence and optimize a difficult problem. However, there are
&lt;a href="http://en.wikipedia.org/wiki/Trade-off"&gt;tradeoffs&lt;/a&gt; that need to be
made moving from an embedded graph instance to a distributed one, for
instance, colocation or clustering advantages. If you have any suggestions or questions, you can reach me &lt;a href="http://twitter.com/toddstavish"&gt;here&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/infinitegraph-memory-model-and-graph-partitio"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/infinitegraph-memory-model-and-graph-partitio#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/EpLP2sryuwY" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/infinitegraph-memory-model-and-graph-partitio</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 13 Jul 2010 05:17:00 -0700</pubDate>
      <title>Social Graph Persistence In A Java Graph Database</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/jTMYZi9DA5E/social-graph-persistence-in-a-java-graph-data</link>
      <guid isPermaLink="false">http://blog.stavi.sh/social-graph-persistence-in-a-java-graph-data</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Graph databases are excellent for storing and analyzing social network
information.  However, I could not find graphDB sample code that
generates more than a dozen or so vertices and edges. In this example,
I will demonstrate how to construct and store a synthetic social graph
of 9,100,260 (vertices, edges, and properties). The synthetic graph
has 151,671 people nodes which is a hard limit based on the number of
artificial names that I generated. However, you could increase the
edge connections or edge properties to expand the graph further, both
are configurable variables.&lt;/p&gt;

&lt;p&gt;To generate the artificial names, I downloaded &lt;a href="http://bit.ly/db9cGb"&gt;Census name
lists&lt;/a&gt; and combined the male and female first
names with the last names list. You can download the completed list
&lt;a href="http://stavi.sh/downloads/names.txt"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The persistent graph is distributed across multiple database instances
(aka graph partitioning or graph sharding) to provide scalability. To
build the sharded graph, I downloaded and installed the &lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph
Java Graph Database&lt;/a&gt;. The next step is
to set placement strategies that allow for multidatabase placement
(set in the &lt;a href="http://gist.github.com/472032"&gt;properties file&lt;/a&gt; for the
graph). Graph placement is configured at runtime with customization
possible by implementing your own placement classes. I just used the &lt;a href="http://post.ly/n9fQ"&gt;default multidatabase placement&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are the exact properties that need to be set for multidatabase placement:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-text"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;# Placement Strategy &lt;/div&gt;&lt;div class="line" id="LC2"&gt;InfiniteGraph.Placement.ImplClass=com.objy.graph.impl.plugins.mdp.MultipleDatabasePlacement&lt;/div&gt;&lt;div class="line" id="LC3"&gt;InfiniteGraph.Placement.MultipleDatabasePlacement.ConfigString=;1,;1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;The code loops through the name list file generating people vertices.
A second loop goes through the people nodes connecting them together
using a random algorithm. The social network context is one person
pays another with different kinds of transactions: cash, wire, etc.
The relationship edges between people are &lt;em&gt;paysTo&lt;/em&gt; with a polymorphic
collection of &lt;em&gt;TransactionType&lt;/em&gt;. The collection along the edge stores
instances of the specific payment type between the sender and
recipient.&lt;/p&gt;

&lt;p&gt;To summarize what this sample shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a large synthetic social graph&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edges with polymorphic collections&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Graph sharding over multiple databases&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Code:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-java"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;span rel="#L75" id="L75"&gt;75&lt;/span&gt;
&lt;span rel="#L76" id="L76"&gt;76&lt;/span&gt;
&lt;span rel="#L77" id="L77"&gt;77&lt;/span&gt;
&lt;span rel="#L78" id="L78"&gt;78&lt;/span&gt;
&lt;span rel="#L79" id="L79"&gt;79&lt;/span&gt;
&lt;span rel="#L80" id="L80"&gt;80&lt;/span&gt;
&lt;span rel="#L81" id="L81"&gt;81&lt;/span&gt;
&lt;span rel="#L82" id="L82"&gt;82&lt;/span&gt;
&lt;span rel="#L83" id="L83"&gt;83&lt;/span&gt;
&lt;span rel="#L84" id="L84"&gt;84&lt;/span&gt;
&lt;span rel="#L85" id="L85"&gt;85&lt;/span&gt;
&lt;span rel="#L86" id="L86"&gt;86&lt;/span&gt;
&lt;span rel="#L87" id="L87"&gt;87&lt;/span&gt;
&lt;span rel="#L88" id="L88"&gt;88&lt;/span&gt;
&lt;span rel="#L89" id="L89"&gt;89&lt;/span&gt;
&lt;span rel="#L90" id="L90"&gt;90&lt;/span&gt;
&lt;span rel="#L91" id="L91"&gt;91&lt;/span&gt;
&lt;span rel="#L92" id="L92"&gt;92&lt;/span&gt;
&lt;span rel="#L93" id="L93"&gt;93&lt;/span&gt;
&lt;span rel="#L94" id="L94"&gt;94&lt;/span&gt;
&lt;span rel="#L95" id="L95"&gt;95&lt;/span&gt;
&lt;span rel="#L96" id="L96"&gt;96&lt;/span&gt;
&lt;span rel="#L97" id="L97"&gt;97&lt;/span&gt;
&lt;span rel="#L98" id="L98"&gt;98&lt;/span&gt;
&lt;span rel="#L99" id="L99"&gt;99&lt;/span&gt;
&lt;span rel="#L100" id="L100"&gt;100&lt;/span&gt;
&lt;span rel="#L101" id="L101"&gt;101&lt;/span&gt;
&lt;span rel="#L102" id="L102"&gt;102&lt;/span&gt;
&lt;span rel="#L103" id="L103"&gt;103&lt;/span&gt;
&lt;span rel="#L104" id="L104"&gt;104&lt;/span&gt;
&lt;span rel="#L105" id="L105"&gt;105&lt;/span&gt;
&lt;span rel="#L106" id="L106"&gt;106&lt;/span&gt;
&lt;span rel="#L107" id="L107"&gt;107&lt;/span&gt;
&lt;span rel="#L108" id="L108"&gt;108&lt;/span&gt;
&lt;span rel="#L109" id="L109"&gt;109&lt;/span&gt;
&lt;span rel="#L110" id="L110"&gt;110&lt;/span&gt;
&lt;span rel="#L111" id="L111"&gt;111&lt;/span&gt;
&lt;span rel="#L112" id="L112"&gt;112&lt;/span&gt;
&lt;span rel="#L113" id="L113"&gt;113&lt;/span&gt;
&lt;span rel="#L114" id="L114"&gt;114&lt;/span&gt;
&lt;span rel="#L115" id="L115"&gt;115&lt;/span&gt;
&lt;span rel="#L116" id="L116"&gt;116&lt;/span&gt;
&lt;span rel="#L117" id="L117"&gt;117&lt;/span&gt;
&lt;span rel="#L118" id="L118"&gt;118&lt;/span&gt;
&lt;span rel="#L119" id="L119"&gt;119&lt;/span&gt;
&lt;span rel="#L120" id="L120"&gt;120&lt;/span&gt;
&lt;span rel="#L121" id="L121"&gt;121&lt;/span&gt;
&lt;span rel="#L122" id="L122"&gt;122&lt;/span&gt;
&lt;span rel="#L123" id="L123"&gt;123&lt;/span&gt;
&lt;span rel="#L124" id="L124"&gt;124&lt;/span&gt;
&lt;span rel="#L125" id="L125"&gt;125&lt;/span&gt;
&lt;span rel="#L126" id="L126"&gt;126&lt;/span&gt;
&lt;span rel="#L127" id="L127"&gt;127&lt;/span&gt;
&lt;span rel="#L128" id="L128"&gt;128&lt;/span&gt;
&lt;span rel="#L129" id="L129"&gt;129&lt;/span&gt;
&lt;span rel="#L130" id="L130"&gt;130&lt;/span&gt;
&lt;span rel="#L131" id="L131"&gt;131&lt;/span&gt;
&lt;span rel="#L132" id="L132"&gt;132&lt;/span&gt;
&lt;span rel="#L133" id="L133"&gt;133&lt;/span&gt;
&lt;span rel="#L134" id="L134"&gt;134&lt;/span&gt;
&lt;span rel="#L135" id="L135"&gt;135&lt;/span&gt;
&lt;span rel="#L136" id="L136"&gt;136&lt;/span&gt;
&lt;span rel="#L137" id="L137"&gt;137&lt;/span&gt;
&lt;span rel="#L138" id="L138"&gt;138&lt;/span&gt;
&lt;span rel="#L139" id="L139"&gt;139&lt;/span&gt;
&lt;span rel="#L140" id="L140"&gt;140&lt;/span&gt;
&lt;span rel="#L141" id="L141"&gt;141&lt;/span&gt;
&lt;span rel="#L142" id="L142"&gt;142&lt;/span&gt;
&lt;span rel="#L143" id="L143"&gt;143&lt;/span&gt;
&lt;span rel="#L144" id="L144"&gt;144&lt;/span&gt;
&lt;span rel="#L145" id="L145"&gt;145&lt;/span&gt;
&lt;span rel="#L146" id="L146"&gt;146&lt;/span&gt;
&lt;span rel="#L147" id="L147"&gt;147&lt;/span&gt;
&lt;span rel="#L148" id="L148"&gt;148&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.io.IOException&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.ArrayList&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.Iterator&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.Random&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.db.app.ooObj&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.db.util.ooMap&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.AccessMode&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.BaseEdge&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.BaseVertex&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.EdgeKind&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.GraphDatabase&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.GraphFactory&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.objy.graph.Transaction&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ShardedSocialGraph&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&lt;span class="o"&gt;{&lt;/span&gt;	&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;	&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="n"&gt;IOException&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;		&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numberOfPeople&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;            &lt;span class="c1"&gt;// Max: 151,671&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;		&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numberOfRecipients&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt;		&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;graphName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;ShardedGraph&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;		&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;graph.properties&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;		&lt;span class="n"&gt;Transaction&lt;/span&gt; &lt;span class="n"&gt;tx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	        &lt;span class="n"&gt;GraphDatabase&lt;/span&gt; &lt;span class="n"&gt;graphDB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;		&lt;span class="k"&gt;try&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt;		&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	  &lt;span class="c1"&gt;// Create graph database&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	  &lt;span class="n"&gt;GraphFactory&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;create&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;graphName&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC32"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	  &lt;span class="n"&gt;graphDB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GraphFactory&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;open&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;graphName&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;/div&gt;&lt;div class="line" id="LC34"&gt;	          &lt;span class="c1"&gt;// Generate people&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC35"&gt;		  &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Starting people ingest.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;            &lt;/div&gt;&lt;div class="line" id="LC36"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FileLoader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;load&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;names.txt&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numberOfPeople&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;  &lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;Iterator&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;namesItr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;iterator&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Long&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;people&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Long&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;tx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;beginTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AccessMode&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;READ_WRITE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	          &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;peopleCnt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;peopleCnt&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;numberOfPeople&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;peopleCnt&lt;/span&gt;&lt;span class="o"&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="o"&gt;{&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC42"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;namesItr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;next&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;Person&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addVertex&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getId&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	          &lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC47"&gt;		  &lt;span class="n"&gt;tx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;commit&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC48"&gt;		  &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Ingested &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;numberOfPeople&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;quot; people.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;  &lt;/div&gt;&lt;div class="line" id="LC49"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC50"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="c1"&gt;// Generate synthetic social graph (random associations)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;Random&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Random&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="n"&gt;Iterator&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Long&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;peopleItr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;iterator&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC53"&gt;		  &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Generating synthetic social graph.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC54"&gt;		  &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Connecting &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;numberOfPeople&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;quot; senders with &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;numberOfRecipients&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;quot; recipients.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC55"&gt;	   	  &lt;span class="n"&gt;tx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;beginTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AccessMode&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;READ_WRITE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;peopleItr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hasNext&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		  &lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC58"&gt;			&lt;span class="n"&gt;Person&lt;/span&gt; &lt;span class="n"&gt;person1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getVertex&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;nextInt&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numberOfPeople&lt;/span&gt;&lt;span class="o"&gt;)));&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC59"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;numberOfRecipients&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC60"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC61"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			        &lt;span class="n"&gt;Person&lt;/span&gt; &lt;span class="n"&gt;person2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Person&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getVertex&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;people&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;nextInt&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numberOfPeople&lt;/span&gt;&lt;span class="o"&gt;)));&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC62"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;				&lt;span class="n"&gt;paysTo&lt;/span&gt; &lt;span class="n"&gt;pays&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;paysTo&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC63"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;				&lt;span class="n"&gt;person1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addEdge&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pays&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EdgeKind&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;BIDIRECTIONAL&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC64"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;				&lt;span class="n"&gt;pays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Wire&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;trx1&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;				&lt;span class="n"&gt;pays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Paypal&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;trx2&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC66"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;				&lt;span class="n"&gt;pays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Cash&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;trx3&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC67"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;			&lt;span class="n"&gt;peopleItr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;next&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC69"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		   &lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC71"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="c1"&gt;// Commit&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC72"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;tx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;commit&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC73"&gt;		   &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Completed ingest.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC74"&gt;		&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC75"&gt;		&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC76"&gt;		&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC77"&gt;		    &lt;span class="n"&gt;e1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;printStackTrace&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC78"&gt;		    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tx&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC79"&gt;		    	&lt;span class="n"&gt;tx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;complete&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC80"&gt;		    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;graphDB&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC81"&gt;		        &lt;span class="n"&gt;graphDB&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;close&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC82"&gt;		&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC83"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC84"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC85"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC86"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;BaseVertex&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC87"&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC88"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC89"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC90"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Person&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC91"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC92"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;setName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC93"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC94"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC95"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;getName&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC96"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC97"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;fetch&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC98"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC99"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC100"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC101"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC102"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;{&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC103"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;markModified&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC104"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC105"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;}&lt;/span&gt; &lt;/div&gt;&lt;div class="line" id="LC106"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC107"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="nd"&gt;@Override&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC108"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC109"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC110"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC111"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC112"&gt;&lt;span class="o"&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC113"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC114"&gt;&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;FinancialEdge&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;BaseEdge&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC115"&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC116"&gt;	&lt;span class="n"&gt;ooMap&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC117"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC118"&gt;	&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;addTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TransactionType&lt;/span&gt; &lt;span class="n"&gt;trxn&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;trxnName&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC119"&gt;&lt;span class="o"&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC120"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC121"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;paysTo&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;FinancialEdge&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC122"&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC123"&gt;	&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;paysTo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC124"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC125"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ooMap&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC126"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC127"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC128"&gt;	&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;addTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TransactionType&lt;/span&gt; &lt;span class="n"&gt;trxn&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;trxnName&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC129"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC130"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="n"&gt;markModified&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC131"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isPersistent&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC132"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;cluster&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC133"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trxn&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trxnName&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC134"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC135"&gt;&lt;span class="o"&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC136"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC137"&gt;&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TransactionType&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ooObj&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC138"&gt;&lt;span class="o"&gt;{};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC139"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC140"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Wire&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;TransactionType&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC141"&gt;&lt;span class="o"&gt;{};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC142"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC143"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Paypal&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;TransactionType&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC144"&gt;&lt;span class="o"&gt;{};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC145"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC146"&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Cash&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;TransactionType&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC147"&gt;&lt;span class="o"&gt;{};&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC148"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/social-graph-persistence-in-a-java-graph-data"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/social-graph-persistence-in-a-java-graph-data#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/jTMYZi9DA5E" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/social-graph-persistence-in-a-java-graph-data</feedburner:origLink></item>
    <item>
      <pubDate>Sun, 11 Jul 2010 19:53:00 -0700</pubDate>
      <title>Graph Sharding In InfiniteGraph Database</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/NJ1O5jOvFpY/java-graph-sharding-in-infinitegraph-database</link>
      <guid isPermaLink="false">http://blog.stavi.sh/java-graph-sharding-in-infinitegraph-database</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I have been experimenting with
&lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt; quite a bit
lately. One of my goals was to use InfiniteGraph&amp;rsquo;s distribution
capabilities (aka graph partitioning or graph sharding). To shard a
graph in InfiniteGraph, you need to set a placement strategy that enables multidatabase
placement (set in the &lt;a href="http://gist.github.com/472032"&gt;properties file&lt;/a&gt; for the graph).&lt;/p&gt;

&lt;p&gt;Here are the specific properties that need to be set for multidatabase placement:&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-text"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;# Placement Strategy &lt;/div&gt;&lt;div class="line" id="LC2"&gt;InfiniteGraph.Placement.ImplClass=com.objy.graph.impl.plugins.mdp.MultipleDatabasePlacement&lt;/div&gt;&lt;div class="line" id="LC3"&gt;InfiniteGraph.Placement.MultipleDatabasePlacement.ConfigString=;1,;1&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Runtime configuration means that graph distribution is also decided at runtime. Eventually you&amp;rsquo;ll be able
to develop your own graph placement classes to shard anyway you want. InfiniteGraph will also be
providing a selection for common sharding patterns.&lt;/p&gt;

&lt;p&gt;Another feature I wanted to try was InfiniteGraph&amp;rsquo;s thread model. The thread model is very flexible. Basically, each thread has its own database cache and locking, which means threads can operate on different parts of the graph simultaneously. There is no shared query engine or centralized cache. The architecture was designed for horizontal scaling by adding more database shards or more threads. Caches are pooled for efficient memory use. Threads can also pass their cache to another thread for pipelining.&lt;/p&gt;

&lt;p&gt;In the read case, threads can operate on the same parts of the graph without conflict. For updates, other threads are locked out until the update completes. If there is conflict, the thread can be configured to wait for the lock to release or move on. InfiniteGraph also detects deadlocks and race conditions. Eventually, InfiniteGraph will provide a work queue that will take care of all of the conflict resolution for you. The objective is to store the graph as it is ingested in any form
and then work out the conflicts for you later.&lt;/p&gt;

&lt;p&gt;As I was coding this sample application, I thought I would try to create an edge that holds a
collection. I wanted to have one edge between two vertices that stored several similar typed properties (decided at runtime). The example I came up with is if one person pays another
with different kinds of transactions, for instance using paypal, giving cash, or a wire transfer. I wanted to have a single edge of type paysTo with a polymorphic collection
of TransactionType&amp;rsquo;s that store instances of the specific payment
type.&lt;/p&gt;

&lt;p&gt;To experiment, I created a synthetic dataset from US Census information. I used a list of the most popular surnames and combined them with common first names. I ended up with a
&lt;a href="http://stavi.sh/downloads/names.txt"&gt;unique list of names&lt;/a&gt; that is
151,671 entries long. This is great for creating synthetic social
networks. I connect the people in my fake social network randomly.&lt;/p&gt;

&lt;p&gt;My sample application does have a tendency to create deadlocks (which InfiniteGraph detects). I need to think of a better way of
ingesting my social network to avoid this issue. It is really an artifact of the simple code that I
wrote and not a reflection of InfiniteGraph capabilities or shortcomings.
If anyone can think of a better approach or a more realistic use-case,
please let me know. I&amp;rsquo;d be happy to try it a different way. I also
want to thank &lt;a href="http://au.linkedin.com/in/darrenjohnwood"&gt;Darren Wood&lt;/a&gt;,
the lead architect of InfiniteGraph for answering my questions. I am looking forward to future releases and learning how to use InfiniteGraph better.&lt;/p&gt;

&lt;p&gt;To summarize what this sample shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a synthetic social graph&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edges with polymorphic collections&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Graph sharding over multiple databases&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multithreaded graph ingest&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Here&amp;rsquo;s the code if you are interested.&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-text"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;span rel="#L75" id="L75"&gt;75&lt;/span&gt;
&lt;span rel="#L76" id="L76"&gt;76&lt;/span&gt;
&lt;span rel="#L77" id="L77"&gt;77&lt;/span&gt;
&lt;span rel="#L78" id="L78"&gt;78&lt;/span&gt;
&lt;span rel="#L79" id="L79"&gt;79&lt;/span&gt;
&lt;span rel="#L80" id="L80"&gt;80&lt;/span&gt;
&lt;span rel="#L81" id="L81"&gt;81&lt;/span&gt;
&lt;span rel="#L82" id="L82"&gt;82&lt;/span&gt;
&lt;span rel="#L83" id="L83"&gt;83&lt;/span&gt;
&lt;span rel="#L84" id="L84"&gt;84&lt;/span&gt;
&lt;span rel="#L85" id="L85"&gt;85&lt;/span&gt;
&lt;span rel="#L86" id="L86"&gt;86&lt;/span&gt;
&lt;span rel="#L87" id="L87"&gt;87&lt;/span&gt;
&lt;span rel="#L88" id="L88"&gt;88&lt;/span&gt;
&lt;span rel="#L89" id="L89"&gt;89&lt;/span&gt;
&lt;span rel="#L90" id="L90"&gt;90&lt;/span&gt;
&lt;span rel="#L91" id="L91"&gt;91&lt;/span&gt;
&lt;span rel="#L92" id="L92"&gt;92&lt;/span&gt;
&lt;span rel="#L93" id="L93"&gt;93&lt;/span&gt;
&lt;span rel="#L94" id="L94"&gt;94&lt;/span&gt;
&lt;span rel="#L95" id="L95"&gt;95&lt;/span&gt;
&lt;span rel="#L96" id="L96"&gt;96&lt;/span&gt;
&lt;span rel="#L97" id="L97"&gt;97&lt;/span&gt;
&lt;span rel="#L98" id="L98"&gt;98&lt;/span&gt;
&lt;span rel="#L99" id="L99"&gt;99&lt;/span&gt;
&lt;span rel="#L100" id="L100"&gt;100&lt;/span&gt;
&lt;span rel="#L101" id="L101"&gt;101&lt;/span&gt;
&lt;span rel="#L102" id="L102"&gt;102&lt;/span&gt;
&lt;span rel="#L103" id="L103"&gt;103&lt;/span&gt;
&lt;span rel="#L104" id="L104"&gt;104&lt;/span&gt;
&lt;span rel="#L105" id="L105"&gt;105&lt;/span&gt;
&lt;span rel="#L106" id="L106"&gt;106&lt;/span&gt;
&lt;span rel="#L107" id="L107"&gt;107&lt;/span&gt;
&lt;span rel="#L108" id="L108"&gt;108&lt;/span&gt;
&lt;span rel="#L109" id="L109"&gt;109&lt;/span&gt;
&lt;span rel="#L110" id="L110"&gt;110&lt;/span&gt;
&lt;span rel="#L111" id="L111"&gt;111&lt;/span&gt;
&lt;span rel="#L112" id="L112"&gt;112&lt;/span&gt;
&lt;span rel="#L113" id="L113"&gt;113&lt;/span&gt;
&lt;span rel="#L114" id="L114"&gt;114&lt;/span&gt;
&lt;span rel="#L115" id="L115"&gt;115&lt;/span&gt;
&lt;span rel="#L116" id="L116"&gt;116&lt;/span&gt;
&lt;span rel="#L117" id="L117"&gt;117&lt;/span&gt;
&lt;span rel="#L118" id="L118"&gt;118&lt;/span&gt;
&lt;span rel="#L119" id="L119"&gt;119&lt;/span&gt;
&lt;span rel="#L120" id="L120"&gt;120&lt;/span&gt;
&lt;span rel="#L121" id="L121"&gt;121&lt;/span&gt;
&lt;span rel="#L122" id="L122"&gt;122&lt;/span&gt;
&lt;span rel="#L123" id="L123"&gt;123&lt;/span&gt;
&lt;span rel="#L124" id="L124"&gt;124&lt;/span&gt;
&lt;span rel="#L125" id="L125"&gt;125&lt;/span&gt;
&lt;span rel="#L126" id="L126"&gt;126&lt;/span&gt;
&lt;span rel="#L127" id="L127"&gt;127&lt;/span&gt;
&lt;span rel="#L128" id="L128"&gt;128&lt;/span&gt;
&lt;span rel="#L129" id="L129"&gt;129&lt;/span&gt;
&lt;span rel="#L130" id="L130"&gt;130&lt;/span&gt;
&lt;span rel="#L131" id="L131"&gt;131&lt;/span&gt;
&lt;span rel="#L132" id="L132"&gt;132&lt;/span&gt;
&lt;span rel="#L133" id="L133"&gt;133&lt;/span&gt;
&lt;span rel="#L134" id="L134"&gt;134&lt;/span&gt;
&lt;span rel="#L135" id="L135"&gt;135&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;import java.util.ArrayList;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;import java.util.Iterator;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;import java.util.Random;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;import com.objy.db.app.ooObj;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;import com.objy.db.util.ooMap;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;import com.objy.graph.AccessMode;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;import com.objy.graph.BaseEdge;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;import com.objy.graph.BaseVertex;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;import com.objy.graph.EdgeKind;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;import com.objy.graph.GraphDatabase;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;import com.objy.graph.Transaction;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt;class IngestThread implements Runnable&lt;/div&gt;&lt;div class="line" id="LC15"&gt;{&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private int numberOfRecipients = 0;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private GraphDatabase graphDB = null;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private ArrayList&amp;lt;Long&amp;gt; people = null;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public IngestThread(GraphDatabase graph, ArrayList&amp;lt;Long&amp;gt; peopleList, int numOfRecipients)&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC22"&gt;	graphDB = graph;&lt;/div&gt;&lt;div class="line" id="LC23"&gt;	numberOfRecipients = numOfRecipients;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;	people = peopleList;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() &lt;/div&gt;&lt;div class="line" id="LC29"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC30"&gt;	Transaction tx = null;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;	try&lt;/div&gt;&lt;div class="line" id="LC32"&gt;	{&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Start a transaction&lt;/div&gt;&lt;div class="line" id="LC34"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx = graphDB.beginTransaction(AccessMode.READ_WRITE);&lt;/div&gt;&lt;div class="line" id="LC35"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC36"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Generate synthetic social graph (random associations)&lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Random random = new Random();&lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int numberOfPeople = people.size();&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Iterator&amp;lt;Long&amp;gt; peopleItr = people.iterator();&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Generating synthetic social graph in thread [&amp;quot; + Thread.currentThread().getId() + &amp;quot;]&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Connecting &amp;quot; + numberOfPeople + &amp;quot; senders with &amp;quot; + numberOfRecipients + &amp;quot; recipients.&amp;quot;);			&lt;/div&gt;&lt;div class="line" id="LC42"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	    while (peopleItr.hasNext())&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	    {&lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person person1 = (Person)graphDB.getVertex(people.get(random.nextInt(numberOfPeople)));&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		for (int i = 0; i &amp;lt; numberOfRecipients; i++)&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		{&lt;/div&gt;&lt;div class="line" id="LC47"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    Person person2 =  (Person)graphDB.getVertex(people.get(random.nextInt(numberOfPeople)));&lt;/div&gt;&lt;div class="line" id="LC48"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    paysTo pays = new paysTo();&lt;/div&gt;&lt;div class="line" id="LC49"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    person1.addEdge(pays, person2, EdgeKind.BIDIRECTIONAL);&lt;/div&gt;&lt;div class="line" id="LC50"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    pays.addTransaction(new Wire(), &amp;quot;trx1&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    pays.addTransaction(new Paypal(), &amp;quot;trx2&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		    pays.addTransaction(new Cash(), &amp;quot;trx3&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC53"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		}&lt;/div&gt;&lt;div class="line" id="LC54"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;		peopleItr.next();&lt;/div&gt;&lt;div class="line" id="LC55"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	    }&lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Commit&lt;/div&gt;&lt;div class="line" id="LC58"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx.commit();&lt;/div&gt;&lt;div class="line" id="LC59"&gt;	    System.out.println(&amp;quot;Thread [&amp;quot; + Thread.currentThread().getId() + &amp;quot;] completed ingest.&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC60"&gt;	}&lt;/div&gt;&lt;div class="line" id="LC61"&gt;	catch(Exception e1)&lt;/div&gt;&lt;div class="line" id="LC62"&gt;	{&lt;/div&gt;&lt;div class="line" id="LC63"&gt;	    System.out.println(&amp;quot;[&amp;quot; + Thread.currentThread().getId() + &amp;quot;] Ingest Exception...&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC64"&gt;	    e1.printStackTrace();&lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (tx != null)&lt;/div&gt;&lt;div class="line" id="LC66"&gt;	        tx.complete();&lt;/div&gt;&lt;div class="line" id="LC67"&gt;	}&lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC69"&gt;}&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC71"&gt;class Person extends BaseVertex&lt;/div&gt;&lt;div class="line" id="LC72"&gt;{&lt;/div&gt;&lt;div class="line" id="LC73"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private String name;&lt;/div&gt;&lt;div class="line" id="LC74"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC75"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Person(String name)&lt;/div&gt;&lt;div class="line" id="LC76"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC77"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setName(name);&lt;/div&gt;&lt;div class="line" id="LC78"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC79"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC80"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public String getName() &lt;/div&gt;&lt;div class="line" id="LC81"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC82"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fetch();&lt;/div&gt;&lt;div class="line" id="LC83"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.name;&lt;/div&gt;&lt;div class="line" id="LC84"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC85"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC86"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void setName(String name) &lt;/div&gt;&lt;div class="line" id="LC87"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/div&gt;&lt;div class="line" id="LC88"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;markModified();&lt;/div&gt;&lt;div class="line" id="LC89"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.name = name; &lt;/div&gt;&lt;div class="line" id="LC90"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/div&gt;&lt;div class="line" id="LC91"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC92"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div class="line" id="LC93"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public String toString()&lt;/div&gt;&lt;div class="line" id="LC94"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC95"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.name;&lt;/div&gt;&lt;div class="line" id="LC96"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC97"&gt;};&lt;/div&gt;&lt;div class="line" id="LC98"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC99"&gt;abstract class FinancialEdge extends BaseEdge&lt;/div&gt;&lt;div class="line" id="LC100"&gt;{&lt;/div&gt;&lt;div class="line" id="LC101"&gt;	ooMap transactions;&lt;/div&gt;&lt;div class="line" id="LC102"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC103"&gt;	abstract void addTransaction(TransactionType trxn, String trxnName);&lt;/div&gt;&lt;div class="line" id="LC104"&gt;};&lt;/div&gt;&lt;div class="line" id="LC105"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC106"&gt;class paysTo extends FinancialEdge&lt;/div&gt;&lt;div class="line" id="LC107"&gt;{&lt;/div&gt;&lt;div class="line" id="LC108"&gt;	public paysTo()&lt;/div&gt;&lt;div class="line" id="LC109"&gt;	{&lt;/div&gt;&lt;div class="line" id="LC110"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	transactions = new ooMap();&lt;/div&gt;&lt;div class="line" id="LC111"&gt;	}&lt;/div&gt;&lt;div class="line" id="LC112"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC113"&gt;	void addTransaction(TransactionType trxn, String trxnName)&lt;/div&gt;&lt;div class="line" id="LC114"&gt;	{&lt;/div&gt;&lt;div class="line" id="LC115"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;markModified();&lt;/div&gt;&lt;div class="line" id="LC116"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!transactions.isPersistent())&lt;/div&gt;&lt;div class="line" id="LC117"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	this.cluster(transactions);&lt;/div&gt;&lt;div class="line" id="LC118"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	    transactions.add(trxn, trxnName);&lt;/div&gt;&lt;div class="line" id="LC119"&gt;	}&lt;/div&gt;&lt;div class="line" id="LC120"&gt;};&lt;/div&gt;&lt;div class="line" id="LC121"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC122"&gt;abstract class TransactionType extends ooObj&lt;/div&gt;&lt;div class="line" id="LC123"&gt;{};&lt;/div&gt;&lt;div class="line" id="LC124"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC125"&gt;class Wire extends TransactionType&lt;/div&gt;&lt;div class="line" id="LC126"&gt;{};&lt;/div&gt;&lt;div class="line" id="LC127"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC128"&gt;class Paypal extends TransactionType&lt;/div&gt;&lt;div class="line" id="LC129"&gt;{};&lt;/div&gt;&lt;div class="line" id="LC130"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC131"&gt;class Cash extends TransactionType&lt;/div&gt;&lt;div class="line" id="LC132"&gt;{};&lt;/div&gt;&lt;div class="line" id="LC133"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC134"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC135"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/java-graph-sharding-in-infinitegraph-database"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/java-graph-sharding-in-infinitegraph-database#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/NJ1O5jOvFpY" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/java-graph-sharding-in-infinitegraph-database</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 08 Jul 2010 11:27:00 -0700</pubDate>
      <title>New Socrata Social Data Player Template And Infograph For The DOE</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/xcUYR71jAuE/new-socrata-social-data-player-template-for-t</link>
      <guid isPermaLink="false">http://blog.stavi.sh/new-socrata-social-data-player-template-for-t</guid>
      <description>&lt;p&gt;
	&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's the design for the &lt;a href="http://www.socrata.com/solution" target="_blank"&gt;social data player&lt;/a&gt; template that *hopefully* will be used on the &lt;a href="http://www.energy.gov/recovery/energyefficiency.htm" target="_blank"&gt;DOE project&lt;/a&gt; that I have been working on. I like how it came out. I tied the green and blue in the logo to the colors for the button and the title bar. Check out the &lt;a href="http://socrata.com/d/yefd-dygx" target="_blank"&gt;map infograph&lt;/a&gt; too. It's pretty slick. The heat / intensity shows how much funding each state received and selecting a state will click-through to a dedicated landing page with a data table breaking-out all of the recovery funding for that state. The DOE New Media Team is extremely good and fun to work with, BTW. Much of the guidance and credit goes to them.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;iframe scrolling="no" src="http://www.socrata.com/w/stri-mmy6/2tyd-7i7p?cur=C2Ge5M3og5E" frameborder="0" height="425px" width="500px"&gt;&lt;a href="http://www.socrata.com/dataset/DOE-Recovery-Pillars-Aggregate/stri-mmy6" title="DOE Recovery Pillars Aggregate" target="_blank"&gt;DOE Recovery Pillars Aggregate&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;iframe scrolling="no" src="http://www.socrata.com/w/yefd-dygx/y34g-bnf3?cur=zNzgpW4qpx0" frameborder="0" height="425px" width="500px"&gt;&lt;a href="http://www.socrata.com/dataset/Smart-Grid-Funding-Map/yefd-dygx" title="Smart Grid Funding Map" target="_blank"&gt;Smart Grid Funding Map&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://www.socrata.com/" target="_blank"&gt;Powered by Socrata&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/new-socrata-social-data-player-template-for-t"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/new-socrata-social-data-player-template-for-t#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/xcUYR71jAuE" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/new-socrata-social-data-player-template-for-t</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 07 Jul 2010 07:16:00 -0700</pubDate>
      <title>InfiniteGraph: Referential Integrity</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/gYtP0nGIEVs/infinitegraph-referential-integrity</link>
      <guid isPermaLink="false">http://blog.stavi.sh/infinitegraph-referential-integrity</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Based on my &lt;a href="http://post.ly/m733"&gt;post yesterday&lt;/a&gt;, the guys over at
&lt;a href="http://infogrid.org/"&gt;InfoGrid&lt;/a&gt; brought up some &lt;a href="http://bit.ly/bnlHe0"&gt;good
points&lt;/a&gt; on
&lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&amp;rsquo;s&lt;/a&gt; edge implementation.
I wrote some code to see if you could create a dangling reference
case. I couldn&amp;rsquo;t find a way to do it.&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-text"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;// Garbage in, garbage out? &lt;/div&gt;&lt;div class="line" id="LC2"&gt;/* Try to create a dangling reference */&lt;/div&gt;&lt;div class="line" id="LC3"&gt;xkcd.addEdge(tagT4, null, EdgeKind.BIDIRECTIONAL); // Throws null exception&lt;/div&gt;&lt;div class="line" id="LC4"&gt;/* Try to add a transient vertex */&lt;/div&gt;&lt;div class="line" id="LC5"&gt;Resource transy = new Resource(&amp;quot;http://ibm.com/&amp;quot;);   // Throws a must be persistent&lt;/div&gt;&lt;div class="line" id="LC6"&gt;xkcd.addEdge(tagT4, transy, EdgeKind.BIDIRECTIONAL); // element exception&lt;/div&gt;&lt;div class="line" id="LC7"&gt;/* Try to add a circular reference */&lt;/div&gt;&lt;div class="line" id="LC8"&gt;Resource boomerang = new Resource(&amp;quot;http://cisco.com/&amp;quot;); // Throws exception&lt;/div&gt;&lt;div class="line" id="LC9"&gt;graphDB.addVertex(boomerang);&lt;/div&gt;&lt;div class="line" id="LC10"&gt;boomerang.addEdge(tagT4, boomerang, EdgeKind.BIDIRECTIONAL); &lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;It looks like, when you create an Edge, it is transient. To add it to
the database you must call one of the addEdge variants which makes the
edge persistent and &lt;em&gt;requires&lt;/em&gt; you provide source and destination
vertices. There are no dangling references, so referential integrity
is kept.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/infinitegraph-referential-integrity"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/infinitegraph-referential-integrity#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/gYtP0nGIEVs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/infinitegraph-referential-integrity</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 06 Jul 2010 11:36:00 -0700</pubDate>
      <title>Get A Taste Of InfiniteGraph: HelloWorld For Graph Databases</title>
      <link>http://feedproxy.google.com/~r/ToddStavishsPosterous/~3/i5UIw25pXv8/get-a-taste-of-infinitegraph-hello-world-for</link>
      <guid isPermaLink="false">http://blog.stavi.sh/get-a-taste-of-infinitegraph-hello-world-for</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I agree with &lt;a href="http://www.linkedin.com/in/alexandrup"&gt;Mr. Popescu&lt;/a&gt;.
The best way to validate that you’ve got the basics right about a
system is to use some &lt;a href="http://post.ly/lby1"&gt;basic code&lt;/a&gt;.  With this
idea in mind, I ported his &lt;a href="http://bit.ly/9C4lpP"&gt;tagging app&lt;/a&gt; to
&lt;a href="http://www.infinitegraph.com/"&gt;InfiniteGraph&lt;/a&gt;, a new graph database.
 Some things I learned in this effort about InfiniteGraph:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;non-primitive vertex attribute types are supported (check out the
timestamp in the Resource vertex)&lt;/li&gt;
&lt;li&gt;efficient path evaluation with qualifiers and navigation result handlers&lt;/li&gt;
&lt;li&gt;named vertex indexing is simple but powerful&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I am looking forward to trying InfiniteGraph in a &lt;a href="http://bit.ly/c8V50b"&gt;distributed
deployment&lt;/a&gt; for my &lt;a href="http://post.ly/mzup"&gt;next post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The tagging app console output looks like this:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Listing all tags and resources:&lt;/p&gt;

&lt;p&gt;Tag: good&lt;/p&gt;

&lt;p&gt; Resource: &lt;a href="http://xkcd.com/"&gt;http://xkcd.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Resource: &lt;a href="http://cnn.com/"&gt;http://cnn.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tag: funny&lt;/p&gt;

&lt;p&gt; Resource: &lt;a href="http://xkcd.com/"&gt;http://xkcd.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Resource: &lt;a href="http://theonion.com/"&gt;http://theonion.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;xkcd is tagged with:&lt;/p&gt;

&lt;p&gt; Tag: funny&lt;/p&gt;

&lt;p&gt; Tag: good&lt;/p&gt;

&lt;p&gt;Listing all paths to tagged sites:&lt;/p&gt;

&lt;p&gt;Found matching path : goodhttp://xkcd.com/&lt;/p&gt;

&lt;p&gt;Found matching path : goodhttp://cnn.com/&lt;/p&gt;

&lt;p&gt;Found matching path : goodhttp://xkcd.com/funnyhttp://xkcd.com/&lt;/p&gt;

&lt;p&gt;Found matching path : goodhttp://xkcd.com/funnyhttp://theonion.com/&lt;/p&gt;

&lt;p&gt;Found matching path : funnyhttp://xkcd.com/&lt;/p&gt;

&lt;p&gt;Found matching path : funnyhttp://theonion.com/&lt;/p&gt;

&lt;p&gt;Found matching path : funnyhttp://xkcd.com/goodhttp://xkcd.com/&lt;/p&gt;

&lt;p&gt;Found matching path : funnyhttp://xkcd.com/goodhttp://cnn.com/&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Here&amp;rsquo;s the code if you are interested.&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-text"&gt;
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;span rel="#L27" id="L27"&gt;27&lt;/span&gt;
&lt;span rel="#L28" id="L28"&gt;28&lt;/span&gt;
&lt;span rel="#L29" id="L29"&gt;29&lt;/span&gt;
&lt;span rel="#L30" id="L30"&gt;30&lt;/span&gt;
&lt;span rel="#L31" id="L31"&gt;31&lt;/span&gt;
&lt;span rel="#L32" id="L32"&gt;32&lt;/span&gt;
&lt;span rel="#L33" id="L33"&gt;33&lt;/span&gt;
&lt;span rel="#L34" id="L34"&gt;34&lt;/span&gt;
&lt;span rel="#L35" id="L35"&gt;35&lt;/span&gt;
&lt;span rel="#L36" id="L36"&gt;36&lt;/span&gt;
&lt;span rel="#L37" id="L37"&gt;37&lt;/span&gt;
&lt;span rel="#L38" id="L38"&gt;38&lt;/span&gt;
&lt;span rel="#L39" id="L39"&gt;39&lt;/span&gt;
&lt;span rel="#L40" id="L40"&gt;40&lt;/span&gt;
&lt;span rel="#L41" id="L41"&gt;41&lt;/span&gt;
&lt;span rel="#L42" id="L42"&gt;42&lt;/span&gt;
&lt;span rel="#L43" id="L43"&gt;43&lt;/span&gt;
&lt;span rel="#L44" id="L44"&gt;44&lt;/span&gt;
&lt;span rel="#L45" id="L45"&gt;45&lt;/span&gt;
&lt;span rel="#L46" id="L46"&gt;46&lt;/span&gt;
&lt;span rel="#L47" id="L47"&gt;47&lt;/span&gt;
&lt;span rel="#L48" id="L48"&gt;48&lt;/span&gt;
&lt;span rel="#L49" id="L49"&gt;49&lt;/span&gt;
&lt;span rel="#L50" id="L50"&gt;50&lt;/span&gt;
&lt;span rel="#L51" id="L51"&gt;51&lt;/span&gt;
&lt;span rel="#L52" id="L52"&gt;52&lt;/span&gt;
&lt;span rel="#L53" id="L53"&gt;53&lt;/span&gt;
&lt;span rel="#L54" id="L54"&gt;54&lt;/span&gt;
&lt;span rel="#L55" id="L55"&gt;55&lt;/span&gt;
&lt;span rel="#L56" id="L56"&gt;56&lt;/span&gt;
&lt;span rel="#L57" id="L57"&gt;57&lt;/span&gt;
&lt;span rel="#L58" id="L58"&gt;58&lt;/span&gt;
&lt;span rel="#L59" id="L59"&gt;59&lt;/span&gt;
&lt;span rel="#L60" id="L60"&gt;60&lt;/span&gt;
&lt;span rel="#L61" id="L61"&gt;61&lt;/span&gt;
&lt;span rel="#L62" id="L62"&gt;62&lt;/span&gt;
&lt;span rel="#L63" id="L63"&gt;63&lt;/span&gt;
&lt;span rel="#L64" id="L64"&gt;64&lt;/span&gt;
&lt;span rel="#L65" id="L65"&gt;65&lt;/span&gt;
&lt;span rel="#L66" id="L66"&gt;66&lt;/span&gt;
&lt;span rel="#L67" id="L67"&gt;67&lt;/span&gt;
&lt;span rel="#L68" id="L68"&gt;68&lt;/span&gt;
&lt;span rel="#L69" id="L69"&gt;69&lt;/span&gt;
&lt;span rel="#L70" id="L70"&gt;70&lt;/span&gt;
&lt;span rel="#L71" id="L71"&gt;71&lt;/span&gt;
&lt;span rel="#L72" id="L72"&gt;72&lt;/span&gt;
&lt;span rel="#L73" id="L73"&gt;73&lt;/span&gt;
&lt;span rel="#L74" id="L74"&gt;74&lt;/span&gt;
&lt;span rel="#L75" id="L75"&gt;75&lt;/span&gt;
&lt;span rel="#L76" id="L76"&gt;76&lt;/span&gt;
&lt;span rel="#L77" id="L77"&gt;77&lt;/span&gt;
&lt;span rel="#L78" id="L78"&gt;78&lt;/span&gt;
&lt;span rel="#L79" id="L79"&gt;79&lt;/span&gt;
&lt;span rel="#L80" id="L80"&gt;80&lt;/span&gt;
&lt;span rel="#L81" id="L81"&gt;81&lt;/span&gt;
&lt;span rel="#L82" id="L82"&gt;82&lt;/span&gt;
&lt;span rel="#L83" id="L83"&gt;83&lt;/span&gt;
&lt;span rel="#L84" id="L84"&gt;84&lt;/span&gt;
&lt;span rel="#L85" id="L85"&gt;85&lt;/span&gt;
&lt;span rel="#L86" id="L86"&gt;86&lt;/span&gt;
&lt;span rel="#L87" id="L87"&gt;87&lt;/span&gt;
&lt;span rel="#L88" id="L88"&gt;88&lt;/span&gt;
&lt;span rel="#L89" id="L89"&gt;89&lt;/span&gt;
&lt;span rel="#L90" id="L90"&gt;90&lt;/span&gt;
&lt;span rel="#L91" id="L91"&gt;91&lt;/span&gt;
&lt;span rel="#L92" id="L92"&gt;92&lt;/span&gt;
&lt;span rel="#L93" id="L93"&gt;93&lt;/span&gt;
&lt;span rel="#L94" id="L94"&gt;94&lt;/span&gt;
&lt;span rel="#L95" id="L95"&gt;95&lt;/span&gt;
&lt;span rel="#L96" id="L96"&gt;96&lt;/span&gt;
&lt;span rel="#L97" id="L97"&gt;97&lt;/span&gt;
&lt;span rel="#L98" id="L98"&gt;98&lt;/span&gt;
&lt;span rel="#L99" id="L99"&gt;99&lt;/span&gt;
&lt;span rel="#L100" id="L100"&gt;100&lt;/span&gt;
&lt;span rel="#L101" id="L101"&gt;101&lt;/span&gt;
&lt;span rel="#L102" id="L102"&gt;102&lt;/span&gt;
&lt;span rel="#L103" id="L103"&gt;103&lt;/span&gt;
&lt;span rel="#L104" id="L104"&gt;104&lt;/span&gt;
&lt;span rel="#L105" id="L105"&gt;105&lt;/span&gt;
&lt;span rel="#L106" id="L106"&gt;106&lt;/span&gt;
&lt;span rel="#L107" id="L107"&gt;107&lt;/span&gt;
&lt;span rel="#L108" id="L108"&gt;108&lt;/span&gt;
&lt;span rel="#L109" id="L109"&gt;109&lt;/span&gt;
&lt;span rel="#L110" id="L110"&gt;110&lt;/span&gt;
&lt;span rel="#L111" id="L111"&gt;111&lt;/span&gt;
&lt;span rel="#L112" id="L112"&gt;112&lt;/span&gt;
&lt;span rel="#L113" id="L113"&gt;113&lt;/span&gt;
&lt;span rel="#L114" id="L114"&gt;114&lt;/span&gt;
&lt;span rel="#L115" id="L115"&gt;115&lt;/span&gt;
&lt;span rel="#L116" id="L116"&gt;116&lt;/span&gt;
&lt;span rel="#L117" id="L117"&gt;117&lt;/span&gt;
&lt;span rel="#L118" id="L118"&gt;118&lt;/span&gt;
&lt;span rel="#L119" id="L119"&gt;119&lt;/span&gt;
&lt;span rel="#L120" id="L120"&gt;120&lt;/span&gt;
&lt;span rel="#L121" id="L121"&gt;121&lt;/span&gt;
&lt;span rel="#L122" id="L122"&gt;122&lt;/span&gt;
&lt;span rel="#L123" id="L123"&gt;123&lt;/span&gt;
&lt;span rel="#L124" id="L124"&gt;124&lt;/span&gt;
&lt;span rel="#L125" id="L125"&gt;125&lt;/span&gt;
&lt;span rel="#L126" id="L126"&gt;126&lt;/span&gt;
&lt;span rel="#L127" id="L127"&gt;127&lt;/span&gt;
&lt;span rel="#L128" id="L128"&gt;128&lt;/span&gt;
&lt;span rel="#L129" id="L129"&gt;129&lt;/span&gt;
&lt;span rel="#L130" id="L130"&gt;130&lt;/span&gt;
&lt;span rel="#L131" id="L131"&gt;131&lt;/span&gt;
&lt;span rel="#L132" id="L132"&gt;132&lt;/span&gt;
&lt;span rel="#L133" id="L133"&gt;133&lt;/span&gt;
&lt;span rel="#L134" id="L134"&gt;134&lt;/span&gt;
&lt;span rel="#L135" id="L135"&gt;135&lt;/span&gt;
&lt;span rel="#L136" id="L136"&gt;136&lt;/span&gt;
&lt;span rel="#L137" id="L137"&gt;137&lt;/span&gt;
&lt;span rel="#L138" id="L138"&gt;138&lt;/span&gt;
&lt;span rel="#L139" id="L139"&gt;139&lt;/span&gt;
&lt;span rel="#L140" id="L140"&gt;140&lt;/span&gt;
&lt;span rel="#L141" id="L141"&gt;141&lt;/span&gt;
&lt;span rel="#L142" id="L142"&gt;142&lt;/span&gt;
&lt;span rel="#L143" id="L143"&gt;143&lt;/span&gt;
&lt;span rel="#L144" id="L144"&gt;144&lt;/span&gt;
&lt;span rel="#L145" id="L145"&gt;145&lt;/span&gt;
&lt;span rel="#L146" id="L146"&gt;146&lt;/span&gt;
&lt;span rel="#L147" id="L147"&gt;147&lt;/span&gt;
&lt;span rel="#L148" id="L148"&gt;148&lt;/span&gt;
&lt;span rel="#L149" id="L149"&gt;149&lt;/span&gt;
&lt;span rel="#L150" id="L150"&gt;150&lt;/span&gt;
&lt;span rel="#L151" id="L151"&gt;151&lt;/span&gt;
&lt;span rel="#L152" id="L152"&gt;152&lt;/span&gt;
&lt;span rel="#L153" id="L153"&gt;153&lt;/span&gt;
&lt;span rel="#L154" id="L154"&gt;154&lt;/span&gt;
&lt;span rel="#L155" id="L155"&gt;155&lt;/span&gt;
&lt;span rel="#L156" id="L156"&gt;156&lt;/span&gt;
&lt;span rel="#L157" id="L157"&gt;157&lt;/span&gt;
&lt;span rel="#L158" id="L158"&gt;158&lt;/span&gt;
&lt;span rel="#L159" id="L159"&gt;159&lt;/span&gt;
&lt;span rel="#L160" id="L160"&gt;160&lt;/span&gt;
&lt;span rel="#L161" id="L161"&gt;161&lt;/span&gt;
&lt;span rel="#L162" id="L162"&gt;162&lt;/span&gt;
&lt;span rel="#L163" id="L163"&gt;163&lt;/span&gt;
&lt;span rel="#L164" id="L164"&gt;164&lt;/span&gt;
&lt;span rel="#L165" id="L165"&gt;165&lt;/span&gt;
&lt;span rel="#L166" id="L166"&gt;166&lt;/span&gt;
&lt;span rel="#L167" id="L167"&gt;167&lt;/span&gt;
&lt;span rel="#L168" id="L168"&gt;168&lt;/span&gt;
&lt;span rel="#L169" id="L169"&gt;169&lt;/span&gt;
&lt;span rel="#L170" id="L170"&gt;170&lt;/span&gt;
&lt;span rel="#L171" id="L171"&gt;171&lt;/span&gt;
&lt;span rel="#L172" id="L172"&gt;172&lt;/span&gt;
&lt;span rel="#L173" id="L173"&gt;173&lt;/span&gt;
&lt;span rel="#L174" id="L174"&gt;174&lt;/span&gt;
&lt;span rel="#L175" id="L175"&gt;175&lt;/span&gt;
&lt;span rel="#L176" id="L176"&gt;176&lt;/span&gt;
&lt;span rel="#L177" id="L177"&gt;177&lt;/span&gt;
&lt;span rel="#L178" id="L178"&gt;178&lt;/span&gt;
&lt;span rel="#L179" id="L179"&gt;179&lt;/span&gt;
&lt;span rel="#L180" id="L180"&gt;180&lt;/span&gt;
&lt;span rel="#L181" id="L181"&gt;181&lt;/span&gt;
&lt;span rel="#L182" id="L182"&gt;182&lt;/span&gt;
&lt;span rel="#L183" id="L183"&gt;183&lt;/span&gt;
&lt;span rel="#L184" id="L184"&gt;184&lt;/span&gt;
&lt;span rel="#L185" id="L185"&gt;185&lt;/span&gt;
&lt;span rel="#L186" id="L186"&gt;186&lt;/span&gt;
&lt;span rel="#L187" id="L187"&gt;187&lt;/span&gt;
&lt;span rel="#L188" id="L188"&gt;188&lt;/span&gt;
&lt;span rel="#L189" id="L189"&gt;189&lt;/span&gt;
&lt;span rel="#L190" id="L190"&gt;190&lt;/span&gt;
&lt;span rel="#L191" id="L191"&gt;191&lt;/span&gt;
&lt;span rel="#L192" id="L192"&gt;192&lt;/span&gt;
&lt;span rel="#L193" id="L193"&gt;193&lt;/span&gt;
&lt;span rel="#L194" id="L194"&gt;194&lt;/span&gt;
&lt;span rel="#L195" id="L195"&gt;195&lt;/span&gt;
&lt;span rel="#L196" id="L196"&gt;196&lt;/span&gt;
&lt;span rel="#L197" id="L197"&gt;197&lt;/span&gt;
&lt;span rel="#L198" id="L198"&gt;198&lt;/span&gt;
&lt;span rel="#L199" id="L199"&gt;199&lt;/span&gt;
&lt;span rel="#L200" id="L200"&gt;200&lt;/span&gt;
&lt;span rel="#L201" id="L201"&gt;201&lt;/span&gt;
&lt;span rel="#L202" id="L202"&gt;202&lt;/span&gt;
&lt;span rel="#L203" id="L203"&gt;203&lt;/span&gt;
&lt;span rel="#L204" id="L204"&gt;204&lt;/span&gt;
&lt;span rel="#L205" id="L205"&gt;205&lt;/span&gt;
&lt;span rel="#L206" id="L206"&gt;206&lt;/span&gt;
&lt;span rel="#L207" id="L207"&gt;207&lt;/span&gt;
&lt;span rel="#L208" id="L208"&gt;208&lt;/span&gt;
&lt;span rel="#L209" id="L209"&gt;209&lt;/span&gt;
&lt;span rel="#L210" id="L210"&gt;210&lt;/span&gt;
&lt;span rel="#L211" id="L211"&gt;211&lt;/span&gt;
&lt;span rel="#L212" id="L212"&gt;212&lt;/span&gt;
&lt;span rel="#L213" id="L213"&gt;213&lt;/span&gt;
&lt;span rel="#L214" id="L214"&gt;214&lt;/span&gt;
&lt;span rel="#L215" id="L215"&gt;215&lt;/span&gt;
&lt;span rel="#L216" id="L216"&gt;216&lt;/span&gt;
&lt;span rel="#L217" id="L217"&gt;217&lt;/span&gt;
&lt;span rel="#L218" id="L218"&gt;218&lt;/span&gt;
&lt;span rel="#L219" id="L219"&gt;219&lt;/span&gt;
&lt;span rel="#L220" id="L220"&gt;220&lt;/span&gt;
&lt;span rel="#L221" id="L221"&gt;221&lt;/span&gt;
&lt;span rel="#L222" id="L222"&gt;222&lt;/span&gt;
&lt;span rel="#L223" id="L223"&gt;223&lt;/span&gt;
&lt;span rel="#L224" id="L224"&gt;224&lt;/span&gt;
&lt;span rel="#L225" id="L225"&gt;225&lt;/span&gt;
&lt;span rel="#L226" id="L226"&gt;226&lt;/span&gt;
&lt;span rel="#L227" id="L227"&gt;227&lt;/span&gt;
&lt;span rel="#L228" id="L228"&gt;228&lt;/span&gt;
&lt;span rel="#L229" id="L229"&gt;229&lt;/span&gt;
&lt;span rel="#L230" id="L230"&gt;230&lt;/span&gt;
&lt;span rel="#L231" id="L231"&gt;231&lt;/span&gt;
&lt;span rel="#L232" id="L232"&gt;232&lt;/span&gt;
&lt;span rel="#L233" id="L233"&gt;233&lt;/span&gt;
&lt;span rel="#L234" id="L234"&gt;234&lt;/span&gt;
&lt;span rel="#L235" id="L235"&gt;235&lt;/span&gt;
&lt;span rel="#L236" id="L236"&gt;236&lt;/span&gt;
&lt;span rel="#L237" id="L237"&gt;237&lt;/span&gt;
&lt;span rel="#L238" id="L238"&gt;238&lt;/span&gt;
&lt;span rel="#L239" id="L239"&gt;239&lt;/span&gt;
&lt;span rel="#L240" id="L240"&gt;240&lt;/span&gt;
&lt;span rel="#L241" id="L241"&gt;241&lt;/span&gt;
&lt;span rel="#L242" id="L242"&gt;242&lt;/span&gt;
&lt;span rel="#L243" id="L243"&gt;243&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;import com.objy.graph.*;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;import com.objy.graph.navigation.*;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;import java.sql.Timestamp;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;public class TagExample&lt;/div&gt;&lt;div class="line" id="LC7"&gt;{&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&amp;nbsp;&amp;nbsp;public static void main(String[] args)&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&amp;nbsp;&amp;nbsp;{ &lt;/div&gt;&lt;div class="line" id="LC11"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Transaction tx = null;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphDatabase graphDB = null;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Create graph database&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String graphName = &amp;quot;TagGraph&amp;quot;;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String props = &amp;quot;graph.properties&amp;quot;;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphFactory.create(graphName, props);&lt;/div&gt;&lt;div class="line" id="LC19"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB = GraphFactory.open(graphName, props);&lt;/div&gt;&lt;div class="line" id="LC20"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Start transaction&lt;/div&gt;&lt;div class="line" id="LC22"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx = graphDB.beginTransaction(AccessMode.READ_WRITE);&lt;/div&gt;&lt;div class="line" id="LC23"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Create resources and tags&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resource cnn = new Resource(&amp;quot;http://cnn.com/&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC26"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resource onion = new Resource(&amp;quot;http://theonion.com/&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC27"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resource xkcd = new Resource(&amp;quot;http://xkcd.com/&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tag good = new Tag(&amp;quot;good&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC29"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tag funny = new Tag(&amp;quot;funny&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC30"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC31"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Timestamp the tags&lt;/div&gt;&lt;div class="line" id="LC32"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.util.Date date = new java.util.Date();&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Timestamp time = new Timestamp(date.getTime());&lt;/div&gt;&lt;div class="line" id="LC34"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaggedWith tagT1 = new TaggedWith(time);&lt;/div&gt;&lt;div class="line" id="LC35"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaggedWith tagT2 = new TaggedWith(time);&lt;/div&gt;&lt;div class="line" id="LC36"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaggedWith tagT3 = new TaggedWith(time);&lt;/div&gt;&lt;div class="line" id="LC37"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TaggedWith tagT4 = new TaggedWith(time);&lt;/div&gt;&lt;div class="line" id="LC38"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add vertices to graph&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.addVertex(cnn);&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.addVertex(onion);&lt;/div&gt;&lt;div class="line" id="LC42"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.addVertex(xkcd);&lt;/div&gt;&lt;div class="line" id="LC43"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.addVertex(good);&lt;/div&gt;&lt;div class="line" id="LC44"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.addVertex(funny);&lt;/div&gt;&lt;div class="line" id="LC45"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC46"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Connect the vertices: Resources to tags&lt;/div&gt;&lt;div class="line" id="LC47"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cnn.addEdge(tagT1, good, EdgeKind.BIDIRECTIONAL);&lt;/div&gt;&lt;div class="line" id="LC48"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xkcd.addEdge(tagT2, good, EdgeKind.BIDIRECTIONAL);&lt;/div&gt;&lt;div class="line" id="LC49"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onion.addEdge(tagT3, funny, EdgeKind.BIDIRECTIONAL);&lt;/div&gt;&lt;div class="line" id="LC50"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xkcd.addEdge(tagT4, funny, EdgeKind.BIDIRECTIONAL);&lt;/div&gt;&lt;div class="line" id="LC51"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC52"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Name the vertex for search capability&lt;/div&gt;&lt;div class="line" id="LC53"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.nameVertex(&amp;quot;xkcd&amp;quot;, xkcd);&lt;/div&gt;&lt;div class="line" id="LC54"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC55"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Commit the graph additions, downgrading to read&lt;/div&gt;&lt;div class="line" id="LC56"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx.checkpoint(true);&lt;/div&gt;&lt;div class="line" id="LC57"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC58"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Do some querying&lt;/div&gt;&lt;div class="line" id="LC59"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Listing all tags and resources:&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC60"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Tag: &amp;quot; + good.toString());&lt;/div&gt;&lt;div class="line" id="LC61"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (EdgeHandle edge: good.getEdges())&lt;/div&gt;&lt;div class="line" id="LC62"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	System.out.println(&amp;quot; Resource: &amp;quot; + edge.getEdge().getOrigin().toString());&lt;/div&gt;&lt;div class="line" id="LC63"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Tag: &amp;quot; + funny.toString());&lt;/div&gt;&lt;div class="line" id="LC64"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (EdgeHandle edge: funny.getEdges())&lt;/div&gt;&lt;div class="line" id="LC65"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	System.out.println(&amp;quot; Resource: &amp;quot; + edge.getEdge().getOrigin().toString());&lt;/div&gt;&lt;div class="line" id="LC66"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC67"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Find xkcd&amp;#39;s tags&lt;/div&gt;&lt;div class="line" id="LC68"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Note: using named vertex retrieval instead of existing reference&lt;/div&gt;&lt;div class="line" id="LC69"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;xkcd is tagged with:&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC70"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Resource resource = (Resource)graphDB.getNamedVertex(&amp;quot;xkcd&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC71"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (EdgeHandle edge: resource.getEdges())&lt;/div&gt;&lt;div class="line" id="LC72"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;	System.out.println(&amp;quot; Tag: &amp;quot; + edge.getEdge().getTarget().toString());&lt;/div&gt;&lt;div class="line" id="LC73"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC74"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// List all paths to tagged sites&lt;/div&gt;&lt;div class="line" id="LC75"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Listing all paths to tagged sites:&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC76"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PrintPathResultsHandler resultPrinter = new PrintPathResultsHandler();&lt;/div&gt;&lt;div class="line" id="LC77"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isResource qualifier = new isResource();&lt;/div&gt;&lt;div class="line" id="LC78"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Navigator navigator;&lt;/div&gt;&lt;div class="line" id="LC79"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator = good.navigate(Guide.SIMPLE_BREADTH_FIRST, Qualifier.ANY, qualifier, resultPrinter);&lt;/div&gt;&lt;div class="line" id="LC80"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator.start();&lt;/div&gt;&lt;div class="line" id="LC81"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator.stop();&lt;/div&gt;&lt;div class="line" id="LC82"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator = funny.navigate(Guide.SIMPLE_BREADTH_FIRST, Qualifier.ANY, qualifier, resultPrinter);&lt;/div&gt;&lt;div class="line" id="LC83"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator.start();&lt;/div&gt;&lt;div class="line" id="LC84"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;navigator.stop();&lt;/div&gt;&lt;div class="line" id="LC85"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC86"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Commit transaction&lt;/div&gt;&lt;div class="line" id="LC87"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx.commit();&lt;/div&gt;&lt;div class="line" id="LC88"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC89"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Delete the Database from the System&lt;/div&gt;&lt;div class="line" id="LC90"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println();&lt;/div&gt;&lt;div class="line" id="LC91"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot;Tag Database removed&amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC92"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GraphFactory.delete(graphName, props);&lt;/div&gt;&lt;div class="line" id="LC93"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC94"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC95"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (ConfigurationException cE)&lt;/div&gt;&lt;div class="line" id="LC96"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC97"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&amp;quot; Configuration Exception was thrown .. &amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC98"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(cE.getMessage());&lt;/div&gt;&lt;div class="line" id="LC99"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC100"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;finally&lt;/div&gt;&lt;div class="line" id="LC101"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC102"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// If the transaction was not committed, complete&lt;/div&gt;&lt;div class="line" id="LC103"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// will roll it back&lt;/div&gt;&lt;div class="line" id="LC104"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (tx != null)&lt;/div&gt;&lt;div class="line" id="LC105"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tx.complete();&lt;/div&gt;&lt;div class="line" id="LC106"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (graphDB != null)&lt;/div&gt;&lt;div class="line" id="LC107"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphDB.close();&lt;/div&gt;&lt;div class="line" id="LC108"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC109"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC110"&gt;}&lt;/div&gt;&lt;div class="line" id="LC111"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC112"&gt;/*&lt;/div&gt;&lt;div class="line" id="LC113"&gt;* The persistent class definition for the Resource Vertex type&lt;/div&gt;&lt;div class="line" id="LC114"&gt;*/&lt;/div&gt;&lt;div class="line" id="LC115"&gt;class Resource extends BaseVertex&lt;/div&gt;&lt;div class="line" id="LC116"&gt;{&lt;/div&gt;&lt;div class="line" id="LC117"&gt;&amp;nbsp;&amp;nbsp;private String uri;&lt;/div&gt;&lt;div class="line" id="LC118"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC119"&gt;&amp;nbsp;&amp;nbsp;public Resource(String uri)&lt;/div&gt;&lt;div class="line" id="LC120"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC121"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setURI(uri);&lt;/div&gt;&lt;div class="line" id="LC122"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC123"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC124"&gt;&amp;nbsp;&amp;nbsp;public String getURI() &lt;/div&gt;&lt;div class="line" id="LC125"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC126"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fetch();&lt;/div&gt;&lt;div class="line" id="LC127"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.uri;&lt;/div&gt;&lt;div class="line" id="LC128"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC129"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC130"&gt;&amp;nbsp;&amp;nbsp;public void setURI(String uri) &lt;/div&gt;&lt;div class="line" id="LC131"&gt;&amp;nbsp;&amp;nbsp;{ &lt;/div&gt;&lt;div class="line" id="LC132"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;markModified();&lt;/div&gt;&lt;div class="line" id="LC133"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.uri = uri; &lt;/div&gt;&lt;div class="line" id="LC134"&gt;&amp;nbsp;&amp;nbsp;} &lt;/div&gt;&lt;div class="line" id="LC135"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC136"&gt;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div class="line" id="LC137"&gt;&amp;nbsp;&amp;nbsp;public String toString()&lt;/div&gt;&lt;div class="line" id="LC138"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC139"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.uri;&lt;/div&gt;&lt;div class="line" id="LC140"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC141"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC142"&gt;};&lt;/div&gt;&lt;div class="line" id="LC143"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC144"&gt;/*&lt;/div&gt;&lt;div class="line" id="LC145"&gt;* The persistent class definition for the Tag Vertex type&lt;/div&gt;&lt;div class="line" id="LC146"&gt;*/&lt;/div&gt;&lt;div class="line" id="LC147"&gt;class Tag extends BaseVertex&lt;/div&gt;&lt;div class="line" id="LC148"&gt;{&lt;/div&gt;&lt;div class="line" id="LC149"&gt;&amp;nbsp;&amp;nbsp;private String label;&lt;/div&gt;&lt;div class="line" id="LC150"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC151"&gt;&amp;nbsp;&amp;nbsp;public Tag(String label)&lt;/div&gt;&lt;div class="line" id="LC152"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC153"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setLabel(label);&lt;/div&gt;&lt;div class="line" id="LC154"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC155"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC156"&gt;&amp;nbsp;&amp;nbsp;public String getLabel() &lt;/div&gt;&lt;div class="line" id="LC157"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC158"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fetch();&lt;/div&gt;&lt;div class="line" id="LC159"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.label;&lt;/div&gt;&lt;div class="line" id="LC160"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC161"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC162"&gt;&amp;nbsp;&amp;nbsp;public void setLabel(String label) &lt;/div&gt;&lt;div class="line" id="LC163"&gt;&amp;nbsp;&amp;nbsp;{ &lt;/div&gt;&lt;div class="line" id="LC164"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;markModified();&lt;/div&gt;&lt;div class="line" id="LC165"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.label = label; &lt;/div&gt;&lt;div class="line" id="LC166"&gt;&amp;nbsp;&amp;nbsp;} &lt;/div&gt;&lt;div class="line" id="LC167"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC168"&gt;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div class="line" id="LC169"&gt;&amp;nbsp;&amp;nbsp;public String toString()&lt;/div&gt;&lt;div class="line" id="LC170"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC171"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.label;&lt;/div&gt;&lt;div class="line" id="LC172"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC173"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC174"&gt;};&lt;/div&gt;&lt;div class="line" id="LC175"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC176"&gt;/*&lt;/div&gt;&lt;div class="line" id="LC177"&gt;* The persistent class definition for the TaggedWith Edge type&lt;/div&gt;&lt;div class="line" id="LC178"&gt;*/&lt;/div&gt;&lt;div class="line" id="LC179"&gt;class TaggedWith extends BaseEdge&lt;/div&gt;&lt;div class="line" id="LC180"&gt;{&lt;/div&gt;&lt;div class="line" id="LC181"&gt;&amp;nbsp;&amp;nbsp;private Timestamp stamp;&lt;/div&gt;&lt;div class="line" id="LC182"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC183"&gt;&amp;nbsp;&amp;nbsp;public TaggedWith(Timestamp stamp)&lt;/div&gt;&lt;div class="line" id="LC184"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC185"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setStamp(stamp);&lt;/div&gt;&lt;div class="line" id="LC186"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC187"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC188"&gt;&amp;nbsp;&amp;nbsp;public Timestamp getstamp() &lt;/div&gt;&lt;div class="line" id="LC189"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC190"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fetch();&lt;/div&gt;&lt;div class="line" id="LC191"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.stamp;&lt;/div&gt;&lt;div class="line" id="LC192"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC193"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC194"&gt;&amp;nbsp;&amp;nbsp;public void setStamp(Timestamp stamp) &lt;/div&gt;&lt;div class="line" id="LC195"&gt;&amp;nbsp;&amp;nbsp;{ &lt;/div&gt;&lt;div class="line" id="LC196"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;markModified();&lt;/div&gt;&lt;div class="line" id="LC197"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.stamp = stamp; &lt;/div&gt;&lt;div class="line" id="LC198"&gt;&amp;nbsp;&amp;nbsp;} &lt;/div&gt;&lt;div class="line" id="LC199"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC200"&gt;&amp;nbsp;&amp;nbsp;public String getStamp()&lt;/div&gt;&lt;div class="line" id="LC201"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC202"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return &amp;quot;Created on &amp;quot; + stamp;&lt;/div&gt;&lt;div class="line" id="LC203"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC204"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="line" id="LC205"&gt;};&lt;/div&gt;&lt;div class="line" id="LC206"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC207"&gt;/*&lt;/div&gt;&lt;div class="line" id="LC208"&gt;&amp;nbsp;* For every result passing through all the qualifiers in the navigation,&lt;/div&gt;&lt;div class="line" id="LC209"&gt;&amp;nbsp;* this will print out all the possible paths.&lt;/div&gt;&lt;div class="line" id="LC210"&gt;&amp;nbsp;*/&lt;/div&gt;&lt;div class="line" id="LC211"&gt;class PrintPathResultsHandler implements NavigationResultHandler&lt;/div&gt;&lt;div class="line" id="LC212"&gt;{&lt;/div&gt;&lt;div class="line" id="LC213"&gt;&amp;nbsp;&amp;nbsp;public void handleResultPath(Path result, Navigator navigator)&lt;/div&gt;&lt;div class="line" id="LC214"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC215"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.print(&amp;quot;Found matching path : &amp;quot;);&lt;/div&gt;&lt;div class="line" id="LC216"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.print(result.get(0).getVertex().toString());&lt;/div&gt;&lt;div class="line" id="LC217"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC218"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// For h in p&lt;/div&gt;&lt;div class="line" id="LC219"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(Hop h : result)&lt;/div&gt;&lt;div class="line" id="LC220"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC221"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(h.hasEdge())&lt;/div&gt;&lt;div class="line" id="LC222"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC223"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.print(&amp;quot;&amp;lt;-&amp;gt;&amp;quot; + h.getVertex().toString());&lt;/div&gt;&lt;div class="line" id="LC224"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/div&gt;&lt;div class="line" id="LC225"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC226"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println();&lt;/div&gt;&lt;div class="line" id="LC227"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC228"&gt;};&lt;/div&gt;&lt;div class="line" id="LC229"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC230"&gt;/*&lt;/div&gt;&lt;div class="line" id="LC231"&gt;&amp;nbsp;* This qualifier only return true if the end of the path is a resource&lt;/div&gt;&lt;div class="line" id="LC232"&gt;&amp;nbsp;*/&lt;/div&gt;&lt;div class="line" id="LC233"&gt;class isResource implements Qualifier&lt;/div&gt;&lt;div class="line" id="LC234"&gt;{&lt;/div&gt;&lt;div class="line" id="LC235"&gt;&amp;nbsp;&amp;nbsp;public boolean qualify(Path currentPath)&lt;/div&gt;&lt;div class="line" id="LC236"&gt;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;&lt;div class="line" id="LC237"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//this is a qualifying path if the last vertex of this path is a Resource&lt;/div&gt;&lt;div class="line" id="LC238"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (currentPath.getFinalHop().getVertex().hasProperty(&amp;quot;uri&amp;quot;))&lt;/div&gt;&lt;div class="line" id="LC239"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;/div&gt;&lt;div class="line" id="LC240"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;/div&gt;&lt;div class="line" id="LC241"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;/div&gt;&lt;div class="line" id="LC242"&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div class="line" id="LC243"&gt;};&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/div&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.stavi.sh/get-a-taste-of-infinitegraph-hello-world-for"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.stavi.sh/get-a-taste-of-infinitegraph-hello-world-for#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ToddStavishsPosterous/~4/i5UIw25pXv8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/622304/iphone_110.jpeg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Al6VO24fgyt</posterous:profileUrl>
        <posterous:firstName>Todd</posterous:firstName>
        <posterous:lastName>Stavish</posterous:lastName>
        <posterous:nickName>toddstavish</posterous:nickName>
        <posterous:displayName>Todd Stavish</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.stavi.sh/get-a-taste-of-infinitegraph-hello-world-for</feedburner:origLink></item>
  </channel>
</rss>

