From: Rob V. <rv...@do...> - 2015-07-27 13:30:45
|
Ian The fact that you need authentication was a fairly major thing to leave out, details do matter. The stack trace of the error would also be useful information. UriLoader only does simple HTTP GET requests so relies on the resource being accessible. There is some caching involved so it is possible that the cached copy could be empty. Caching should only happen if the request succeeds, unfortunately many poorly configured HTTP servers send back a regular HTML login page with a 200 OK rather than a proper HTTP 401 thus it appears as if the request succeeded when it did not. This means we can try and parse RDFa out of that HTML login page resulting in caching an empty graph for the URI which would explain the behaviour you describe. Are you sure you assigned the Base URI to the correct graph? Looking at your code snippet you define a Graph called triplesGraph but you parse into a different graph GraphOfFolders The other thing that may be causing the issue is that your code as it stands forces the library to use DOM based parsing and it may be that there is a bug in the default Base URI handling for DOM based parsing. Remove the lines that create the XmlDocument locally and instead try the following: p.Load(graph, new StringReader(data)); This will instead allow the library to use streaming parsing of the RDF/XML which may not exhibit the issue, if it does resolve the issue then please let us know as it would imply the presence of a bug in the DOM based parsing mode. Rob From: "Giblett, Ian" <ian...@ea...> Reply-To: dotNetRDF User Help and Support <dot...@li...> Date: Monday, 27 July 2015 13:50 To: dotNetRDF User Help and Support <dot...@li...> Subject: Re: [dotNetRDF-Support] Help Resolving Name Space issue > Hi Rob. Thanks for your quick reply! > > I tried the URIloader, but it only returns to me an empty graph. > Is the URILoader supposed to perform a web request on a URL or is it working > exclusively with cached data? > If it is doing a request over the web, I don’t see how it could work since I > didn’t enter any header information, username or password. > (the _webclient in my example takes care of all that. > My reason for working with the xml was solely a means of retrieving the > information from an HTTP Get before I work on the data. > > Regarding the BaseUri, I have tried setting the BaseUri property but it makes > no difference, I get exactly the same result. > Do you have any further suggestions? > > Kind Regards, > > Ian > > > > From: Rob Vesse [mailto:rv...@do...] > Sent: 27 July 2015 12:08 > To: dotNetRDF User Help and Support > Subject: Re: [dotNetRDF-Support] Help Resolving Name Space issue > > > Ian > > > > A default Base URI is only assigned to the target graph under certain > circumstances, typically this is when you load the data explicitly through > something like FileLoader or UriLoader where it knows something about where > the data originates from. The parsers themselves simply use the Base URI of > the input graph as the default Base URI assuming the graph comes with one. > > > > In your example you do not assign a URI to the graph so there is no default > Base URI for the parser to use. > > > > Note that you can simplify your code to the following (assuming you don't need > the XML elsewhere): > > > > Graph tripleGraph = new Graph(); > > UriLoader.Load(tripleGraph, new Uri(URL)); > > > > If you do need to keep the XML around simply assign the Base URI to the graph > before you call the parser: > > > > tripleGraph.BaseUri = new Uri(URL); > > > > Hope this helps, > > > > Rob > > > > From: "Giblett, Ian" <ian...@ea...> > Reply-To: dotNetRDF User Help and Support > <dot...@li...> > Date: Monday, 27 July 2015 11:27 > To: <dot...@li...> > Subject: [dotNetRDF-Support] Help Resolving Name Space issue > > >> >> Hello, >> >> I’m having trouble parsing some rdf that I’ve received from IBM Doors. >> (I’m trying to write an OSLC consumer application.) >> >> When I try to load my graph and xml into my RdfXmlParser I get an error >> message which says “Cannot resolve a Relative Namespace since there is no >> in-scope Base URI. Does anyone know what is going on here? >> I was under the impression that if no Base URI was present, a default one >> would be assigned. >> >> Since I am getting the xml straight from the tool, is there some parsing >> technique I can employ to get around this without having to modify the xml? >> (See attached for xml.) >> >> The code I’m using to parse is: >> >> String URL; >> Graph tripleGraph = new Graph(); >> >> var ServiceProvder_Response = _webClient.DownloadString(URL); >> >> XmlDocument ServiceProviderXML = new XmlDocument(); >> ServiceProviderXML.LoadXml(ServiceProvder_Response.ToString()); >> >> RdfXmlParser p = new RdfXmlParser(); >> p.Load(GraphOfFolders, ServiceProviderXML); //This line causes >> the error >> >> >> >> Kind Regards, >> >> Ian >> >> >> ----------------------------------------------------------------------------- >> - _______________________________________________ dotNetRDF-Support mailing >> list dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-support > ------------------------------------------------------------------------------ > _______________________________________________ dotNetRDF-Support mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-support |