You're right, Dave--thanks for the correction!
And thanks to Bernard for the additional case. Though there might be a problem with 
owl:hasValue and "it does not prevent an instance of such a class to belong to 
another skos:ConceptScheme". My previous owl:someValuesFrom was perhaps a bit more 
fit for this statement :-)

Antoine


Hi all

I'm with Antoine and Dave on this - as previously written (I think).

owl:hasValue is indeed a nice and too much overlooked OWL construct allowing to 
define a class based on any property-value pair, e.g.,

"A "Blue Thing" is a Thing of which property "color" has value "Blue"

ex:BlueThing a owl:Class
owl:equivalentClass
[a owl:Restriction;
owl:onProperty ex:color ;
owl:hasValue ex:Blue]

Which is the way natural language and underlying unformal typing works, 
actually. We organize the world naturally using property values, then abstract 
some property-value pairs into formal classes. t

x rdf:type ex:BlueThing
is no more no less than a more abstract property-value pair expresssion of
x ex:color ex:Blue

Note that by this definition a Blue Thing can have other values of "color", which means 
it's not necessarily "completely blue".

So you can always construct a subclass of skos:Concept by a similar restriction 
on skos:inScheme, as Dave below.

The interesting aspect of this construction is that it does not prevent an 
instance of such a class to belong to another skos:ConceptScheme ...

Bernard


2012/8/29 Dave Reynolds <dave.e.reyno...@gmail.com 
<mailto:dave.e.reyno...@gmail.com>>

    On 28/08/12 20:39, Antoine Isaac wrote:

        Sorry, my owl:someValuesFrom should have been owl:allValuesFrom, I 
guess.


    Actually I think owl:someValuesFrom is right though the easiest construct 
is owl:hasValue :

    some:codeAConcept owl:equivalentClass [
    owl:intersectionOf ( skos:Concept
    [ rdf:type owl:Restriction ;
    owl:onProperty skos:inScheme ;
    owl:hasValue some:codeAConceptScheme ]
    )
    ] .

    I agree with the rest of your comments.

    Dave

        Antoine


            Hi Thomas, all,

            I disagree with you on the fact that sub-classing skos:Concept would
            solve all representation needs. There is data to be asserted at the
            concept scheme-level, which would be inappropriately captured when
            being directly attached to a class of concepts. E.g., the creator 
of a
            concept scheme or the rights attached to it. These will stick very
            badly a class in an OWL ontology that represent the concept scheme. 
At
            least (OWL) class and annotation properties are created usually.

            Also, concepts are not "instances of a concept schemes". It is 
really
            stretching the way concepts and vocabularies are viewed in the 
domain,
            as already mentioned by others. Plus, doing this would also break 
the
            fundamentally good pattern followed by SKOS: SKOS data can entirely
            remain at the instance level (in OWL terms). When one ports a
            thesaurus on the Semantic Web, one doesn't want to be forced to use
            RDFS/OWL features in the data published.

            Of course SKOS resources can be used to create OWL ontologies. But I
            think it's better that this remains the business of an ontology
            creator (the guy creating the property that admit values from a 
given
            concept scheme) and not the business of a KOS publisher.

            So yes I really dislike using some:codeA and some:codeB as Simon 
does
            in [1]. I mean, having them is not bad, but having no concept scheme
            that bothers me.
            I would really prefer the approach that consists of (OWL) defining
            some:codeAConcept
            as
            some:codeAConcept owl:equivalentClass [
            owl:intersectionOf ( skos:Concept
            [ rdf:type owl:Restriction ;
            owl:onProperty skos:inScheme ;
            owl:someValuesFrom [ owl:oneOf ( some:codeAConceptScheme )] ]
            )
            ] .
            and then you use some:codeAConcept as the range of your my:property1
            and keep some:codeAScheme carrying its scheme-level data.

            Or in fact, if you hate redundancy, you can create straight away 
your
            new property as:
            my:property1 rdfs:range [
            owl:intersectionOf ( skos:Concept
            [ rdf:type owl:Restriction ;
            owl:onProperty skos:inScheme ;
            owl:someValuesFrom [ owl:oneOf ( some:codeAConceptScheme )] ]
            )
            ] .


            I understand you may want a construct to directly relate a property 
to
            a concept scheme to constrain its values. But then it is really 
about
            adding some new (meta-modelling) feature which was not identified in
            the SKOS requirements. And as said in my previous mail, for now I'd
            rather leave it to initiatives (like DC) which address data 
modelling
            at a deeper level.
            And in fact such feature would still be a shorthand for something 
that
            is possible using OWL out-of-the-box.

            Best,

            Antoine

            PS: by the way, I also disagree on merging (license or more 
generally
            any kind of provenance) data on the (voiD) dataset and data on a
            ConceptScheme, as hinted in [2]. In the past a project I've worked 
for
            has created a version of the RAMEAU vocabulary, based on a snapshot
            from the official version [4]. I think it was a good thing that 
people
            could make the difference between the real vocabulary and the
            prototype dataset we had created. In other terms, keeping distinct 
the
            thing that is represented from the dataset that represents it --
            another good pattern to follow, I think!

            [1] http://lists.w3.org/Archives/__Public/public-lod/2012Aug/__0060.html 
<http://lists.w3.org/Archives/Public/public-lod/2012Aug/0060.html>
            [2] http://lists.w3.org/Archives/__Public/public-lod/2012Aug/__0063.html 
<http://lists.w3.org/Archives/Public/public-lod/2012Aug/0063.html>
            [3] http://stitch.cs.vu.nl/rameau
            [4] http://rameau.bnf.fr


                Hi Antoine and CCs and everybody,

                nice answer, and I'm glad you have detected my question in this
                haystack.
                I think I have to tell more about the context of this question.

                We have a new R&D project about Linking Open Environment Data 
[1].
                Here we try to bring together Data Cubes (prefix qb:) [2], 
SKOS, DCAT,
                VoID, etc.

                In Data Cubes, dimension properties are defined having 
rdfs:range
                skos:Concept + qb:codeList rdfs:range skos:ConceptScheme.
                Fine so far.

                We have also developed iQvoc [3] in the previous years 
following the
                pattern described by SKOS in [4]: "The notion of an individual 
SKOS
                concept scheme corresponds roughly to the notion of an 
individual
                thesaurus". The technical consequence has been (so far) serving 
a single
                concept scheme per iQvoc instance, and we may link multiple 
concept
                schemes by SKOS mapping properties between such instances.
                Fine as well so far.

                Now we have some quite large concept schemes, and a single 
dimension
                property cannot refer to entire the concept scheme (= 
thesaurus) as its
                value set, but only to a subset. So we have established the 
pattern of
                expressing such subsets by one skos:Collection per referring 
property.
                Fine again, but different from the qb: pattern (which is also 
used by
                geonames, but with a different property: gn:featureClass).

                If we have many dimension properties, each of them referring to 
a small
                subset of concepts as the value set, and we want to follow Data 
Cubes
                (or GeoNames), and use iQvoc, we would have to deploy many iQvoc
                instances each of them containing just a single value set. This 
would
                break the overall thesaurus into pieces.

                Of course we can write some lines of OWL code so that a 
reasoner can
                infer a dedicated concept scheme for all skos:member instances 
of each
                skos:Collection, but ...

                All this raised the question if it wouldn' have been better 
either to
                ...

                (a) define one single pattern as part of the SKOS standard how 
to
                specify any subset of skos:Concept individuals as the value set 
of a
                property,

                (b) strictly use subclasses of skos:Concept to describe any 
kind of
                subsets of skos:Concept individuals, so nobody would need any 
kind of
                attachment to the rdfs:range to refer to this subset.

                (b) is my preferred solution of (a).

                After thinking this over more and more, I find that the given 
definition
                of skos:ConceptScheme has introduced a fatal and completely 
needless
                structural redundancy. This could have been avoided by deciding 
for (b).

                To be more general:

                skos:ConceptScheme priotises domain conventions over common and 
shared
                (better: to be shared) RDFS/OWL patterns.

                I found something similar in the Data Structure Definition of 
Data
                Cubes. Dave (cc) will understand, as we had some discussion 
about this
                topic ;-)

                I strictly believe it is a better strategy to convince each 
domain
                inheritance of a single global standard with only few 
indispensable
                options.

                Following each of the aquainted domain pattern leeds to 
structural
                weakness of this one global standard, as everything can be 
expressed
                using multiple patterns even though one pattern can fit all. In 
the open
                world, each reasoner needs to understand all those domain 
patterns.
                This is a quite obscure requirement.

                Dave et al. is conciliatory with SDMX and weakens RDFS/OWL by 
this.
                SKOS is conciliatory with the ISO thesaurus people and weakens 
RDFS/OWL
                by this.
                The same happens more and more in any domain, and may be it is 
too late
                to stop this, or even roll this back.

                I am quite sad about this.
                Unfortunately, W3C has no clear governance in this question 
(@Sandro).
                Sometimes I feel a working draft becomes a recommendation only 
by public
                rating in some domain which has no understanding of the power 
of pure
                RDFS/OWL .

                Sorry if I have taken so much of your time, if you have read 
until here.

                Finally I quote some lines from Neill Young: "Ambulance Blues" 
which may
                talk about myself:

                "And I still can hear him say:
                You're all just pissin' in the wind
                You don't know it but you are".

                Think I even know it.

                Best regards,
                Thomas



                [1] http://innoq.github.com/led/
                [2] http://www.w3.org/TR/vocab-__data-cube/ 
<http://www.w3.org/TR/vocab-data-cube/>
                [3] https://github.com/innoq/__iqvoc/ 
<https://github.com/innoq/iqvoc/>
                [4] http://www.w3.org/TR/2009/REC-__skos-reference-20090818/#L1101 
<http://www.w3.org/TR/2009/REC-skos-reference-20090818/#L1101>

                Am 22.08.2012 21:15, schrieb Antoine Isaac:

                    Dear Thomas,

                    I'm ccing public-esw-t...@w3.org 
<mailto:public-esw-t...@w3.org>. Perhaps this was the one you were
                    looking for!

                    (1)& (2)
                    You probably mean, if a ConceptScheme could be defined as a 
class, of
                    which the concepts of a given concept scheme are instances?
                    That would be the way to proceed, if you want to use the 
concept
                    scheme directly as the range of a property.
                    This is has never been suggested for inclusion in SKOS. In 
fact it is
                    not forbidden, either. You can assert rdf:type statements 
between
                    concepts and a concept scheme, if you want.
                    You can also define an adhoc sub-class of skos:Concept (say,
                    ex:ConceptOfSchemeX), which includes all concepts that 
related to a
                    specific concept scheme (ex:SchemeX) by skos:inScheme 
statements. This
                    is quite easy using OWL. And then you can use this new 
class as the
                    rdf:range.

                    The possibility of these two options makes it less obvious, 
why there
                    should be a specific feature in SKOS to represent what you 
want.
                    But more fundamentally, it was perhaps never discussed, 
because it's
                    neither a 100% SKOS problem, nor a simple one.
                    It's a bit like the link between a document and a subject 
concept:
                    there could have been a skos:subject property, but it was 
argued that
                    Dublin Core's dc:subject was good enough.
                    But it's maybe even worse than that :-) There are indeed 
discussions
                    in the Dublin Core Architecture community about represent 
the link
                    between a property and a concept scheme directly, similar 
to what you
                    want. This is what is called vocabulary/value "encoding 
schemes" there
                    [1].
                    But the existence of this feature at a quite deep, 
data-model level,
                    rather confirms for me that it is something that clearly 
couldn't be
                    tackled at the time SKOS was made a standard. One can view 
this
                    problem as one of modeling RDFS/OWL properties, rather than
                    representing concepts, no?


                    (3)
                    I'm not sure I get the question. If they exist, such mapping
                    properties could be very difficult to semantically define. 
Would a
                    concept scheme be broader, equivalent, narrower than 
another one?
                    Rather, I'd say that the property you're after indicates 
that some
                    concepts from these two concept schemes are connected. For 
this I
                    think one could use general linkage properties between 
datasets, such
                    as voiD's linksets [2].

                    I hope that helps,

                    Antoine

                    [1] http://dublincore.org/__documents/profile-guidelines/ 
<http://dublincore.org/documents/profile-guidelines/> , search
                    "Statement template: subject"
                    [2] http://vocab.deri.ie/void










--
*Bernard Vatant
*
Vocabularies & Data Engineering
Tel : + 33 (0)9 71 48 84 59
Skype : bernard.vatant
Blog : the wheel and the hub <http://blog.hubjects.com/>

--------------------------------------------------------
*Mondeca*****
3 cité Nollez 75018 Paris, France
www.mondeca.com <http://www.mondeca.com/>
Follow us on Twitter : @mondecanews <http://twitter.com/#%21/mondecanews>



Reply via email to