Hi Adrian, A detailed check of your issue revealed:
* The entity is deleted (as expected) * The response code 404 is wrong. Calling Response.noContent() results in a 404 response (what is not expected) I will change the implementation so that for deletes of a specific entity the removed entity is returned. For a wildcard delete (id=*) an empty 200 response is returned. The issue number for this is STANBOL-1432 [1] Thanks for reporting! best Rupert [1] https://issues.apache.org/jira/browse/STANBOL-1432 On Tue, Jun 30, 2015 at 3:40 PM, Rupert Westenthaler <rupert.westentha...@gmail.com> wrote: > Hi Adrian, > > This looks like a bug. I will try to replicate this and take a look. > What Yard implementation do you use for your ManagedSite (Solr or Clerezza)? > > best > Rupert > > On Mon, Jun 29, 2015 at 9:30 PM, Adrian Dinu <adr...@r-2.ca> wrote: >> Hi Rupert, >> Thank you for explanations. >> I am still not able to find out what is the parsed URI that Stanbol uses. I >> create a named entity (Marry Smith) using this file >> >> <?xml version="1.0" encoding="UTF-8"?> >> <rdf:RDF >> xmlns="http://schema.org/" >> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> xmlns:foaf="http://xmlns.com/foaf/0.1/" >> xml:base="file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/"> >> >> <Person rdf:about="Marry.Smith.rdf#Marry_Smith"> >> <rdf:label>Marry Smith</rdf:label> >> <foaf:name>Marry Smith</foaf:name> >> </Person> >> >> </rdf:RDF> >> >> by POSTing it with cURL >> >> C:\EntityPerson>curl -i -X POST -H "Content-Type:application/rdf+xml" -T >> Marry.Smith.rdf "http://localhost:8080/entityhub/site/r2HR/entity" >> HTTP/1.1 201 Created >> Date: Mon, 29 Jun 2015 18:48:15 GMT >> Location: >> http://localhost:8080/entityhub/site/r2HR/entity?id=file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_Smith >> Accept: application/json >> Content-Length: 0 >> Server: Jetty(7.x.y-SNAPSHOT) >> >> Then I try to erase it by using its ID from above, but it is not recognized >> as a valid one: >> >> C:\Users\Acer\Documents\Semantic\Stanbol\EntityPerson>curl -X DELETE >> "http://localhost:8080/entityhub/site/r2HR/entity?id=file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPer >> son/Marry.Smith.rdf#Marry_Smith" >> No Entity with the parsed Id >> 'file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf' >> is present on the ManagedSite 'r2HR'! >> >> However, if I attempt to POST it again (not to update, with PUT) >> >> C:\EntityPerson>curl -i -X POST -H "Content-Type:application/rdf+xml" -T >> Marry.Smith.rdf "http://localhost:8080/entityhub/site/r2HR/entity" >> >> I get >> >> Unable to update an Entity >> file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf#Marry_Smith >> becuase it does already exists and updateing existing is deactivated. You >> might want to set the 'does already' parameter to TRUE in your Request >> >> In my understanding, this message says that the ID of the entity is indeed >> >> ID= >> file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf#Marry_Smith >> >> <<When you delete entities you need to parse the URIs as defined by the RDF >> data. >> Isn't >> file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf#Marry_Smith >> the URI parsed from the RDF file content above? >> >> What am I missing? Is it a matter of syntax maybe? I tried with "... >> Marry.Smith.rdf#Marry_Smith", "... Marry.Smith.rdf:Marry_Smith", "... >> Marry.Smith.rdf#Marry%20Smith", "... Marry.Smith.rdf" >> >> Thank you, >> Adrian >> >> -----Message d'origine----- >> De : Rupert Westenthaler [mailto:rupert.westentha...@gmail.com] >> Envoyé : June 27, 2015 6:29 AM >> À : dev@stanbol.apache.org >> Objet : Re: Entityhub Lookup : what ID to use? >> >> Hi, >> >> The ids of Entities are taken form the uploaded RDF data. If you parse an ID >> in the PUT or POST request it is just used to filter the RDF triples in the >> parsed RDF graph. >> >> So e.g. if you file contains >> >> <http://www.example.org/my#entity1> rdf:type schema:Person . >> <http://www.example.org/my#entity1> rdfs:label "Person1" . >> <http://www.example.org/my#entity2> rdf:type schema:Person . >> <http://www.example.org/my#entity2> rdfs:label "Person2" . >> >> If you just add those data (e.g. by a POST request to the entityhub/entity >> endpoint). Two entities my:entity1 and my:entity2 will be created. >> >> If you POST the data with the id=http://www.example.org/my#entity1 >> parameter only the first two triples would be added to the Entityhub. >> >> If you POST the data with the id=http://www.test.org/other#other >> parameter no triples would be added as their is no match with the uploaded >> RDF data. >> >> So in most cases it is sufficient to just upload the RDF files. >> >> When you delete entities you need to parse the URIs as defined by the RDF >> data. >> >> best >> Rupert >> >> On Fri, Jun 26, 2015 at 3:59 PM, Adrian Dinu <adr...@r-2.ca> wrote: >>> Hi Rupert, >>> Thank you for your reply. >>> Adding "header_Accept=text/turtle" did not provide a result either, I >>> get >>> >>> No symbol found for >>> 'file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf#Marry_Smith'. >>> >>> I tried with the others found at http://localhost:8080/enhance (REST >>> API link) application/json (JSON-LD) application/rdf+xml (RDF/XML) >>> application/rdf+json (RDF/JSON) text/turtle (Turtle) text/rdf+nt >>> (N-TRIPLES) >>> >>> with the same result. >>> >>> I thought that the ID in the response received at the time when the entity >>> was created(by cURL), i.e. >>> >>> HTTP/1.1 100 Continue >>> HTTP/1.1 201 Created >>> Location: >>> http://localhost:8080/entityhub/site/r2HR/entity?id=file:///C:/Users/A >>> cer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_Sm >>> ith >>> >>> represents the ID I should use for /entityhub/lookup and >>> /entityhub/entity DELETE but apparently it does not. >>> >>> By looking at http://localhost:8080/entityhub/lookup I can see among >>> the instructions there >>> >>> Subresource /lookup?id={uri}&create={create} and Request GET >>> /lookup?id={uri}&create={create} >>> >>> What exactly is the {uri} I need to use in my case then? >>> >>> Best, >>> Adrian >>> >>> -----Message d'origine----- >>> De : Rupert Westenthaler [mailto:rupert.westentha...@gmail.com] >>> Envoyé : June 26, 2015 10:08 AM >>> À : dev@stanbol.apache.org >>> Objet : Re: Entityhub Lookup : what ID to use? >>> >>> Hi, >>> >>> The Stanbol Entityhub does not have an RDF to HTML serializer. Because >>> of that it responds with >>> >>> "The registered message body writers compatible with the MIME media >>> type are: >>> text/html; charset=utf-8" >>> >>> If you send an RDF mime type (e.g. text/turtle) as Accept header it should >>> work just fine. >>> >>> Try to add "&header_Accept=text/turtle" to the end of your URL when >>> requesting an Entity via the browser. >>> >>> e.g. >>> >>> http://localhost:8080/entityhub/lookup?id=file:///C:/Users/Acer/Docume >>> nts/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_Smith&header >>> _Accept=text/turtle >>> >>> best >>> Rupert >>> >>> On Thu, Jun 25, 2015 at 4:35 PM, Adrian Dinu <adr...@r-2.ca> wrote: >>>> Hello, >>>> I am not able to access my local named entities by ID. >>>> >>>> I create the entity Marry_Smith via cURL using this file >>>> (Marry.Smith.rdf) >>>> --------------------------------------------------------------------- >>>> - >>>> ------ <?xml version="1.0" encoding="UTF-8"?> <rdf:RDF >>>> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >>>> xmlns:dc="http://purl.org/dc/elements/1.1/" >>>> xmlns:foaf="http://xmlns.com/foaf/0.1/" >>>> xml:base="file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/" >>>>> >>>> <NamedIndividual rdf:about="Marry.Smith.rdf#Marry_Smith"> >>>> <rdf:label>Marry Smith</rdf:label> >>>> <foaf:name>Marry Smith</foaf:name> >>>> </NamedIndividual> >>>> </rdf:RDF> >>>> --------------------------------------------------------------------- >>>> - >>>> ---------------- >>>> The response frum cURL is >>>> >>>> C:\Users\Acer\Documents\Semantic\Stanbol\EntityPerson>curl -i -X PUT -H >>>> "Content-Type:application/rdf+xml" -T Marry.Smith.rdf >>>> "http://localhost:8080/entityhub/site/r2HR/entity" >>>> HTTP/1.1 100 Continue >>>> HTTP/1.1 201 Created >>>> Date: Thu, 25 Jun 2015 13:21:27 GMT >>>> Location: >>>> http://localhost:8080/entityhub/site/r2HR/entity?id=file:///C:/Users/ >>>> A >>>> cer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_S >>>> m >>>> ith >>>> Accept: application/json >>>> Content-Length: 0 >>>> Server: Jetty(7.x.y-SNAPSHOT) >>>> >>>> When I put >>>> http://localhost:8080/entityhub/site/r2HR/entity?id=file:///C:/Users/ >>>> A >>>> cer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_S >>>> m >>>> ith >>>> in the browser address box I get >>>> >>>> HTTP ERROR: 500 >>>> Problem accessing /entityhub/site/r2HR/entity. Reason: >>>> Internal Server Error >>>> >>>> and the following messages in the monitor window: >>>> >>>> 25-Jun-2015 11:03:25 AM >>>> com.sun.jersey.spi.container.ContainerResponse >>>> write >>>> SEVERE: The registered message body writers compatible with the MIME media >>>> type are: >>>> text/html; charset=utf-8 -> >>>> org.apache.stanbol.commons.viewable.writer.impl.ViewableWriter >>>> >>>> org.apache.stanbol.commons.web.rdfviewable.writer.impl.LdViewableWrit >>>> e >>>> r >>>> */* -> >>>> com.sun.jersey.core.impl.provider.entity.FormProvider >>>> com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider >>>> com.sun.jersey.core.impl.provider.entity.StringProvider >>>> com.sun.jersey.core.impl.provider.entity.ByteArrayProvider >>>> com.sun.jersey.core.impl.provider.entity.FileProvider >>>> com.sun.jersey.core.impl.provider.entity.InputStreamProvider >>>> com.sun.jersey.core.impl.provider.entity.DataSourceProvider >>>> com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General >>>> com.sun.jersey.core.impl.provider.entity.ReaderProvider >>>> com.sun.jersey.core.impl.provider.entity.DocumentProvider >>>> com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider >>>> com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter >>>> com.sun.jersey.server.impl.template.ViewableMessageBodyWriter >>>> >>>> com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Gener >>>> al >>>> >>>> com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Gener >>>> a >>>> l >>>> >>>> 25-Jun-2015 11:03:25 AM >>>> com.sun.jersey.spi.container.ContainerResponse >>>> logException >>>> SEVERE: Mapped exception to response: 500 (Internal Server Error) >>>> javax.ws.rs.WebApplicationException: >>>> com.sun.jersey.api.MessageException: A message body writer for Java class >>>> org.apache.stanbol.entityhub.core.model.EntityImpl, and Java type cla ss >>>> org.apache.stanbol.entityhub.core.model.EntityImpl, and MIME media type >>>> text/html; charset=utf-8 was not found >>>> at >>>> com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285) >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1448) >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360) >>>> at >>>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350) >>>> at >>>> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) >>>> at >>>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) >>>> at >>>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >>>> at >>>> org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96) >>>> at >>>> org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:78) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) >>>> at >>>> org.apache.stanbol.commons.httpqueryheaders.impl.QueryHeadersFilter.doFilter(QueryHeadersFilter.java:75) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) >>>> at >>>> org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilterHttp(ResourceServingFilter.java:148) >>>> at >>>> org.apache.stanbol.commons.web.resources.ResourceServingFilter.doFilter(ResourceServingFilter.java:91) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) >>>> at >>>> org.apache.stanbol.commons.security.auth.AuthenticatingFilter$1.run(AuthenticatingFilter.java:163) >>>> at java.security.AccessController.doPrivileged(Native Method) >>>> at javax.security.auth.Subject.doAsPrivileged(Unknown Source) >>>> at >>>> org.apache.stanbol.commons.security.auth.AuthenticatingFilter.doFilter(AuthenticatingFilter.java:159) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88) >>>> at >>>> org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) >>>> at >>>> org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) >>>> at >>>> org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) >>>> at >>>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:654) >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445) >>>> at >>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225) >>>> at >>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044) >>>> at >>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372) >>>> at >>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189) >>>> at >>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978) >>>> at >>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) >>>> at >>>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) >>>> at >>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) >>>> at org.eclipse.jetty.server.Server.handle(Server.java:369) >>>> at >>>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486) >>>> at >>>> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:933) >>>> at >>>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:995) >>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) >>>> at >>>> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) >>>> at >>>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) >>>> at >>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) >>>> at >>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) >>>> at >>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) >>>> at >>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) >>>> at java.lang.Thread.run(Unknown Source) Caused by: >>>> com.sun.jersey.api.MessageException: A message body writer for Java >>>> class org.apache.stanbol.entityhub.core.model.EntityImpl, and Java type >>>> class org.apache.stanbol.enti tyhub.core.model.EntityImpl, and MIME media >>>> type text/html; charset=utf-8 was not found >>>> ... 61 more >>>> >>>> Is >>>> >>>> file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.S >>>> m >>>> ith.rdf%23Marry_Smith >>>> >>>> the ID that Stanbol uses for this entity? >>>> >>>> Neither Entityhub Lookup does not work with it : >>>> >>>> http://localhost:8080/entityhub/lookup?id=file:///C:/Users/Acer/Docum >>>> e nts/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf%23Marry_Smith >>>> >>>> produces >>>> "No symbol found for >>>> 'file:///C:/Users/Acer/Documents/Semantic/Stanbol/EntityPerson/Marry.Smith.rdf#Marry_Smith'. >>>> " >>>> >>>> >>>> Can anybody explain to me please what is the actual ID I should use? >>>> >>>> Thank you, >>>> Adrian >>>> >>>> >>> >>> >>> >>> -- >>> | Rupert Westenthaler rupert.westentha...@gmail.com >>> | Bodenlehenstraße 11 ++43-699-11108907 >>> | A-5500 Bischofshofen >>> | REDLINK.CO >>> .......................................................................... >>> | http://redlink.co/ >>> >>> >>> >>> ----- >>> No virus found in this message. >>> Checked by AVG - www.avg.com >>> Version: 2014.0.4813 / Virus Database: 4365/10100 - Release Date: >>> 06/26/15 >>> >>> >>> ----- >>> No virus found in this message. >>> Checked by AVG - www.avg.com >>> Version: 2014.0.4800 / Virus Database: 4365/10052 - Release Date: 06/19/15 >>> Internal Virus Database is out of date. >>> >> >> >> >> -- >> | Rupert Westenthaler rupert.westentha...@gmail.com >> | Bodenlehenstraße 11 ++43-699-11108907 >> | A-5500 Bischofshofen >> | REDLINK.CO >> .......................................................................... >> | http://redlink.co/ >> >> >> >> ----- >> No virus found in this message. >> Checked by AVG - www.avg.com >> Version: 2014.0.4813 / Virus Database: 4365/10122 - Release Date: 06/29/15 >> >> >> ----- >> No virus found in this message. >> Checked by AVG - www.avg.com >> Version: 2014.0.4813 / Virus Database: 4365/10122 - Release Date: 06/29/15 >> > > > > -- > | Rupert Westenthaler rupert.westentha...@gmail.com > | Bodenlehenstraße 11 ++43-699-11108907 > | A-5500 Bischofshofen > | REDLINK.CO > .......................................................................... > | http://redlink.co/ -- | Rupert Westenthaler rupert.westentha...@gmail.com | Bodenlehenstraße 11 ++43-699-11108907 | A-5500 Bischofshofen | REDLINK.CO .......................................................................... | http://redlink.co/