Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into RexProRefactor
Browse files Browse the repository at this point in the history
  • Loading branch information
spmallette committed Aug 5, 2012
2 parents d8a403f + b088081 commit 79f3a94
Show file tree
Hide file tree
Showing 48 changed files with 3,454 additions and 25 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,6 +3,7 @@
/data
/rexster-server/release
/rexster-server/target
/rexster-kibbles/target
/rexster-kibbles/*/target
/rexster-core/target
/rexster-console/target
Expand Down
5 changes: 3 additions & 2 deletions CHANGELOG.textile
Expand Up @@ -5,13 +5,13 @@ h2. Rexster 0.y.z

!https://github.com/tinkerpop/rexster/raw/master/doc/images/rexster-2.png!

h3. Version 2.1.0 (NOT OFFICIALLY RELEASED YET)
h3. Version 2.1.0 (August 4, 2012)

```xml
<dependency>
<groupId>com.tinkerpop.rexster</groupId>
<artifactId>rexster</artifactId>
<version>2.1.0-SNAPSHOT</version>
<version>2.1.0</version>
</dependency>
```

Expand All @@ -21,6 +21,7 @@ h3. Version 2.1.0 (NOT OFFICIALLY RELEASED YET)
* Vertex query API.
* Fixed issue with inconsistencies of PUT, POST, and DELETE around manual indices.
* Restructured project to introduce rexster-core, rexster-console and rexster-protocol.
* Integration tests now run across TinkerGraph, Neo4j, OrientDB, Titan and Dex by default (Titan is disabled by default)

==<hr/>==

Expand Down
11 changes: 11 additions & 0 deletions doc/wiki/Acknowledgments.textile
@@ -0,0 +1,11 @@
<img width="100" src="https://github.com/tinkerpop/rexster/raw/master/doc/images/rexster-character-2.png"/>

This section provides a list of the people that have contributed in some way to the creation of Rexster.

# "Stephen Mallete":http://stephen.genoprime.com -- designed, developed, tested, and documented Rexster.
# "Marko A. Rodriguez":http://markorodriguez.com -- designed, developed, tested, and documented Rexster.
# "Peter Neubauer":http://www.linkedin.com/in/neubauer -- aided in the evangelizing and conceptualizing of Rexster.
# "Pierre De Wilde":http://www.linkedin.com/in/pierredewilde -- designs and tests new features.
# "Ketrina Yim":http://www.ketrinayim.com/ -- designed the Rexster logo.

Please review Rexster's "pom.xml":http://github.com/tinkerpop/rexster/blob/master/pom.xml. Rexster would not be possible without the work done by others to create these useful packages.
88 changes: 88 additions & 0 deletions doc/wiki/Basic-REST-API.textile
@@ -0,0 +1,88 @@
!https://github.com/tinkerpop/rexster/raw/master/doc/images/dog-reading.png!

This cheat sheet provides a review of the RESTful API for Rexster. Note that beyond the query parameters provided in the table below, the standard Rexster parameters @rexster.offset.start@, @rexster.offset.end@, and @rexster.returnKeys@ also work in cases where it makes sense. The @<graph>@ is the unique name of a graph configured within Rexster. The base of the URI, when running locally, is generally @localhost:8182@.

Please note that there are [[Rexster MIME Types]] that affect operations within the API.

h1. GET Operations

|_. returns |_. uri |_. description |
| graphs | @/graphs@ | get all the graphs |
| graph | @/graphs/<graph>@ | get the graph named <graph> |
| vertices | @/graphs/<graph>/vertices@ | get all vertices |
| vertices | @/graphs/<graph>/vertices?key=<key>&value=<value>@ | get all vertices for a key index given the specified @<key>@/@<value>@ |
| vertex | @/graphs/<graph>/vertices/<id>@ | get vertex with id @<id>@ |
| vertices | @/graphs/<graph>/vertices/<id>/out@ | get the adjacent out vertices of vertex @<id>@ ^4^ |
| vertices | @/graphs/<graph>/vertices/<id>/in@ | get the adjacent in vertices of vertex @<id>@ ^4^ |
| vertices | @/graphs/<graph>/vertices/<id>/both@ | get the both adjacent in and out vertices of vertex @<id>@ ^4^ |
| long | @/graphs/<graph>/vertices/<id>/outCount@ | get the number of out vertices of vertex @<id>@ ^4^ |
| long | @/graphs/<graph>/vertices/<id>/inCount@ | get the number of in vertices of vertex @<id>@ ^4^ |
| long | @/graphs/<graph>/vertices/<id>/bothCount@ | get the number of adjacent in and out vertices of vertex @<id>@ ^4^ |
| longs | @/graphs/<graph>/vertices/<id>/outIds@ | get the identifiers of out vertices of vertex @<id>@ ^4^ |
| longs | @/graphs/<graph>/vertices/<id>/inIds@ | get the identifiers of in vertices of vertex @<id>@ ^4^ |
| longs | @/graphs/<graph>/vertices/<id>/bothIds@ | get the identifiers of adjacent in and out vertices of vertex @<id>@ ^4^ |
| edges | @/graphs/<graph>/edges@ | get all edges |
| edges | @/graphs/<graph>/edges?key=<key>&value=<value>@ | get all edges for a key index given the specified @<key>@/@<value>@ |
| edge | @/graphs/<graph>/edges/<id>@ | get edge with id @<id>@ |
| edges | @/graphs/<graph>/vertices/<id>/outE@ | get the out edges of vertex @<id>@ ^4^ |
| edges | @/graphs/<graph>/vertices/<id>/inE@ | get the in edges of vertex @<id>@ ^4^ |
| edges | @/graphs/<graph>/vertices/<id>/bothE@ | get the both in and out edges of vertex @<id>@ ^4^ |
| indices | @/graphs/<graph>/indices@ | get all the indices associated with the graph |
| elements | @/graphs/<graph>/indices/index?key=<key>&value=<value>@ | get all elements with @<key>@ property equal to @<value>@ in @index@ |
| long | @/graphs/<graph>/indices/index/count?key=<key>&value=<value>@ | get a count of all elements with @<key>@ property equal to @<value>@ in @index@ |
| keys | @/graphs/<graph>/keyindices/@ | get the combination of vertex and edge keys |
| keys | @/graphs/<graph>/keyindices/vertex@ | get vertex keys |
| keys | @/graphs/<graph>/keyindices/edge@ | get edge keys |
| prefixes ^1^ | @/graphs/<graph>/prefixes@ | get the list of SailGraph prefixes |
| prefix ^1^ | @/graphs/<graph>/prefixes/prefix@ | get a specific prefix value |

h1. POST Operations

|_. returns |_. uri |_. description |
| vertex | @/graphs/<graph>/vertices@ | create a vertex with no specified identifier |
| vertex | @/graphs/<graph>/vertices/<id>@ | create a vertex with id @<id>@ ^2^ |
| vertex | @/graphs/<graph>/vertices/<id>?<key>=<value>&<key'>=<value'>@ | create a vertex with id @<id>@ and the provided properties (or update vertex properties if vertex already exists). ^2^ |
| edge | @/graphs/<graph>/edges?_outV=<id>&_label=friend&_inV=2&<key>=<key'>@ | create an out edge with no specified identifier from vertex @<id>@ to vertex @2@ labeled "friend" with provided properties. ^2^ |
| edge | @/graphs/<graph>/edges/3?_outV=<id>&_label=friend&_inV=2&<key>=<key'>@ | create an out edge with id @3@ from vertex @<id>@ to vertex @2@ labeled "friend" with provided properties. ^2^ |
| edge | @/graphs/<graph>/edges/3?<key>=<key'>@ | update the properties of the edge with id @3@ |
| index ^3^ | @/graphs/<graph>/indices/index?class=vertex@ | create a new manual index named @index@ |
| void | @/graphs/<graph>/keyindices/vertex/<key>@ | create a new key index for a vertex |
| void | @/graphs/<graph>/keyindices/edge/<key>@ | create a new key index for an edge |
| void ^1^ | @/graphs/<graph>/prefixes?namespace=http%3A%2F%2Fwww.ggl.com&prefix=pf@ | add a new SailGraph prefix with @namespace@ http://www.ggl.com and @prefix@ pf |

h1. PUT Operations

|_. returns |_. uri |_. description |
| vertex | @/graphs/<graph>/vertices/<id>?<key>=<value>&<key'>=<value'>@ | replaces the all existing properties of the vertex @<id>@ with those specified |
| edge | @/graphs/<graph>/edges/<id>?<key>=<value>&<key'>=<value'>@ | replaces the all existing properties of the edge @<id>@ with those specified |
| void | @/graphs/<graph>/indices/index?key=<key>&value=<value>&id=<id>@ | put vertex with id @<id>@ into @index@ at @<key>/<value>@ |

h1. DELETE Operations

|_. returns |_. uri |_. description |
| void | @/graphs/<graph>/vertices/<id>@ | remove vertex @<id>@ |
| void | @/graphs/<graph>/vertices/<id>?<key>&<key'>@ | remove properties @<key>@ and @<key'>@ from vertex @<id>@ |
| void | @/graphs/<graph>/edges/3@ | remove the edge with id @3@ |
| void | @/graphs/<graph>/edges/3?<key>&<key'>@ | remove properties @<key>@ and @<key'>@ from edge @3@ |
| void | @/graphs/<graph>/indices/index@ | drop the index named @index@ |
| void | @/graphs/<graph>/indices/index?key=<key>&value=<value>&class=vertex&id=<id>@ | remove the vertex @<id>@ from @index@ at @<key>/<value>@ |
| void ^1^ | @/graphs/<graph>/prefixes/prefix@ | remove the specified prefix |

^1^ Only applies to @SailGraph@ configurations.
^2^ Underlying graph database implementations must support the ability to assign the edge/vertex identifier. In cases where the graph database does not support the identifier (ie. Neo4j), the identifier supplied with be ignored and the graph assigned identifier will be returned in the JSON after successful graph element creation.
^3^ Note that when POSTing an index you may also pass a @params@ query string argument. This argument allows configuration parameters to be passed into the index itself (support of this feature is specific to the graph implementation itself). Please read the Neo4j Blueprints implementation for an "example":https://github.com/tinkerpop/blueprints/wiki/Neo4j-Implementation on how to configure an index. The @params@ argument is [[parsed to JSON|Mapping a URI to JSON]] so a query string that looked like @params.to_lower_case=true&params.type=fulltext&params.provider=lucene@ would construct a map of three index parameters.
^4^ Rexster utilizes "Vertex Query":https://github.com/tinkerpop/blueprints/wiki/Vertex-Query capabilities of Blueprints for these noted operations. These operations accept the following parameters: @_label@, @_properties@ and @limit@.

* @_label@ filters edges by label and may be either a single value or an array of values as in @_label=[created,knows]@
* @_limit@ limits the number of values returned.
* @_properties@ is an array of edge properties to filter on in the following fashion: @_properties=[ [weight,>,(f,0.5)], [weight,<,(f,1.0)] ]@. Note that property values respect [[Rexster Data Typing|Property Data Types]] and the following comparators: @<=, <, <>, >, >=@.

Since these REST operations are returning lists, the standard Rexster Parameters (discussed below) apply. Choosing to use @rexster.offset.end@ to limit to the top N results, is different than using @_limit@ in that @_limit@ pushes this filtering operation down to the underlying graph making it more efficient than @rexster.offset.end@ which does that filtering within Rexster itself.

In all cases, parameters may be POSTed or PUTed on the [[URI|Mapping a URI to JSON]] or as JSON using one of the [[Rexster MIME Types]].

h1. Rexster Parameters

* @rexster.offset.start@ - Expects a numeric value that represents the start point for returning a set of records and is used in conjunction with @rexster.offset.end@ to allow for paging of results. If used without a valid @rexster.offset.end@ parameter specified, Rexster will return all remaining records in the set.
* @rexster.offset.end@ - Expects a numeric value that represents the end point for returning a set of records and is used in conjunction with @rexster.offset.start@ to allow for paging of results. If used without a valid @rexster.offset.start@ parameter specified, Rexster will assume the start value to be zero.
* @rexster.returnKeys@ - Expects a comma separated list of property names to return in the results. Element meta-data will always be returned even if @rexster.returnKeys@ are specified. If a valid value for this parameter is not specified, then all properties are returned.
64 changes: 64 additions & 0 deletions doc/wiki/Command-Line.textile
@@ -0,0 +1,64 @@
Rexster is started and stopped through a command line interface exposed via the @rexster.sh@. When Rexster is started, it listens on a [[configurable port|Rexster Configuration]] (port 8183 by default) for shutdown and status requests.

h1. Starting Rexster

When starting Rexster from the command line using:

```text
./bin/rexster.sh --start
```

or with:

```text
./bin/rexster.sh -s
```

there are several options available:

* @-rp@, @--rexsterport@ - Overrides the @rexster-server-port@ configuration value in @rexster.xml@. This value is 8182 by default.
* @-wr@, @--webroot@ - Overrides the @web-root@ configuration value in @rexster.xml@.
* @-c@, @--configuration@ - Specify the location of a specific @rexster.xml@ file to use for configuration. If this argument is not specified, Rexster will first try to read a file called @rexster.xml@ from the root of the working directory. If it can't find that it will use the @com.tinkerpop.rexster.rexster.xml@ resource.
* @-d@, @--debug@ - When this flag is included on the command line, log messages from Jersey are no longer suppressed. May be useful when developing Rexster itself or building [[Extensions]].
* @-h@, @--help@ - When this flag is supplied on the command line, Rexster outputs a description of the command line options available. Rexster will not start when help is requested.

The following command will start Rexster on port 7788 with a configuration file called @my-rexster.xml@:

```text
./bin/rexster.sh --start -rp 7788 -c my-rexster.xml
```

h1. Stopping Rexster

When stopping Rexster from the command line using:

```text
./bin/rexster.sh --stop
```

or with the shorthand:

```text
./bin/rexster.sh -x
```

there are several options available:

* @-rh@, @--rexsterhost@ - The host/IP address to which the shutdown command will be issued. Shutdown will assume @127.0.0.1@ if the parameter is not specified.
* @-rp@, @--rexsterport@ - The port of the host to which the shutdown command will be issued. Shutdown will assume @8183@ if the parameter is not specified.
* @-w@, @--wait@ - Wait for the server to confirm that shutdown was performed.
* @-h@, @--help@ - When this flag is supplied on the command line, a description of the command line options is displayed. A command to stop Rexster will not be issued when help is requested.

The following command would issue a stop message to a Rexster server listening on @192.168.0.123@ and port @7788@.

```text
./bin/rexster.sh --stop -rh 192.168.0.123 -rp 7788
```

h1. Other Commands

Aside from starting and stopping Rexster, there are several other commands that can be executed against Rexster.

* @-u@, @--status@ - Gets the status of the Rexster server (running or not). Use @-h@ with it for a list of command parameters.
* @-v@, @--version@ - Shows the version of Rexster.
* @-h@, @--help@ - When this flag is supplied on the command line, a description of the command options is displayed.

0 comments on commit 79f3a94

Please sign in to comment.