- From: Stephen Bounds <km@bounds.net.au>
- Date: Sat, 30 May 2009 18:23:44 +1000
- To: SKOS <public-esw-thes@w3.org>
Hi Thomas, I believe you're running into the RDF/XML constraints imposed by section 2.12: http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-property-attributes-on-property-element RDF/XML interprets the myns:type attribute as specifying a new predicate branching off a blank node, but SKOS needs a literal as a prefLabel. You'll have to find another way to do this. This is valid for <skos:Concept>, by the way, because <skos:Concept> is a subject, not a predicate like <skos:prefLabel>. Cheers, -- Stephen. Thomas Bassetto wrote: > Up. > > Concerning the first question, our client advices us to use : > <owl:AnnotationProperty rdf:about="http://www.chu-rouen.fr/cismef#type"/> > > Followed by : > <skos:Concept rdf:about="http://fake.com/pts#MSH_D_001249" > myns:type="MeSHdescriptor"> > > It works but I can't use this attribute on <skos:prefLabel />, it's > not valid. The RDF Validator says "Error: {E201} The attributes on > this property element, are not permitted with any content; expecting > end element tag." Example : > <skos:prefLabel xml:lang="fr" myns:type="MeSHsynonyme">asthme</skos:prefLabel> > > My skills are not sufficient to resolve this problem. Do you see how > to handle this ? > > Thanks, > Thomas > > 2009/5/26 Thomas Bassetto <thomas.bassetto@insa-rouen.fr>: >> Hello, >> >> Thanks, your response have been very helpful. >> >> As we don't have an existing medical XML vocabulary, I plan to >> specialise SKOS elements. >> >> I have two last questions that remains : >> 1) Is it possible to add attribute to skos elements thanks to rdf >> schema (or another tool) ? For instance, I would like to add a >> myns:type to skos:description -> <skos:definition myns:type="blah">. >> The trouble is that I have several definitions for a same language and >> I don't see how to distinguish them. >> 2) Can someone confirm that http://www.w3.org/2004/02/skos/core.rdf is >> up to date according to last SKOS Reference revision. >> >> Cheers, >> Thomas >> >> 2009/5/25 Stephen Bounds <km@bounds.net.au>: >>> Hi Thomas, >>> >>> (I apologise if this goes over material you already know, but you said you >>> were new to using RDF and SKOS.) >>> >>> The starting point for designing your solution is to understand that SKOS >>> merely specifies particular semantics for creating an RDF document. >>> >>> Any assertion that is valid in an RDF document is also valid in SKOS. >>> >>> Whether rdf:parseType is appropriate depends upon the context of the XML. >>> Remember that all RDF consists of a set of triples in the form: >>> >>> subject, predicate, object >>> >>> A basic SKOS concept in RDF/XML looks something like this: >>> >>> <skos:Concept rdf:about="http://ex.com/concepts#animals"> >>> <skos:prefLabel>animals</skos:prefLabel> >>> <skos:altLabel>creatures</skos:altLabel> >>> <skos:altLabel>fauna</skos:altLabel> >>> </skos:Concept> >>> >>> which is a way of making the following assertions: >>> >>> <http://ex.com/concepts#animals> rdf:type skos:Concept. >>> <http://ex.com/concepts#animals> skos:prefLabel animals. >>> <http://ex.com/concepts#animals> skos:altLabel creatures. >>> <http://ex.com/concepts#animals> skos:altLabel fauna. >>> >>> A good way to read these is to add the words "has" and "of", ie >>> "concepts#animals has skos:altLabel of creatures". >>> >>> Here's the important and somewhat confusing thing about RDF/XML -- you >>> cannot add XML which breaks the subject-predicate-object hierarchy unless >>> you specifically denote it using rdf:parseType="Literal". >>> >>> For example, this is not valid RDF/XML: >>> >>> <skos:Concept rdf:about="http://ex.com/professor#smithj"> >>> <skos:prefLabel>Smith, John</skos:prefLabel> >>> <my:address> >>> <my:addr1>Unit 12</my:addr1> >>> <my:addr2>194 London Circuit</my:addr2> >>> </my:address> >>> </skos:Concept> >>> >>> The reason this breaks is that we don't have an object to point "my:address" >>> at. The two possible object targets of any predicate are a literal (string >>> or XML) or another RDF resource. >>> >>> Instead, write the RDF/XML like this: >>> >>> <skos:Concept rdf:about="http://ex.com/professor#smithj"> >>> <skos:prefLabel>Smith, John</skos:prefLabel> >>> <my:address xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" >>> rdf:parseType="Literal"> >>> <xal:AddressDetails> >>> <xal:AddressLines> >>> <xal:AddressLine>Unit 12</xal:AddressLine> >>> <xal:AddressLine>194 London Circuit</xal:AddressLine> >>> </xal:AddressLines> >>> </xal:AddressDetails> >>> </my:address> >>> </skos:Concept> >>> >>> This informs any RDF parser that the object pointed to by my:address is an >>> XML literal, and should be parsed as such. >>> >>> *If* you already have an existing medical XML vocabulary, the quickest way >>> to add this to a SKOS document would be to add a single custom RDF predicate >>> with rdf:parseType="Literal", and then to insert the XML fragment you need >>> from the medical vocabulary here under this. >>> >>> On the other hand, if you are newly constructing this medical vocabulary >>> now, you could simply write your vocabulary spec in a way that is RDF/XML >>> compliant, for example: >>> >>> <skos:Concept rdf:about="http://ex.com/professor#smithj"> >>> <skos:prefLabel>Smith, John</skos:prefLabel> >>> <myns:ATCID>123</myns:ATCID> >>> <myns:attr1>abc</myns:attr1> >>> <myns:attr2>xyz</myns:attr2> >>> </skos:Concept> >>> >>> In the absence of more detailed information, it's hard to give more specific >>> advice, but I hope this provides you with some pointers. >>> >>> Cheers, >>> >>> -- Stephen. >>> >>> >>> Thomas Bassetto wrote: >>>> Hello, >>>> >>>> I want to create a Web Service for a medical database. The response >>>> from the Web Service should be a valid SKOS document (inside a SOAP >>>> envelope). Hopefully a lot of SKOS elements match my needs. However, >>>> there are some additional information without specific SKOS element >>>> available. >>>> >>>> According to http://www.w3.org/TR/skos-primer/#secskosspecialization , >>>> "Users can create their own properties and classes and attach them to >>>> the standard SKOS vocabulary elements by using the rdfs:subPropertyOf >>>> and rdfs:subClassOf properties from the RDF Schema vocabulary". >>>> >>>> I plan to create an element for each additional information (like >>>> <myns:ATCID/>)[1] for defining a specific ID. >>>> >>>> But the client doesn't agree. He thinks that this solution is >>>> "proprietary" since I create new elements which are not described in >>>> the norm. >>>> >>>> He propose two alternate solutions : >>>> * use rdf:parseType as attribute to existing SKOS element. To be >>>> frank, I can't see how it could be a solution. >>>> * create a new attribute to <skos:Concept/> ant put ALL the additional >>>> information into it, separated by a coma. Example : <skos:Concept >>>> rdf:about="http://site.fake#diagnostic" >>>> myns:annotation="ADDINF1=value1,ADDINF2=value2,ADDINF3=value3,..."> >>>> >>>> What do you think ? I believe that specialising SKOS elements remains >>>> the best solution. >>>> Moreover, I'm wondering if it's really possible to create a new >>>> attribute for <skos:Concept/>. How ? I'm have never used RDF and SKOS >>>> before. >>>> >>>> Finally, I have another question. I want to use JENA[2] in order to >>>> generate a Java file to create a SKOS document. JENA needs an ontology >>>> or other vocabulary file. In the document called "SKOS RDF Schema"[3] >>>> I have found this Schema : http://www.w3.org/2004/02/skos/core.rdf. Is >>>> it up to date with the last CR of SKOS Reference ? >>>> >>>> I hope I'm clear enough. Feel free to ask me further information. >>>> >>>> Regards, >>>> Thomas Bassetto >>>> >>>> [1] This is not the best example :) For specific ID, I have understand >>>> that <skos:notation/> is better. >>>> [2]http://jena.sourceforge.net >>>> [3]http://www.w3.org/TR/2009/CR-skos-reference-20090317/skos.html >>>> > > >
Received on Saturday, 30 May 2009 08:24:28 UTC