FactMiners.org - Structr
http://www.factminers.org/tags/structr
enWishlist: A Metamodel Partition in Neo4j Graph Database
http://www.factminers.org/content/wishlist-metamodel-partition-neo4j-graph-database
<div class="field field-name-field-image field-type-image field-label-hidden view-mode-rss view-mode-rss"><div class="field-items"><figure class="clearfix field-item even"><a href="http://www.factminers.org/sites/default/files/images/fig_2_manbitesdog.png"><img typeof="foaf:Image" class="image-style-large" src="http://www.factminers.org/sites/default/files/styles/large/public/images/fig_2_manbitesdog.png?itok=GCwO2b8V" width="320" height="480" alt="" /></a></figure></div></div><div class="field field-name-field-tags field-type-taxonomy-term-reference field-label-hidden view-mode-rss view-mode-rss"><ul class="field-items"><li class="field-item even"><a href="/tags/metamodeling" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Metamodeling</a></li><li class="field-item odd"><a href="/tags/neo4j" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Neo4j</a></li><li class="field-item even"><a href="/tags/structr" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Structr</a></li></ul></div><div class="field field-name-body field-type-text-with-summary field-label-hidden view-mode-rss view-mode-rss"><div class="field-items"><div class="field-item even" property="content:encoded"><p>There are many reasons I had to explore the <a href="/content/neo4j-graphgist-design-docs-line">embedded metamodel subgraph design pattern for Neo4j databases</a> in the first series of FactMiners ecosystem design documents.</p>
<p>My interest is grounded in my experience in the 1990's developing a pair of complementary Distributed Smalltalk frameworks to do what we called "executable business models." 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 "applications."</p>
<p>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 "non-object" 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).</p>
<p><em>We can bring this kind of leverage to graph databases,</em> and <strong>I hope Neo4j will be the pioneer leader in this</strong>, by coming up with <em>a community standard for an embedded metamodel subgraph feature</em>. 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 "decorations"/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.</p>
<p>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:</p>
<ul><li>As part of its "schema-like support" Neo4j could support an OPTIONAL configuration directive to name the label of an embedded non-connected subgraph, e.g. META.
<p>While our interest is in using this for an embedded metamodel, there doesn't need to be any requirement on its use other than this is a "database within a database" 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 'result contamination' providing best practices for naming conventions are followed, etc.)
</p></li>
<li>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.
</li>
</ul><p>Subset containment would be EXTREMELY helpful for organizing a metamodel as explored in <a href="/content/neo4j-graphgist-design-docs-line">our first FactMiners GraphGists</a>. 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.</p>
<p>I certainly see where this design pattern could be used to provide a "freeze-dry" 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 <a href="http://www.Structr.org">Structr</a>, 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 "decorations", 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.</p>
<p>I am looking at this strictly from the Wish List of an "itch scratching" 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'd do with one if we had it. :-)</p>
<p>Thoughts?</p>
</div></div></div>Sun, 30 Mar 2014 01:17:50 +0000Jim Salmons13 at http://www.factminers.orghttp://www.factminers.org/content/wishlist-metamodel-partition-neo4j-graph-database#comments
Uncaught exception thrown in shutdown function.
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1142 DELETE command denied to user 'factminersAdmin'@'localhost' for table 'semaphore': DELETE FROM {semaphore}
WHERE (value = :db_condition_placeholder_0) ; Array
(
[:db_condition_placeholder_0] => 9167608826417fe1692df29.89269245
)
in lock_release_all() (line 269 of /var/www/webadmin/data/www/factminers.org/html/includes/lock.inc).