Re: EARL Pointers into graphs?

Hi Henry,

On 22.9.2011 14:53, Henry Story wrote:
> Thanks Shadi,
>
> Le me go over this again in more detailed steps.
>
> One of the set of tests we have looks at a WebId Profile to see if all the Public Keys published there are well formed. We are only really interested in one of them, but we may as well alert users if their keys are somehow semantically nonsensical. So we want to iterate through each PublicKey and test it for well-form ed-ness.
>
> I suppose the subject of the test is therefore either the document being tested, or the key in the document being tested. Let us assume that it is the document being tested just for now. Then what we want is to point to the subgraph of interest to us. This is best done in N3:
>
> @prefix rsa:<http://www.w3.org/ns/auth/rsa#>  .
> @prefix cert:<http://www.w3.org/ns/auth/cert#>  .
>
> []  a   earl:Assertion ;
>      earl:test wit:pubkeyRSAExponentFunctional;
>      earl:subject<http://bblfish.net/people/henry/card.n3>  ;
>      earl:result [ a earl:TestResult ;
>                 dc:description "Found one Modulus" ;
>                 earl:outcome earl:passed;
>                 earl:pointer {
>       []    a  rsa:RSAPublicKey ;
>             cert:identity<http://bblfish.net/people/henry/card#me>  ;
>             rsa:modulus  "E7 E9 2E B9 E0 86 92 CB 8E B9 07 22 ... 4C 49 53 69 """^^cert:hex ;
>             rsa:public_exponent \"65537\"^^cert:decimal .
>     } ;
>                 ] .
>
>
> Now one could also argue that the subject is that particular subgraph, but then the subject and the pointer would be the same...

This depends on how your test criterion is formulated. If your test is 
something like "check the WebId profile is valid" then you probably want 
to consider the entire WebId profile to be the test subject, and point 
to the invalid key. If your test is more granular like "check the key of 
the WebId" then the test subject is probably the actual key.

Sidenote: you could still relate the "key" with the "WebId" profile in 
the latter case using dc:isPartOf relationship.


> In any case since most RDF formalisms don't support graphs directly - sadly only n3 does - one can't really write the above. One needs to serialise the graph and point to that, or perhaps to the log semantics of that subgraph.
>
> @prefix log:<http://www.w3.org/2000/10/swap/log#>  .
>
> []  a   earl:Assertion ;
>      earl:test wit:pubkeyRSAExponentFunctional;
>      earl:subject<http://bblfish.net/people/henry/card.n3>  ;
>      earl:result [ a earl:TestResult ;
>                 dc:description "Found one Modulus" ;
>                 earl:outcome earl:passed;
>                 earl:pointer [ is log:semantics of """
>       []    a  rsa:RSAPublicKey ;
>             cert:identity<http://bblfish.net/people/henry/card#me>  ;
>             rsa:modulus  "E7 E9 2E B9 E0 86 92 CB 8E B9 07 22 ... 4C 49 53 69 """^^cert:hex ;
>             rsa:public_exponent \"65537\"^^cert:decimal .
>     """^^<http://purl.org/NET/mediatypes/text/turtle>  ;
>    ] .
>
> Here one would need to perhaps create an inverse for log:semantics for formats such as RDF/XML or even turtle or NTriples . Otherwise one could have the pointer point straight to the literal, though that could be misleading (but for whome?)

We did not envision earl:pointer to reference a resource directly. We 
defined several types of pointers that have particular meaning. These 
include X-Path, CSS Selectors, and other document-based concepts. We did 
not consider something like an "RDF Node Pointer", which is what you may 
seem to be needing. Is that your understanding too?


> Anyway, these are some issues I am trying to work over.

I do not recall this particular use case and would be very interested in 
your experiences. I could imagine including an "RDF Node Pointer" 
ontology if you can help develop it...

Best,
   Shadi

> Henry
>
> On 22 Sep 2011, at 11:23, Shadi Abou-Zahra wrote:
>
>> Hi Henry,
>>
>> Admittedly we have not considered this specific usecase for Pointers but I do not think there should be a design limitation. The Pointers spec focuses on "documents" (which reflects our primary usecase) but this could probably be replaced by "resources" in general.
>>
>> We will consider this input for the upcoming draft but please let us know your findings and experiences. Send your comments to:
>> -<public-earl10-comments@w3.org>
>>
>> Best,
>>   Shadi
>>
>>
>> On 22.9.2011 00:30, Henry Story wrote:
>>> Hi,
>>>
>>>    At the WebID XG [1] we are using EARL [2] to test protocol implementations. In all of the test there is only one where we test the syntax of a document - the WebID Profile - and where this may have a syntactic error that we may need the Pointers-in-RDF10 [3] ontology for.
>>>
>>>   Most of the test cases we really need to point into subgraphs of the graph that is the log:semantics of the returned Profile. Since the subgraph of interest could be serialised anywhere in the document, it does not make sense to try to point into the document to positions where those triples were encoded: it would be extremely difficult to do, and the value would be very low.
>>>
>>>    So what we need is a way to point into subgraphs of a document. One way we were thinking of doing this is by naming graphs indirectly via a literal, so for example by
>>>
>>> _:b1  owl:sameAs """
>>>          @prefix rsa:<http://www.w3.org/ns/auth/rsa#>   .
>>>          @prefix cert:<http://www.w3.org/ns/auth/cert#>   .
>>>
>>>         []    a  rsa:RSAPublicKey ;
>>>            cert:identity<http://bblfish.net/people/henry/card#me>   ;
>>>            rsa:modulus  \"\"\"
>>> E7 E9 2E B9 E0 86 92 CB 8E B9 07 22 22 B7 FB 86 34 91 89 A8 41 F1 CD E1 77 C8 4F 8D 31 FF EA 4F 8D 04 A3 7E 1F 43 11 1C F8 92 54 25 70 BE F8 6C B4 5D B3 98 4E 8C B3 43 70 CD 20 D6 1E E4 8E AA 31 30 BB AF 82 28 4F 2D BC BD 18 D0 E1 E4 6E 48 55 0E 17 A7 2C F4 1A 80 A2 16 8D 77 B4 93 80 83 21 C8 B3 C8 D8 F5 2F CC D1 C2 C3 74 4D AC 6B 61 96 4F 95 A4 F1 DB F5 69 30 8D C0 A5 A5 4A C9 BF F8 FA 62 78 51 90 C1 A2 5F 53 32 44 DF C8 16 CF AB 78 88 48 CC FA AE DD EF B0 D8 24 B1 76 AB D0 30 9F B4 66 A0 D9 5D 84 D4 BF ED F0 7B EE 0D ED 14 6A A2 9A 8E C2 25 56 DB BF 89 43 12 60 AB B8 D5 D6 49 09 50 98 9B F0 EB A9 C5 F4 9B 56 94 C0 70 18 58 AB 52 6A 9F 59 E6 9E CF 9C 95 68 C2 AA 76 FF 78 E7 B1 FE E1 E9 69 54 37 DC 90 B6 6F C5 78 47 8C A7 ED CC C7 B0 E8 90 06 18 4C 49 53 69 \"\"\"^^cert:hex ;
>>>            rsa:public_exponent \"65537\"^^cert:decimal .
>>> """^^<http://purl.org/NET/mediatypes/text/turtle>   .
>>>
>>> This gives us a turtle literal named _:b1 that we can then refer to, in a test case such as the following for example
>>>
>>> []    a   earl:Assertion ;
>>>       earl:result [ a earl:TestResult ;
>>>                  dc:description "Found one Modulus" ;
>>>                  earl:outcome earl:passed;
>>>                  earl:pointer _:b1 ;
>>>                ] ;
>>>        earl:subject _:b1 ;
>>>        earl:test wit:pubkeyRSAExponentFunctional .
>>>
>>> ( this test tests that the exponent is correctly a owl:functional relation )
>>>
>>> In fact in this case it's not so clear what the subject and what the pointer should be. We are trying to work this out. But in any case it seems that we would like to point into a subgraph, rather than into a document.
>>>
>>> Any guidance here from people who have done this before?
>>>
>>> Henry
>>>
>>>
>>>
>>>
>>> [1] http://webid.info/
>>>      http://www.w3.org/2005/Incubator/webid/wiki/Main_Page
>>> [2] http://www.w3.org/WAI/intro/earl
>>> [3] http://www.w3.org/TR/Pointers-in-RDF10/
>>>
>>> Social Web Architect
>>> http://bblfish.net/
>>>
>>>
>>>
>>
>> --
>> Shadi Abou-Zahra - http://www.w3.org/People/shadi/
>> Activity Lead, W3C/WAI International Program Office
>> Evaluation and Repair Tools Working Group (ERT WG)
>> Research and Development Working Group (RDWG)
>
> Social Web Architect
> http://bblfish.net/
>
>

-- 
Shadi Abou-Zahra - http://www.w3.org/People/shadi/
Activity Lead, W3C/WAI International Program Office
Evaluation and Repair Tools Working Group (ERT WG)
Research and Development Working Group (RDWG)

Received on Friday, 23 September 2011 08:55:23 UTC