W3C home > Mailing lists > Public > public-esw-thes@w3.org > May 2004

Re: Supporting arrays of concepts

From: David Menendez <zednenem@psualum.com>
Date: Sun, 09 May 2004 21:54:22 -0400
To: Ron Davies <ron@rondavies.be>
Cc: "Miles, AJ (Alistair) " <A.J.Miles@rl.ac.uk>, "'public-esw-thes@w3.org'" <public-esw-thes@w3.org>
Message-id: <r02000200-1033-F58F8518A22411D8AC0B000393758032@[10.0.1.2]>

Ron Davies writes:

> Just another little wrinkle you might want to take into account. A
> node label can in fact have as a subordinate in the classified
> structure another node label.
> 
> For example the AAT [1] has:
> 
> furnishings
>       <furnishings by form and function>
>            <coverings and hangings>
>                 <coverings and hangings by general type>
>                      coverings
>                      hangings
> 
> where the values between angle brackets are node labels.

Well, we could represent that along these lines.

    thes:001 a skos:Concept
      ; skos:prefLabel "furnishings"
      ; skos:subArray
        [ a skos:Array
        ; rdfs:label "furnishings by form and function"
        ; skos:members (
            [ a skos:Array
            ; rdfs:label "coverings and hangings"
            ; skos:members (
                [ a skos:Array
                ; rdfs:label "coverings and hangings by general type"
                ; skos:members ( thes:002 thes:003 )
                ]
              )
            ]
          )
        ]
      .
    
    thes:002 skos:prefLabel "hangings".
    thes:003 skos:prefLabel "coverings".

(If you prefer Alistair's style to mine, we just need to replace
(X,skos:subArray,Y) with (Y,skos:parent,X). All that's really different
are the direction and label of the arrows.)


The axioms I gave earlier also need some adjustment:

    (C1, skos:narrower, C2) <= (C1, skos:subArray, A) and
                               arrayElt(A,C2) and
                               (C2, rdf:type, skos:Concept)

    arrayElt(A,E) <= (A, skos:members, L) and member(L,E)
    arrayElt(A,E) <= arrayElt(A,A2) and arrayElt(A2,E)
    
    member(L,I) <= (L, rdf:first, I)
    member(L,I) <= (L, rdf:rest, L2) and member(L2,I)
    
    (The convention here is that (S,P,O) is an RDF triple and 
    P(...) is a logical predicate.)

This is possibly more flexible than needed, because it allows the same
Array to contain Concepts and sub-Arrays.
-- 
David Menendez <zednenem@psualum.com> <http://www.eyrie.org/~zednenem/>
Received on Sunday, 9 May 2004 22:24:24 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 2 March 2016 13:32:03 UTC