RDF Attributions

table of contents

Status of This Document

This document is a quick writeup of the RDF Attribution object used in the RdfDB and RdfParser modules to describe trust relationships. It is my own crazy idea and is not the product of any RDF W3C Working Group activity. For more recent work on attributions, please see this RDF Attributions paper. More recent work on attributions is available at Source Attribution in RDF.

abstract

The model I'm considering involves some trusted piece of RDF starting it off and some operators telling the parser what to do with later blocks of RDF. In a practical model, this RDF block would be in an HTTP header or the HTML HEAD. It would establish a trust policy for RDF encountered later on in the body.

stored data

Each triple has an Attribution associated with it that stores whether and why it is to be trusted. Statements generated by your parser during reification should automatically be trusted (to the extent that you trust the parser). Other triples are assiociated with an Attribution reflecting the current trusting state. The trusting state starts out as trusted and in following pieces of RDF is trusted only if the default document or link policy is "trust" or the parser is processing a n RDF Bag that was explicitly trusted.

examples

This expample demonstrates an initial RDF block that sets the document trust policy and extends trust to a node (AlphaMathStatements). This node, in turn, trusts another (Intel686MathStatements). All nodes within PentiumMathStatements are not trusted.

author policy

<html><head>
<title>bug warnings</title>
<rdf:RDF xmlns:rdf="http://w3.org/TR/1999/PR-rdf-syntax-19990105#"
         xmlns:t="http://www.w3.org/RDF/schema/Trust/">
  <t:documentPolicy rdf:ID="idocumentPolicy" rdf:bagID="bdocumentPolicy">
    <!-- Tag statements encounered in the document and links as untrusted but include their reifications. -->
    <!-- what was I up to here? t:lookIn>http://www.w3.org/TR/WD-rdf-syntax#RDF</t:lookIn -->
    <t:defaultDocTrust>quote</t:defaultDocTrust>
    <t:defaultLinkTrust>quote</t:defaultLinkTrust>
    <!-- list the statements you trust -->
    <t:trust>#AlphaMathStatements</t:trust>
    <t:disTrust>#PentiumMathStatements</t:disTrust>
    <!-- t:trust><rdf:Bag rdf:bagID="bagOTrusts">
      <rdf:li resource="#AlphaMathStatements"/>
      <rdf:li resource="#PentiumMathStatements"/>
    </rdf:Bag></t:trust -->
  </t:documentPolicy>
</rdf:RDF>
</head><body>
<h1>bug warnings</h1>

The DEC Alpha says:
<rdf:RDF xmlns:rdf="http://w3.org/TR/1999/PR-rdf-syntax-19990105#"
         xmlns:m="http://www.w3.org/RDF/schema/Math/"
         xmlns:t="http://www.w3.org/RDF/schema/Trust/">
  <rdf:Description ID="AlphaMathStatements" bagID="bAlphaMathStatements">
        <t:trust>#Intel686MathStatements</t:trust>
        <t:disTrust>#PentiumMathStatements</t:disTrust>
    <t:hereThereBeTrust><!-- This is where you'd plant trusts if you wanted them to be nested in a t:documentPolicy ->
      <t:documentPolicy rdf:ID="idocumentPolicy1" rdf:bagID="bdocumentPolicy1">
      </t:documentPolicy>
    </t:hereThereBeTrust>
    <m:equals><rdf:Alt ID="iAlphaEquals">
      <rdf:li><rdf:Description m:number="4" rdf:ID="iAlpha4" rdf:bagID="bAlpha4"/></rdf:li>
      <rdf:li><rdf:Description rdf:ID="iAlphaSq" rdf:bagID="bAlphaSq"><m:squareMe rdf:bagId="bAlpha2">2</m:squareMe></rdf:Description></rdf:li>
    </rdf:Alt></m:equals>
  </rdf:Description>
</rdf:RDF>

The Intel 686 says:
<rdf:RDF xmlns:rdf="http://w3.org/TR/1999/PR-rdf-syntax-19990105#"
         xmlns:m="http://www.w3.org/RDF/schema/Math/">
  <rdf:Description ID="Intel686MathStatements">
    <m:equals><rdf:Alt>
      <rdf:li><rdf:Description m:number="-1"/></rdf:li>
      <rdf:li><rdf:Description><m:squareMe>i</m:squareMe></rdf:Description></rdf:li>
    </rdf:Alt></m:equals>
  </rdf:Description>
</rdf:RDF>

The hacked Pentium says:
<rdf:RDF xmlns:rdf="http://w3.org/TR/1999/PR-rdf-syntax-19990105#"
         xmlns:m="http://www.w3.org/RDF/schema/Math/">
  <rdf:Description ID="PentiumMathStatements">
    <m:equals><rdf:Alt>
      <rdf:li><rdf:Description m:number="24.9999999997"/></rdf:li>
      <rdf:li><rdf:Description><m:squareMe>5</m:squareMe></rdf:Description></rdf:li>
    </rdf:Alt></m:equals>
  </rdf:Description>
</rdf:RDF>
</body></html>

site policy

GET /JoeUser/BugWarnings.html HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/4.5 [en] (X11; U; Linux 2.0.36 i686)
Host: out.there:8080
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: de
Accept-Charset: iso-8859-1,*,utf-8

HTTP/1.1 200 OK
Date: Wed, 20 Jan 1999 10:26:57 GMT
Server: Apache/1.2.6
Last-Modified: Wed, 20 Jan 1999 10:22:10 GMT
ETag: "113464e-162d-36a5ae52"
Content-Length: 5677
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=ISO-8859-1
RDF-Site-Policy: <rdf:RDF xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
         xmlns:t="http://www.w3.org/RDF/schema/Trust/">
  <t:documentPolicy>
    <!-- Tag statements encounered in the document and links as untrusted but include their reifications. -->
    <t:defaultDocTrust>quote</t:defaultDocTrust>
    <t:defaultLinkTrust>quote</t:defaultLinkTrust>
    <!-- Trust Bob and Joe's statements -->
    <t:trust>http://out.there:8080/JoeUser/BugWarnings.html</t:trust>
  </t:documentPolicy>
  </rdf:RDF>

<html><head>
<title>bug warnings</title>...
This site seems to trust JoeUser to write trustworthy bug warnings. It is up to you to decide whether to trust their site administrator.

protocols

I have sketched examples of RDF in HTML and HTTP, but I can envision the "trust the first encountered RDF" rule applying to other document protocols, like XSL, or streaming protocols, like RTSP

implementations

W3C Perl Library

The Attributions concept has been started in RdfParser.html and RdfDB.html.

changed ids

about this document
Status of This Document