You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Bill Roberts (JIRA)" <ji...@apache.org> on 2013/04/14 14:24:17 UTC

[jira] [Created] (JENA-435) Two services in one fuseki instance can conflict if the initial characters of the fuseki:name of one service are equal to the full fuseki:name of the other service

Bill Roberts created JENA-435:
---------------------------------

             Summary: Two services in one fuseki instance can conflict if the initial characters of the fuseki:name of one service are equal to the full fuseki:name of the other service
                 Key: JENA-435
                 URL: https://issues.apache.org/jira/browse/JENA-435
             Project: Apache Jena
          Issue Type: Bug
          Components: Fuseki
    Affects Versions: Fuseki 0.2.6
         Environment: tested on Mac OSX 10.8.2.
            Reporter: Bill Roberts


Steps to reproduce

fuseki-server --config=test.ttl

where test.ttl contains the following:

===============
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
tdb:GraphTDB    rdfs:subClassOf  ja:Model .

<#service1>  rdf:type fuseki:Service ;
    fuseki:name              "abc" ;       # http://host:port/blah
    fuseki:serviceQuery      "sparql" ;    # SPARQL query service
    fuseki:serviceUpdate     "update" ;   # SPARQL update service
    fuseki:serviceReadWriteGraphStore "data" ;     # SPARQL Graph store protocol (read and write)
    fuseki:dataset           <#dataset-foo> ;
    .

<#service2>  rdf:type fuseki:Service ;
    fuseki:name              "abc123" ;       # http://host:port/blah
    fuseki:serviceQuery      "sparql" ;    # SPARQL query service
    fuseki:serviceUpdate     "update" ;   # SPARQL update service
    fuseki:serviceReadWriteGraphStore "data" ;     # SPARQL Graph store protocol (read and write)
    fuseki:dataset           <#dataset-bar> ;
    .    
    

 <#dataset-foo> rdf:type      tdb:DatasetTDB ;
     tdb:location "/Users/bill/Data/tdb/pqr" ;
     tdb:unionDefaultGraph true ;
     .

<#dataset-bar> rdf:type      tdb:DatasetTDB ;
     tdb:location "/Users/bill/Data/tdb/xyz" ;
     tdb:unionDefaultGraph true ;
     .

============
Create empty directories 'pqr' and 'xyz' to hold the data for the two SPARQL datasets.

Then, PUT some data into the first service (fuseki:name 'abc')  (any valid RDF will do)

curl -v -H "Content-type: text/turtle" --upload-file file1.ttl http://localhost:3030/abc/data?graph=http://test1
-- responds with 201 Created

Then PUT some data into the second service  (fuseki:name 'abc123')

curl -v -H "Content-type: text/turtle" --upload-file file2.ttl http://localhost:3030/abc123/data?graph=http://test1
- responds with 204 Created - indicating that the graph already existed before this PUT.

Checks on the contents of the two datasets indicate that the second PUT went into the service 'abc', not into 'abc123'.

Guess at possible cause: does the URL parsing in fuseki involve some kind of simple regex which leads to 'abc' giving a successful match against 'abc123' when it should not match?


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira