views:

85

answers:

4

I am working with a team that edits large DAGs represented as single files. Currently we are unable to work with multiple users concurrently modifying the DAG.

Is there a tool (somewhat like the Eclipse SVN plugin) that can do do revision control on the file (manage timestamps/revision stamps) to identify incoming/outgoing/conflicting changes (Node/Link insertion/deletion/modification) and merge changes just like programmers do with source code files?

The system should be able to do dependency management also. E.g. an incoming Link must not be accepted when one of the two Nodes is absent. That is, it should not "break" the existing DAG by allowing partial updates.

If there is a framework to do this using generic "Node" and "Link" interfaces?

Note: I am aware of Protege and its plugins. They currently do not satisfy my requirements.

A: 

I am not aware of any plugins. If I have to write custom code, I will store the DAG in a adjacency matrix. All the other operations now become simple.

Algorist
+1  A: 

You could use Graphviz.

You could simply put under version control just the source files and then use a Makefile to build and update your graphs. In this way, you could use SVN, Mercurial, Git or anything else you prefer for version control.

The source files have a .gv extension and they look like this.

Check the Graphviz complements to see if something might fit to your needs. They have a lot of graphical interfaces that might do exactly what you want.

Roberto Aloi
A: 

If you can't find such a tool, a conventional VCS seems to hit everything except dependency management. Dependency management is something that programmers deal with too (oops I deleted that function that your new code depended on). It might be helpful to think of your dependency checks as a "build" and look for VCSes that enforce code that builds before accepting a checkin.

@algorithmist. Yes. I understand that. Dependency management in DAG version control is a lot more complex due to the lack of standardized compiler frameworks for DAGs. Also, the people who edit DAGs are usually not programmers (lexicographers/ontologists etc.) and may not be aware of the impact of "breaking a build".
hashable
A: 

Wouldn't just a simple version tree help you with the visualization part? Dependencies are a different story.

pablo