Graph Store Protocol Tests

$HOST$ is the host where the Graph Store Protocol implementation is listening

$GRAPHSTORE$ is the path of the URL of the graph store

$NEWPATH$ is the URL returned in the Location HTTP header

HTTP response messages are in the format:

            HTTP Status code
            Headers
            <space>
            Body                    
        

PUT - Initial state

Request

PUT $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:fn "John Doe" 
    ].            
        

Response

201 Created            
        

GET of PUT - Initial state

Request

GET $GRAPHSTORE$?graph=$GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Accept: text/turtle

        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
   foaf:businessCard [ 
        a v:VCard;
        v:fn "John Doe" 
   ].
        

HEAD on an existing graph

Request

HEAD $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$

        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...
        

HEAD on a non-existing graph

Request

HEAD $GRAPHSTORE$/person/4.ttl HTTP/1.1
Host: $HOST$

        

Response

404 Not Found                        
        

PUT - graph already in store

Request

PUT $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:fn "Jane Doe" 
    ].
        

Response

204 No Content
        

GET of PUT - graph already in store

Request

GET $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Accept: text/turtle

        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
   foaf:businessCard [ 
        a v:VCard;
        v:fn "Jane Doe" 
   ] .
        

PUT - default graph

Request

PUT $GRAPHSTORE$?default HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .
        

Response

201 Created            
        

GET of PUT - default graph

Request

GET $GRAPHSTORE$?default HTTP/1.1
Host: $HOST$
Accept: text/turtle
         
        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .            
        

PUT - mismatched payload

Request

PUT $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:fn "Jane Doe" 
    ].            
        

Response

400 Bad Request            
        

PUT - empty graph

Request

PUT $GRAPHSTORE$?graph=$GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8
   
        

Response

200 OK            
        

GET of PUT - empty graph

Request

GET $GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$
Accept: text/turtle

        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...
        

PUT - replace empty graph

Request

PUT $GRAPHSTORE$?graph=$GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .
        

Response

200 OK            
        

GET of replacement for empty graph

Request

GET $GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$
Accept: text/turtle

        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .
        

DELETE - existing graph

Request

DELETE $GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$            

        

Response

200 OK            
        

GET of DELETE - existing graph

Request

GET $GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$            

        

Response

404 Not Found            
        

DELETE - non-existent graph

Request

DELETE $GRAPHSTORE$/person/2.ttl HTTP/1.1
Host: $HOST$            

        

Response

404 Not Found            
        

POST - existing graph

Request

POST $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

<http://$HOST$/$GRAPHSTORE$/person/1> foaf:name "Jane Doe"            
        

Response

200 OK            
        

GET of POST - existing graph

Request

GET $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Accept: text/turtle
           
        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
    foaf:name "Jane Doe";
    foaf:businessCard [ 
        a v:VCard;
        v:fn "Jane Doe" 
    ] .            
        

POST - multipart/form-data

Request

POST $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$
Content-Type: multipart/form-data; boundary=a6fe4cd636164618814be9f8d3d1a0de

--a6fe4cd636164618814be9f8d3d1a0de
Content-Disposition: form-data; name="lastName.ttl"; filename="lastName.ttl"
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://$HOST$/$GRAPHSTORE$/person/1> foaf:familyName "Doe"

--a6fe4cd636164618814be9f8d3d1a0de
Content-Disposition: form-data; name="firstName.ttl"; filename="firstName.ttl"
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<http://$HOST$/$GRAPHSTORE$/person/1> foaf:givenName "Jane"

--a6fe4cd636164618814be9f8d3d1a0de--
        

Response

200 OK            
        

GET of POST - multipart/form-data

Request

GET $GRAPHSTORE$/person/1.ttl HTTP/1.1
Host: $HOST$         
   
        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

<http://$HOST$/$GRAPHSTORE$/person/1> a foaf:Person;
    foaf:name           "Jane Doe";
    foaf:givenName      "Jane";
    foaf:familyName     "Doe";
    foaf:businessCard [ 
        a               v:VCard;
        v:fn            "Jane Doe" 
    ] .
        

POST - create new graph

Request

POST $GRAPHSTORE$ HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .            
        

Response

201 Created
Location: $NEWPATH$

        

GET of POST - create new graph

Request

GET $NEWPATH$ HTTP/1.1
Host: $HOST$
Accept: text/turtle
        
        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .         
        

POST - empty graph to existing graph

Request

POST $NEWPATH$ HTTP/1.1
Host: $HOST$
Content-Type: text/turtle; charset=utf-8
     
        

Response

204 No Content            
        

GET of POST - after noop

Request

GET $NEWPATH$ HTTP/1.1
Host: $HOST$
Accept: text/turtle
         
        

Response

200 OK
Content-Type: text/turtle; charset=utf-8
Content-Length: ...

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix v: <http://www.w3.org/2006/vcard/ns#> .

[]  a foaf:Person;
    foaf:businessCard [ 
        a v:VCard;
        v:given-name "Alice" 
    ] .