- 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>
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