<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.factminers.org"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>FactMiners.org - Structr</title>
 <link>http://www.factminers.org/tags/structr</link>
 <description></description>
 <language>en</language>
<item>
 <title>Wishlist: A Metamodel Partition in Neo4j Graph Database</title>
 <link>http://www.factminers.org/content/wishlist-metamodel-partition-neo4j-graph-database</link>
 <description>&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden view-mode-rss view-mode-rss&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;figure class=&quot;clearfix field-item even&quot;&gt;&lt;a href=&quot;http://www.factminers.org/sites/default/files/images/fig_2_manbitesdog.png&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; class=&quot;image-style-large&quot; src=&quot;http://www.factminers.org/sites/default/files/styles/large/public/images/fig_2_manbitesdog.png?itok=GCwO2b8V&quot; width=&quot;320&quot; height=&quot;480&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-hidden view-mode-rss view-mode-rss&quot;&gt;&lt;ul class=&quot;field-items&quot;&gt;&lt;li class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/tags/metamodeling&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Metamodeling&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/tags/neo4j&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Neo4j&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/tags/structr&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Structr&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss view-mode-rss&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;There are many reasons I had to explore the &lt;a href=&quot;/content/neo4j-graphgist-design-docs-line&quot;&gt;embedded metamodel subgraph design pattern for Neo4j databases&lt;/a&gt; in the first series of FactMiners ecosystem design documents.&lt;/p&gt;
&lt;p&gt;My interest is grounded in my experience in the 1990&#039;s developing a pair of complementary Distributed Smalltalk frameworks to do what we called &quot;executable business models.&quot; The basic idea was that if we came up with a super-elegant metamodel about how to do business processes AND STUCK TO IT no matter what on the server/executing-model side of things then the Desktop Visualization framework could dynamically generate what customer/users mistook for &quot;applications.&quot;&lt;/p&gt;
&lt;p&gt;At the time, this required us to do something that was considered heretical in the OOP community which was to explicitly objectify BusinessProcess and similar &quot;non-object&quot; objects. While the OOP purists poo-pooed what we were doing, we found INCREDIBLE leverage in design-to-implementation and stakeholder buy-in (as what we built made sense to them... it was their mental model embodied in software).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We can bring this kind of leverage to graph databases,&lt;/em&gt; and &lt;strong&gt;I hope Neo4j will be the pioneer leader in this&lt;/strong&gt;, by coming up with &lt;em&gt;a community standard for an embedded metamodel subgraph feature&lt;/em&gt;. By adopting the general embedded metamodel subgraph pattern and defining a core structure for the general semantics of a metamodel in a graph database, we would then have a common mechanism for 3rd party product/service developers to hang their tool-specific &quot;decorations&quot;/hints/config-specs/whatever. With some kind of lightweight mechanism for registering a property namespace in the META partition (or whatever this subgraph is called), 3rd party devs would be able to work together more efficiently to provide interoperability and other pipeline-type features that are all good for the Neo4j ecosystem.&lt;/p&gt;
&lt;p&gt;While nothing technically would need to be done in Neo4j core to create and use such a design pattern, there would be a couple helpful things:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;As part of its &quot;schema-like support&quot; Neo4j could support an OPTIONAL configuration directive to name the label of an embedded non-connected subgraph, e.g. META.
&lt;p&gt;While our interest is in using this for an embedded metamodel, there doesn&#039;t need to be any requirement on its use other than this is a &quot;database within a database&quot; such that it can be systematically IGNORED in Cypher queries unless explicitly referenced. (Not sure of the technical feasibility of this systematic exclusion. But even without it, I believe the pattern can be used without too much chance of &#039;result contamination&#039; providing best practices for naming conventions are followed, etc.)
  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;While not strictly required and not limited in usefulness to metamodel modeling, I would like to see some kind of optional PATH SEMANTIC for LABELS to express subset containment and not just subset membership. E.g., (foo:Man.Chu) is different than (foo:Man:Chu) in that in the first, Chu is a subset of Man.
  &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Subset containment would be EXTREMELY helpful for organizing a metamodel as explored in &lt;a href=&quot;/content/neo4j-graphgist-design-docs-line&quot;&gt;our first FactMiners GraphGists&lt;/a&gt;. The best solution for adding a label path semantic is one that would provide a pattern-matching syntax in Cypher so users would not need to resort to regexes, etc. when doing metamodel discovery, interpretation, and application or visualization configuration, etc.&lt;/p&gt;
&lt;p&gt;I certainly see where this design pattern could be used to provide a &quot;freeze-dry&quot; mechanism for in-graphdb storage and transmission of Structr-specific info. I would love to see it where you load a new Neo4j database into &lt;a href=&quot;http://www.Structr.org&quot;&gt;Structr&lt;/a&gt;, it finds a META partition and grabs all the Structr-specific info the database creator/updater provides. If Structr, upon examining the metamodel finds KeyLines &quot;decorations&quot;, for example, and the current Structr user has KeyLines installed, Structr/CambridgeIntelligence can work out what that combination means and provide tool-2-tool configuration... again, to be stored in the shared embedded metamodel once that collaboration is determined.&lt;/p&gt;
&lt;p&gt;I am looking at this strictly from the Wish List of an &quot;itch scratching&quot; developer. I do not know the particulars of what it would take to implement such an optional ignorable subgraph partition. I just know what I&#039;d do with one if we had it. :-)&lt;/p&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Sun, 30 Mar 2014 01:17:50 +0000</pubDate>
 <dc:creator>Jim Salmons</dc:creator>
 <guid isPermaLink="false">13 at http://www.factminers.org</guid>
 <comments>http://www.factminers.org/content/wishlist-metamodel-partition-neo4j-graph-database#comments</comments>
</item>
</channel>
</rss>
<h1>Uncaught exception thrown in shutdown function.</h1><p>PDOException: SQLSTATE[42000]: Syntax error or access violation: 1142 DELETE command denied to user &amp;#039;factminersAdmin&amp;#039;@&amp;#039;localhost&amp;#039; for table &amp;#039;semaphore&amp;#039;: DELETE FROM {semaphore} 
WHERE  (value = :db_condition_placeholder_0) ; Array
(
    [:db_condition_placeholder_0] =&amp;gt; 9167608826417fe1692df29.89269245
)
 in lock_release_all() (line 269 of /var/www/webadmin/data/www/factminers.org/html/includes/lock.inc).</p><hr />