Hello,
I’m using the XML Schema Export function on one of my models and was wondering if there is a way to export xsd enumerations from my model. E.g. something like:
<xsd:simpleType name = "
iso3currency">
<xsd:restriction base = "xsd:string">
<xsd:enumeration value = "AUD"/><!-- Australian Dollar -->
<xsd:enumeration value = "BRL"/><!-- Brazilian Real -->
<xsd:enumeration value = "CAD"/><!-- Canadian Dollar -->
<xsd:enumeration value = "CNY"/><!-- Chinese Yen -->
<xsd:enumeration value = "EUR"/><!-- Euro -->
<xsd:enumeration value = "GBP"/><!-- British Pound -->
<xsd:enumeration value = "INR"/><!-- Indian Rupee -->
<xsd:enumeration value = "JPY"/><!-- Japanese Yen -->
<xsd:enumeration value = "RUR"/><!-- Russian Rouble -->
<xsd:enumeration value = "USD"/><!-- US Dollar -->
<xsd:length value = "3"/>
</xsd:restriction>
</xsd:simpleType>
I tried using the owl:oneOf property in my model to define the enumeration values for a class, e.g.
<rdf:Description rdf:about="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#Suffix">
<owl:oneOf rdf:resource="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#LDISP1"/>
<owl:oneOf rdf:resource="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#REECGE"/>
<owl:oneOf rdf:resource="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#TAKEOFF"/>
</rdf:Description>
<Suffix rdf:about="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#LDISP1">
<rdfs:label>LDISP1</rdfs:label>
</Suffix>
but the exporter seems to ignore that. Is there some other construct I could use? If not, could this functionality perhaps be added to the exporter, perhaps using the enum resource’s local name or its rdfs:label property for the value used in the xml schema? I’m no xml schema export, but it seems to me that on the surface they are two semantically equivalent concepts.
Thanks,
Jeff
Hi Scott, When you say "converting the model into Semantic XSD (see sxsd.rdf)" I'm not quite sure I know what you mean. Can you expand on that? I see the example for enums, but would I have to write similar scripts to generate all the xsd constructs by "reverse engineering" the model, basically re-doing everything that I think the xml schema export functionality already does? btw, my current model is based on sxml, e.g. all classes are subclasses of sxml:Element. Thanks, Jeff
rdf:resource="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#R EECGE"/><owl:oneOfrdf:resource="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#T AKEOFF"/>
</rdf:Description> <Suffixrdf:about="http://www.boeing.com/sem/acms/ACMS_Datalink_Report.owl#LDIS P1"><rdfs:label>LDISP1</rdfs:label> </Suffix> but the exporter seems to ignore that. Is there some other constructI could use? If not, could this functionality perhaps be added to the exporter, perhaps using the enum resource's local name or its rdfs:label property for the value used in the xml schema? I'm no xml schema export, but it seems to me that on the surface they are two semantically equivalent concepts.Thanks, Jeff
-- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN. To post to this group, send email to topbrai...@googlegroups.com To unsubscribe from this group, send email to topbraid-user...@googlegroups.com For more options, visit this group at http://groups.google.com/group/topbraid-users?hl=en
Hi Scott,
I really like the idea of being able to “fine-tune how your model creates the XML/XSD without interference with how different people may want to interpret OWL-XSD mappings.” But I’m missing something in how the basic mechanics would work to get TBC to spit out an xsd file without using the xsd exporter, and I want to be clear before heading down this road. Here’s an example.
In my sxml based model I have a Mnemonic element that is sub-classed from sxml:Element, along with a related mnemonic property:
:Mnemonic
a owl:Class ;
rdfs:subClassOf <http://topbraid.org/sxml#Element> ;
sxml:element "mnemonic"^^xsd:string .
:mnemonic
a owl:ObjectProperty ;
rdfs:domain :ACMSReportFields ;
rdfs:label "Mnemonic"^^xsd:string ;
rdfs:range :Mnemonic ;
rdfs:subPropertyOf <http://www.topbraid.org/2007/05/composite.owl#child> .
When I use the xsd exporter on this owl model I get the following schema definitions (not to mention all the definitions for the classes defined in the sxml model itself and other imported models too, but that’s another issue).
<!--
Created from class j.0:Mnemonic
-->
<xsd:element name="Mnemonic" type="MnemonicType"/>
<xsd:complexType name="MnemonicType">
<xsd:complexContent>
<xsd:extension base="ElementType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="mnemonic">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Mnemonic"/>
</xsd:sequence>
<xsd:attribute name="IDREF" type="xsd:IDREF" use="optional"/>
</xsd:complexType>
</xsd:element>
This is great, but I’m not sure how to mimic this functionality by “extending your [sxml model] for some schema definitions, such as the SPARQL transformation I sent earlier.” My most basic question is, how do I get TBC to spit out an xsd file without using the xsd exporter? Or are you saying to use the xsd exporter to get an initial xsd, and then extend the xsd model (not my sxml based model) for some schema definitions…?
As an aside, is there a way to get TBC to spit out xml from an sxml based owl model? I’m aware you can open an xml file directly and work with it using Semantic XML, but what if you aren’t starting out with an xml file, but with an owl model that you annotate with the required sxml annotations?
As always, Thanks!
jeff
Thanks Scott,
The thing I was really missing was using SPARQLMotion and the ConvertRDFToXML Module, and your script has provided a great head start for me on using it.
I think I have a pretty good handle on the overall concept but (as usual) there are a couple other finer points that aren’t quite clear to me are:
1. In sxsd.rdf, why are many of the classes annotated with 3 different values for the sxml:element property (e.g. xsd:schema, xs:schema, schema for the Schema class) and perhaps more importantly, how when generating with ConvertRDFToXML can you choose which one to use?
2. How does the sxml:prefix property work? I see that I can specify this property on my schema object with values such as “xsd” and “rdf” and it automatically picks the URI to associate with that namespace. How does it do this? and what if it chooses wrong? And what if I want to use “xs” instead of “xsd”?
Thanks,
Jeff
Thanks Scott,
The thing I was really missing was using SPARQLMotion and the ConvertRDFToXML Module, and your script has provided a great head start for me on using it.
I think I have a pretty good handle on the overall concept but (as usual) there are a couple other finer points that aren’t quite clear to me are:
1. In sxsd.rdf, why are many of the classes annotated with 3 different values for the sxml:element property (e.g. xsd:schema, xs:schema, schema for the Schema class) and perhaps more importantly, how when generating with ConvertRDFToXML can you choose which one to use?
2. How does the sxml:prefix property work? I see that I can specify this property on my schema object with values such as “xsd” and “rdf” and it automatically picks the URI to associate with that namespace. How does it do this? and what if it chooses wrong? And what if I want to use “xs” instead of “xsd”?