Re: Best Practices - Semantic Tagging

My gut feeling is that this should be presented in
xs:annotation/xs:appinfo, as that is exactly what that structure in
XSD is intended for.

But I would not put semi-RDF/XML in there, either go all the way or
use something else (dcterms?). Thus using rdfs:seeAlso as an attribute
I would say is inappropriate as it seems to be hinting on being RDF
when it is not at all.



Perhaps something like (syntax not checked!):

  <xs:complexType name="ct-f6c5ea6e-6458-4799-874d-7f3d365d260d"
                      xml:id="ct-f6c5ea6e-6458-4799-874d-7f3d365d260d">
    <xs:annotation>
        <xs:appinfo>
            <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
                <oa:Annotation xmlns:oa="http://www.w3.org/ns/oa#">
                    <oa:motivatedBy
rdf:resource="http://www.w3.org/ns/oa#tagging" />
                    <oa:hasTarget
rdf:target="#ct-f6c5ea6e-6458-4799-874d-7f3d365d260d" />
                    <oa:hasBody>
                        <oa:SemanticTag

rdf:about="http://purl.bioontology.org/ontology/SNOMEDCT/365761000" />
                    </oa:hasBody>
                </oa:Annotation>
            </rdf:RDF>
        </xs:appinfo>
    </xs:annotation>
    <!-- ... -->
  </xs:complexType>

Here I use the xml:id on the complex type to make it easy to refer to
it by #anchor and reduce the verbosity a bit. Of course RDF/XML does
work against us a bit in its verbose form.


But unless you want to do something more about the annotation, like
referring to it (give it an rdf:about), adding provenance, or build
some kind of relations between these complex types, then I would think
it would be easier to just do (again syntax not checked):

  <xs:complexType name="ct-f6c5ea6e-6458-4799-874d-7f3d365d260d">
    <xs:annotation>
        <xs:appinfo>
<dcterms:source>http://purl.bioontology.org/ontology/SNOMEDCT/365761000</dcterms:source>
        </xs:appinfo>
    </xs:annotation>
  </xs:complexType>

This should comply with the schema at
http://www.dublincore.org/schemas/xmls/qdc/dcterms.xsd which you can
add if you want.

I'm not sure about dcterms:source vs dcterms:identifier  (or
motivation oa:tagging or also adding oa:identifying) - that depends on
the nature of your complex types.


Also xs:appinfo takes a source attribute.. so the simplest might just be:

<xs:appinfo source="http://purl.bioontology.org/ontology/SNOMEDCT/365761000" />


On Sat, Mar 2, 2013 at 2:23 PM, Timothy W. Cook
<timothywayne.cook@gmail.com> wrote:
> HI All,
>
> Though I have read virtually everything I can find related to this
> subject; including:
> http://lists.w3.org/Archives/Public/public-openannotation/2013Feb/0051.html
>
> I really don't see the answer to my question.
>
> First of all this is a "green field" area.  I do not have to be
> concerned with existing documents and how it has been done in the
> past.
>
> I just want to get this right, the first time. Given all the
> experience from people here.
>
> Scenario:
>
> I have XML Schemas that define data instance structures (as usual).
> These schemas use a lot of complexTypes that are restrictions from a
> base schema.  Since each base schema complexType can be represented in
> a schema multiple times with different restrictions, I use a UUID
> based name. For example:
>
>   <xs:complexType name="ct-f6c5ea6e-6458-4799-874d-7f3d365d260d">
>         <xs:complexContent>
>             <xs:restriction base="mlhim2:DvQuantityType">
>                 <xs:sequence>
>
> ...
>
> These complexTypes are almost always definable via a controlled
> vocabulary, ex. SNOMED-CT
>
> In order to add semantics to the complexType definition my current
> thought is to use:
>
>   <xs:complexType name="ct-f6c5ea6e-6458-4799-874d-7f3d365d260d">
>     <xs:annotation>
>       <xs:appinfo>
>         <rdfs:isDefinedBy
> rdfs:resource="http://purl.bioontology.org/ontology/SNOMEDCT/365761000"/>
>       </xs:appinfo>
>     </xs:annotation>
>         <xs:complexContent>
>             <xs:restriction base="mlhim2:DvQuantityType">
>                 <xs:sequence>
> ...
>
> Which will identify this complexType as a Sodium level finding
> according to SNOMED-CT.
>
> My first question is:
> 1) is it correct to make the assumption that the annotation applies to
> the enclosing complexType without using an rdf:about (or similar)
> definition?
>
> 2) is rdfs:isDefinedBy the "tag" to use, or is something like
> oa:SemanticTag a better choice?
>
> Realizing that these annotations will not be reproduced in the
> instance data.  The eco-system around this says that to determine the
> full semantics you must have the schema associated with any instance
> data.
>
> Thoughts?
>
> Cheers,
> Tim
>
>
>
> --
> ============================================
> Timothy Cook, MSc           +55 21 94711995
> MLHIM http://www.mlhim.org
> Like Us on FB: https://www.facebook.com/mlhim2
> Circle us on G+: http://goo.gl/44EV5
> Google Scholar: http://goo.gl/MMZ1o
> LinkedIn Profile:http://www.linkedin.com/in/timothywaynecook
>



-- 
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester

Received on Tuesday, 5 March 2013 11:18:42 UTC