GithubHelp home page GithubHelp logo

gephi / gexf Goto Github PK

View Code? Open in Web Editor NEW
31.0 31.0 6.0 2 MB

GEXF Format Specifications

Home Page: https://gexf.net/

License: Creative Commons Attribution 4.0 International

Shell 1.82% TeX 98.18%
format gexf graph xml

gexf's Introduction

Gephi - The Open Graph Viz Platform

build Downloads Downloads Translation progress

Gephi is an award-winning open-source platform for visualizing and manipulating large graphs. It runs on Windows, Mac OS X and Linux. Localization is available in English, French, Spanish, Japanese, Russian, Brazilian Portuguese, Chinese, Czech, German and Romanian.

  • Fast Powered by a built-in OpenGL engine, Gephi is able to push the envelope with very large networks. Visualize networks up to a million elements. All actions (e.g. layout, filter, drag) run in real-time.

  • Simple Easy to install and get started. An UI that is centered around the visualization. Like Photoshop™ for graphs.

  • Modular Extend Gephi with plug-ins. The architecture is built on top of Apache Netbeans Platform and can be extended or reused easily through well-written APIs.

Download Gephi for Windows, Mac OS X and Linux and consult the release notes. Example datasets can be found on our wiki.

Gephi

Install and use Gephi

Download and Install Gephi on your computer.

Get started with the Quick Start and follow the Tutorials. Load a sample dataset and start to play with the data.

If you run into any trouble or have questions consult our discussions.

Latest releases

Stable

Development builds

Development builds are generated regularly. Current version is 0.10.2-SNAPSHOT

Developer Introduction

Gephi is developed in Java and uses OpenGL for its visualization engine. Built on the top of Netbeans Platform, it follows a loosely-coupled, modular architecture philosophy. Gephi is split into modules, which depend on other modules through well-written APIs. Plugins can reuse existing APIs, create new services and even replace a default implementation with a new one.

Consult the Javadoc for an overview of the APIs.

Requirements

  • Java JDK 11 (or later)

  • Apache Maven version 3.6.3 or later

Checkout and Build the sources

  • Fork the repository and clone

      git clone [email protected]:username/gephi.git
    
  • Run the following command or open the project in an IDE

      mvn -T 4 clean install
    
  • Once built, one can test running Gephi

      cd modules/application
      mvn nbm:cluster-app nbm:run-platform
    

Note that while Gephi can be built using JDK 11 or later, it currently requires JDK 11 to run.

Create Plug-ins

Gephi is extensible and lets developers create plug-ins to add new features, or to modify existing features. For example, you can create a new layout algorithm, add a metric, create a filter or a tool, support a new file format or database, or modify the visualization.

Gephi Toolkit

The Gephi Toolkit project packages essential Gephi modules (Graph, Layout, Filters, IO…) in a standard Java library which any Java project can use for getting things done. It can be used on a server or command-line tool to do the same things Gephi does but automatically.

Localization

We use Weblate for localization. Follow the guidelines on the wiki for more details how to contribute.

Icons

Gephi uses icons from various sources. The icons are licensed under the CC BY 3.0 license.

All icons can be found in the DesktopIcons module, organised by module name.

License

Gephi main source code is distributed under the dual license CDDL 1.0 and GNU General Public License v3. Read the Legal FAQs to learn more.

Copyright 2011 Gephi Consortium. All rights reserved.

The contents of this file are subject to the terms of either the GNU General Public License Version 3 only ("GPL") or the Common Development and Distribution License ("CDDL") (collectively, the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the License at http://gephi.github.io/developers/license/ or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the specific language governing permissions and limitations under the License. When distributing the software, include this License Header Notice in each file and include the License files at /cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the License Header, with the fields enclosed by brackets [] replaced by your own identifying information: "Portions Copyrighted [year] [name of copyright owner]"

If you wish your version of this file to be governed by only the CDDL or only the GPL Version 3, indicate your decision by adding "[Contributor] elects to include this software in this distribution under the [CDDL or GPL Version 3] license." If you do not indicate a single choice of license, a recipient has the option to distribute your version of this file under either the CDDL, the GPL Version 3 or to extend the choice of license to its licensees as provided above. However, if you add GPL Version 3 code and therefore, elected the GPL Version 3 license, then the option applies only if the new code is made subject to such option by the copyright holder.

gexf's People

Contributors

duncdrum avatar mbastian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gexf's Issues

Add GEXF 1.3 specifications

Goals are

  1. to update the RelaxNG specifications so XSD files can be generated. Sources for 1.2 version are in specs folder.
  2. update the PDF primer document. Latex sources are in the primer document.

xml version

gexf 1.3 could change to xml 1.1. I think it should be the default, but we'll have to make sure that this doesn't interfere with xml1.0 dates e.g. when importing gexf1.2 graphs.

Does <meta> accept extraneous items?

Related to graphology/graphology#497

It seems to me the specs are not particularly precise regarding what the <meta> section should accept, but the xsd schema seems to indicate you should only be able to specify <creator>, <description> and <keywords>. What's more, I think I already found gexf in the wild having arbitrary tags there, notably <title>.

Should we amend the xsd schema to fit usage? Am I hallucinating this usage? What was meant to be accepted here?

static datatypes and attributes

@mbastian said

  • Add an optional edge kind attribute: This is the base of the property graph and defined some kind of label that defines the nature of the relationship. Unfortunately we already use type (for directed/undirected) and label (unique string for each edge) but "kind" seems clear enough.
  • idtype: The current 1.2 specifications describe an idtype attribute one can set on graph to configure the type of element ids. This is actually something that we never implemented in the import/export and could now be done because GraphStore supports it. So I suggest to start supporting this and also add long in addition of string (default) and integer.
  • slice mode: To make the distiction between dynamic graphs contained into a single GEXF (i.e. our current 'dynamic' mode) and dynamic graphs contained in a collection of GEXF files I suggest to introduce an additional 'mode' attribute names 'slice'. The possible values are currently 'static' (default) and 'dynamic'.
  • Add a new “hex” attribute to viz:color: It would allow to use things like hex=“#FF00FF”. I would suggest to support alpha there as well.

`xmllint` failed to compile XSD schema 1.3

I tried to validate a gexf file version 1.3 with xmllint version 21003 as described in the documentation, but I got following error:

$ touch test.gexf
$ xmllint -debugent -noout -schema http://gexf.net/1.3/gexf.xsd test.gexf
new input from file: http://gexf.net/1.3/gexf.xsd
new input from file: http://gexf.net/1.3/dynamics.xsd
new input from file: http://gexf.net/1.3/viz.xsd
http://gexf.net/1.3/gexf.xsd:22: element element: Schemas parser error : element decl. '{http://gexf.net/1.3}graph', attribute 'type': The QName value '{http://gexf.net/1.3}graph-content' does not resolve to a(n) type definition.
http://gexf.net/1.3/gexf.xsd:43: element element: Schemas parser error : element decl. '{http://gexf.net/1.3}node', attribute 'type': The QName value '{http://gexf.net/1.3}node-content' does not resolve to a(n) type definition.
http://gexf.net/1.3/gexf.xsd:51: element element: Schemas parser error : element decl. '{http://gexf.net/1.3}edge', attribute 'type': The QName value '{http://gexf.net/1.3}edge-content' does not resolve to a(n) type definition.
WXS schema http://gexf.net/1.3/gexf.xsd failed to compile
new input from file: test.gexf
test.gexf:1: parser error : Document is empty

dynamic graphs and time formats

@mbastian wrote

  • Add a “timerepresentation” enum in : The value would either be “interval” or “timestamp”. Interval would the default so we’re backward compatible. This configures the way the time is represented and we choose not to mix the two so it's needs to be explicitly set.
  • Add a “timestamp” attribute to : This allows to define a timestamp for the entire graph. That’s the corner stone of supporting collections of GEXF files where each is a slice with a timestamp value. Essentially, it means that each element in the graph exists at this timestamp. If the attribute columns are dynamic we would also set values at that time.
  • As we want a “timestamp” attribute for we should revisit the meaning of the “start” and “end” attributes in as well. Right now, they define the dynamics' bounds but that could be inferred from the data as well by taking the min and max so I don't think it's very useful. Instead, it could define the interval for the entire graph like the new "timestamp" would do.
  • Add a “timestamps” attribute to node/edge: Add an array of timestamps. Each of the element in the list should follow the format agreed on in "timeformat".
  • Add “timestamp” to : Defines a unique time 't' for this attribute value.
  • Add "timezone" configuration: Timezone can be defined as part of the timestamps themselves (e.g. 2015-01-01T13) but it should be possible to define a global timezone if this is omitted. By default, we would use the local user timestamp.
  • consistency between intervals and timestamps: Both time representation should have the same feature. If we allow to define "timestamps" on elements we should also allow "intervals". Similarly if we keep the concept for intervals we should add support for timestamp spells as well.

Wiki > code sample on how to properly "Use the count XML-attribute"

Hi,

the wiki is really nice to read and use. I've just found that it was a good practice to add the count attribute on nodes.
It could be nice if you were adding it by default on the code samples so people do not forget (or even think) to put it in their gexf files.

Other Graph XML specifications/formats

I understand that GEXF's design is mostly done around Gephi, nonetheless, it may be a good idea to try to keep track of other Graph XML formats providing similar support. This could bring ideas about needed/desired features for both GEXF and Gephi. Here are a few examples:

  • DGML: Directed Graph Markup Language (link)
  • GraphML (link)
  • DGML: Directed Graph Markup Language (link)
  • XGMML: eXtensible Graph Markup and Modeling Language (link)

XML formats used in Phylogenetics (some interesting features to consider for GEXF)

Is gexf 1.2 really deprecated?

When using Gephi, I receive warnings that 1.2draft is deprecated. However, it also appears that 1.3 is a "work in progress."

Could you please advise on the appropriate way to produce a gexf for importing into Gephi? Thanks.

Modify array strings

Something I forgot to mention, we've modified the array support. The 1.2 format supports something called a "liststring" which is basically an array of strings and would be able to parse something like foo|bar where | is the separator. This wasn't very well done and @eduramiba improved the underlying array parsing and printing code so we can parse things like [foo, bar], foo,bar or even ["foo", "bar"]. We've also added new types: listboolean, listinteger, listlong, listdouble.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.