- From: Olaf Hartig <hartig@informatik.hu-berlin.de>
- Date: Tue, 18 Jan 2011 10:30:00 +0100
- To: Martin Hepp <martin.hepp@ebusiness-unibw.org>, semantic-web@w3.org
- Cc: public-lod@w3.org
Hey Martin,
What you describe seems to be exactly one of the use cases we developed the
Provenance Vocabulary [1] for:The Provenance Vocabulary provides the class
prv:DataAccess which represents the execution of a data access on the Web.
Using the property prvTypes:exchangedHTTPMessage you can associate instances
of prv:DataAccess with the HTTP messages that have been exchanged. These
HTTP messages can then be described using the W3C RDF vocabulary for HTTP.
Here's an example:
foo:DataAboutProduct1
foaf:primaryTopic foo:Product1 ;
prv:createdBy _:dc .
_:dc
a prv:DataCreation ;
# ... additional information about the creation process ...
prv:usedData _:xml .
_:xml
a prv:DataItem ;
prv:retrievedBy _:da .
_:da
a prv:DataAccess ;
prv:accessedResource <http://www.heppnetz.de/companies.xml> ;
prvTypes:exchangedHTTPMessage _:m .
_:m
a http:Response ;
http:httpVersion "1.1" ;
# ...
http:statusCodeNumber "200" .
(Needless to say that you may use URIs instead of the blank node identifiers
that I used in the example for the sake of readability.)
Our "Guide to the Provenance Vocabulary" contains another example in Section
"3.3.2 Related Vocabularies: HTTP Vocabulary in RDF" [2].
Greetings,
Olaf
[1] http://purl.org/net/provenance/
[2] http://purl.org/net/provenance/guide#HTTP_Vocabulary_in_RDF
On Monday 17 January 2011 23:09:01 Martin Hepp wrote:
> Hi All:
> Thanks for the very useful feedback!
>
> Just to clarify what I want to do:
>
> There are many valuable commerce data resources available in XML and
> CSV on the Web. It is fairly straightforward to translate them into
> RDF, e.g. using GoodRelations. Now, whenever I create an RDF
> representation of that data in a new namespace, I may want to store
> the meta-data of the original HTTP GET request with which I fetched
> the XML or CSV file, and attach that meta-data to the resulting RDF
> graph.
>
> This allows for (1) nice analytics and (2) data cleansing entirely in
> the SPARQL / RDF world later-on.
>
> So the subject to which the meta-data will be attached will not be the
> resource URI (because there can naturally be multiple HTTP GET
> requests for the same resource), but instead the resulting graph or
> dataset.
>
> I assume the same will be useful in many other application domains and
> scenarios.
>
> Here is an example:
>
> Assume we have an XML file with company data at
> http://www.heppnetz.de/companies.xml
>
> and we fetch that, convert it to RDF, and republish the data in the
> namespace
>
> http://www.example.com/RDFizingResults/dataset1#
>
> Let's further assume that the HTTP GET request to the XML file
> returned the following HTTP header data:
>
> # Meta-data from fetching the original data
> # HTTP/1.1 200 OK
> # Date: Mon, 17 Jan 2011 21:31:58 GMT
> # Server: Apache
> # Last-Modified: Mon, 25 Oct 2010 20:31:25 GMT
> # Content-Length: 10971
> # Content-Type: application/xml
>
>
> So the following seems possible and useful:
>
> @prefix void: <http://rdfs.org/ns/void#> .
> @prefix http: <http://www.w3.org/2006/http#> .
> @prefix headers: <http://www.w3.org/2008/http-headers#> .
> @prefix status: <http://www.w3.org/2008/http-statusCodes#> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
> @prefix dct: <http://purl.org/dc/terms/> .
> @prefix gr: <http://purl.org/goodrelations/v1#> .
> @prefix foo: <http://www.example.com/RDFizingResults/dataset1#> .
>
> # Define an entity for the resulting dataset / graph
> foo:dataset a void:Dataset .
>
> # Link the graph to the HTTP header info from the data transformation
> foo:dataset rdfs:seeAlso foo:ResponseMetaData .
>
> NOTE: My original question was which predicate to use for this
> statement. rdfs:seeAlso seems valid, but it maybe suboptimal.
>
> # Expose the meta-data from fetching the original data
> foo:ResponseMetaData a http:Response ;
> http:httpVersion "1.1" ;
> dct:date "2008-01-11"^^xsd:date ;
> http:statusCodeNumber "200" ;
> http:sc status:statusCode200 ;
> http:headers [ a http:MessageHeader ;
> http:fieldName "Server" ;
> http:fieldValue "Apache" ] ;
> http:headers [ a http:MessageHeader ;
> http:fieldName "Last-Modified" ;
> http:fieldValue
> "2010-1025T20:31:25Z"^^xsd:datetime ] ;
> http:headers [ a http:MessageHeader ;
> http:fieldName "Content-Length" ;
> http:fieldValue 10971 ] ;
> http:headers [ a http:MessageHeader ;
> http:fieldName "Content-Type" ;
> http:fieldValue "application/xml" ] .
>
> # Then comes the real instance data, derived from the original source
> foo:ACME a gr:BusinessEntity ;
> rdfs:isDefinedBy foo:dataset .
>
> foo:MillerInc a gr:BusinessEntity ;
> rdfs:isDefinedBy foo:dataset .
> # etc.
>
> Does that sound okay and useful for everybody?
>
> Best
> Martin
>
> PS: I omitted the prefix declarations in the example above:
>
> @prefix void: <http://rdfs.org/ns/void#> .
> @prefix http: <http://www.w3.org/2006/http#> .
> @prefix headers: <http://www.w3.org/2008/http-headers#> .
> @prefix status: <http://www.w3.org/2008/http-statusCodes#> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
> @prefix dct: <http://purl.org/dc/terms/> .
> @prefix gr: <http://purl.org/goodrelations/v1#> .
> @prefix foo: <http://www.example.com/RDFizingResults/dataset1#> .
>
> On 17.01.2011, at 21:21, Shadi Abou-Zahra wrote:
> > Dear Martin, All,
> >
> > Just a reminder that you are looking at an old, outdated editors
> > draft of the HTTP-in-RDF Vocabulary. The latest Public Working Draft
> > is here:
> > - <http://www.w3.org/TR/HTTP-in-RDF10/>
> >
> > I seem to recall updates to the vocabulary that allow more
> > flexibility to support uses as the one described below by Martin
> > (though I did not check back specifically for that case).
> >
> > Please note that the W3C/WAI Evaluation and Repair Tools Working
> > Group welcomes comments and feedback on HTTP-in-RDF (despite the
> > long passed deadline). Please send comments to
> > <public-earl10-comments@w3.org
> >
> > >.
> >
> > Best,
> >
> > Shadi
> >
> > On 17.1.2011 20:23, Nathan wrote:
> >> William Waites wrote:
> >>> * [2011-01-17 16:39:27 +0100] Martin Hepp
> >>> <martin.hepp@ebusiness-unibw.org> écrit:
> >>>
> >>> ] Does anybody know of a standard property for linking a RDF graph
> >>> to
> >>> a ] http:GetRequest, http:Connection, or http:Response instance?
> >>> Maybe
> >>> ] rdfs:seeAlso (@TBL: ;- ))?
> >>>
> >>> If you suppose that the name of the graph is the same as the
> >>> request URI (it will not always be, of course) you can link
> >>> in the other direction from http:Request using http:requestURI.
> >>> I am not sure that http:requestURI has a standard inverse though.
> >>
> >> And remember of course, that the headers are split in to different
> >> groups which relate to different things, many relate to the message
> >> (in
> >> relation to the request), some relate to the server, some relate to
> >> the
> >> entity (an encoded version of the representation for messaging) a few
> >> (really not many) relate to the representation itself, and a couple
> >> relate to the resource itself, the resource being the thing the URI
> >> identifies.
> >>
> >> Best,
> >>
> >> Nathan
Received on Tuesday, 18 January 2011 09:30:43 UTC