background preloader

A Graph Database

A Graph Database

Hypergraph An example of a hypergraph, with and is a pair where is a set of elements called nodes or vertices, and is a set of non-empty subsets of called hyperedges or edges. is a subset of , where is the power set of While graph edges are pairs of nodes, hyperedges are arbitrary sets of nodes, and can therefore contain an arbitrary number of nodes. A hypergraph is also called a set system or a family of sets drawn from the universal set X. There are variant definitions; sometimes edges must not be empty, and sometimes multiple edges, with the same set of nodes, are allowed. Hypergraphs can be viewed as incidence structures. Hypergraphs have many other names. Terminology[edit] Because hypergraph links can have any cardinality, there are several notions of the concept of a subgraph, called subhypergraphs, partial hypergraphs and section hypergraphs. Let be the hypergraph consisting of vertices and having edge set are the index sets of the vertices and edges respectively. induced by a subset of is defined as . has .

Graph Databases in Document Management | Graph database uses graph structures with nodes, edges, and properties to represent and store data.Compared with relational databases, graph databases are often faster for associative data sets, and map more directly to the structure of object-oriented applications. They can scale more naturally to large data sets as they do not typically require expensive join operations. As they depend less on a rigid schema, they are more suitable to manage ad-hoc and changing data with evolving schema. Conversely, relational databases are typically faster at performing the same operation on large numbers of data elements. Graph databases are a powerful tool for graph-like queries, for example computing the shortest path between two nodes in the graph. When should you use a graph database?

What is HyperGraphDB? Recently we’ve seen a lot of activity in the graph database world. Better understanding the space will help us make smarter decisions, so I’ve decided to reach out to the main players in the market and run a series of interviews about their projects and goals. The first in this series is about HyperGraphDB and Borislav Iordanov, his creator, has been kind enough to answer my questions. myNoSQL: What is HyperGraphDB? Borislav Iordanov: HyperGraphDB is a storage framework based on generalized hypergraphs as its underlying data model. myNoSQL: How would you position HyperGraphDB inside the NoSQL space? Boris: I think it is quite apart and I don’t see it fit into any particular category. myNoSQL: Would you mind explaining a bit more why you are placing HyperGraphDB closer to object databases than to graph databases? myNoSQL: What are other solutions in this category/space? Boris: I don’t know of any. Boris: Probably the two most interesting ones are: myNoSQL: Thanks a lot Boris!

Giant Global Graph Well, it has been a long time since my last post here. So many topics, so little time. Some talks, a couple of Design Issues articles, but no blog posts. So The Graph word has been creeping in. Maybe it is because Net and Web have been used. The Net we normally use as short for Internet, which is the International Information Infrastructure. Simpler, more powerful. Programmers could write at a more abstract level. The word Web we normally use as short for World Wide Web. Also, it allowed unexpected re-use. So the Net and the Web may both be shaped as something mathematicians call a Graph, but they are at different levels. Now, people are making another mental move. Biologists are interested in proteins, drugs, genes. There are cries from the heart (e.g The Open Social Web Bill of Rights) for my friendship, that relationship to another person, to transcend documents and sites. We can use the word Graph, now, to distinguish from Web. I'll be thinking in the graph.

Using Neo4J to load and query OWL ontologies I've written previously about modeling, storing and navigating through ontologies (you can see them here, here, here and here). These were all based on ideas on how I could improve upon ontology systems I had previously encountered at work. As I have no formal background in Semantic Web Programming, most of these implementations were based on tools that I was already familiar with or wanted to get familiar with. I recently bought a book on Semantic Web Programming (see my review on Amazon here), and I must say it opened up a whole new world for me. Among other things, the book has a very good coverage of Jena, a Semantic Web Framework for Java, something I had been meaning to take a look at for a while. Somewhat unrelated, I also came across Neo4J, a graph database, and it seemed to be a good fit as a data store for an ontology. Load Phase The code for the data loader is shown below. The relationship types are listed in the OntologyRelationshipType enum below. Query Phase

Directed Edge - Blog - On Building a Stupidly Fast Graph Database It’s pretty clear to computer science geeks that Directed Edge is supposed to be doing groovy things with graphs. In fact our recommendation engine, and some of the things that are unique about our approach to recommendations, are built on our super-fast graph database. When we went live yesterday with the latest version of our recommendations web services, another, much bigger thing happened behind the scenes for us: we cut over to the new version of our graph database. Every time that Directed Edge gets mentioned in nerdier circles we get a lot of questions about this fabled graph-engine, so we thought we’d indulge our techie friends with some background info. When we first decided to build the Directed Edge engine, we’d built some in-memory and RDF-store based prototypes to start hashing out the recommendations algorithms, but the RDF stores couldn’t keep up performance-wise and staying memory-based obviously wasn’t an option for persistent data. So, on to geekery. Column Locking

Multi-Relational Graph Structures: From Algebra to Application Graph Databases and the Future of Large-Scale Knowledge Management Breaking into the NoSQL Conversation Semantic Web Community: I’m disappointed in us! Or at least in our group marketing prowess. We have been failing to capitalize on two major trends that everyone has been talking about and that are directly addressable by Semantic Web technologies! I’m talking of course about Big Data and NoSQL. After all, we gave up SQL more than a decade ago. Check out this Google Trends diagram. Semantic Web vs. NoSQL came out of nowhere in 2009, and now dominates much of the database conversation on the web. Some sources will toss a nod to Semantic Web tools when talking about NoSQL, but not much more than that. I’m going to argue that Semantic Web technologies should be a bigger part of this NoSQL conversation for a certain class of problems. Why haven’t we been? At first blush, the technologies are similar in many respects: Non-SQL queries! However, the NoSQL guys and our own community tend to have very different goals: We seek to connect the world’s data and make systems interoperable.

Structural Abstractions in Brains and Graphs A graph database is a software system that persists and represents data as a collection of vertices (i.e. nodes, dots) connected to one another by a collection of edges (i.e. links, lines). These databases are optimized for executing a type of process known as a graph traversal. At various levels of abstraction, both the structure and function of a graph yield a striking similarity to neural systems such as the human brain. The Neuron and the Vertex At a primitive level, the structure of the human brain can be described as a network of neurons. The human brain is believed to be composed of approximately 100 billion neurons and 1 quadrillion connections (1 quadrillion is 1000 trillion). Neurons: Invasive microelectrodes can be used to measure the activity of a single neuron (or small group of neurons) during the presentation of a stimulus. In network science, algorithms exist to identify larger structures within the graph. The Area and the Motif The Region and the Subgraph Conclusion