äärmiselt venivusega

Link: http://xfront.com/eXtreme-eXtensibility.html

(XML Schema Disain Semantiline Veeb)

Roger L. Costello

jaanuar 25, 2003

Küsimus: kuidas me disain XML-struktuuri nii, et see seab mingeid piiranguid sõnavara, et näiteks dokumentide kasutada, ning mis soodustab majanduskasvu andmeid väga hajutatud mood?

Kasutab äärmise venivusega Disain Muster

Käesolev dokument kirjeldab, kuidas projekteerimisel XML-Skeem, mis võimaldab andmeid koguda (ja salvestatud XML) sõltumatu, levitada mood, ja mingeid piiranguid XML sõnavara. disain muster, mis on esitatud on eriti kasulik olukordades, kus:

  • te soovite, et koguda andmeid umbes midagi (ja salvestada andmeid nagu XML), ja
  • soovid võimaldavad andmed tuleb koguda erinevate inimeste (see tähendab, et andmed on kogutud hajus mood), ja
  • sa tahaksid, et võimaldada ettenägematute andmeid (mis on, mingeid piiranguid, kui XML-i sõnavara töötas), ja
  • te tahaks, et oleks võimalik koondada kõik jaotatud andmeid, et genereerida konsolideeritud pilt.

Siin on mõned näited olukordadest, mis oleks sellest kasu disain muster

  • Kirjeldades Geograafilise Ressurss: näiteks, seal võib olla mitu sõltumatud rühmad teadlaste andmete kogumise kohta, aktiivne vulkaan. See oleks kasulik, et võimaldada iga meeskond avaldada oma andmeid sõltumatult, ja siis hiljem koondada kõik andmed. Teine näide on selles kategoorias on andmete kogumine umbes jõgi. Ma kasutan seda nii, et minu näide kogu selle raamatu.
  • Annab Eluloolised Andmed Isiku kohta: näiteks, oletame, et te olete vastutav väike rühm inimesi, kelle ülesandeks on koguda biograafilisi andmeid Albert Einstein. Selle skeemi disain muster sobib ideaalselt, kuna see võimaldab iga meeskonna liige töötada ja avaldada iseseisvalt.
  • Luureandmete Kogumine:, mille iseloom, kogudes luure andmed on hajutatud tegevus. Selle skeemi disain muster toetab, et andmete kogumise tegevus.

Need on vaid mõned kasutab skeemi disain muster, mis on esitatud käesolevas raamatus. Üldiselt, millal iganes sa tahad oma andmete kogumine ja avaldamine tegevuse ära veebikeskkond, siis see on hea disain muster. Selge, selle kasutamine on piiratud ainult oma kujutlusvõimet.

Klassikalise XML-Skeemi Disain

Klassikalise XML-Skeemi disain on normatiivne. See tähendab, et skeemi tuvastab allika liik ja nähakse ette, millised andmed on lubatud, et allika liik. Näiteks, mõtle seda kohta andmeid Hiina jangtse express:

<River id="Yangtze">
     <Length>6300 kilometers</Length>
     <StartingLocation>western China's Qinghai-Tibet Plateau</StartingLocation>
     <EndingLocation>East China Sea</EndingLocation>
</River>

Klassikalise skeemi disain oleks kuulutada Jõgi element, mis koosneb järjestikustest lapse elemendid – Pikkus, StartingLocation, ja EndingLocation. Näiteks, siin on XML-struktuuri, mis järgib klassikalise disaini lähenemine:

<element name="River">
    <complexType>
        <sequence>
            <element name="Length" type="string"/>
            <element name="StartingLocation" type="string"/>
            <element name="EndingLocation" type="string"/>
        </sequence>
        <attribute name="id" type="ID" use="required"/>
    </complexType>
</element>

Puudused Klassikalise Skeemi Disain Web Keskkond

XML astme dokumentide ja eelarvele, XML Schemas on mõeldud kasutamiseks jooksul Web keskkond. Veel klassikalise XML-Skeemi disain on vastuolus veebikeskkond, nagu näeme allpool.

Web Lähenemine Andmed – eXtreme venivusega!

Oletame, et loote Veebilehe, mis sisaldab andmeid jangtse express. Sõltumatu sa, ja ilma teie teadmata, saan ma luua Veebilehe, mis sisaldab muid andmeid jangtse express. Ja ma võin link oma veebilehel oma veebileht. Oma veebileht lisab väärtust minu veebilehele ja vastupidi. Kolmas isik võib luua veel ühe Veebilehe, mis sisaldavad rohkem andmeid jangtse express, ja siduda see, et mõlemad meie Veebi lehekülgedel. Rikas Web andmete kohta jangtse express on tekkimas.Lisa omadused käesoleva Veebilehe lähenemine annab andmeid jangtse express:

Jaotatud Andmed: andmed jangtse express on jaotatud üle mitme Veebi lehekülgedel.
Piiramata Sõnavara: liigirikkus ja hulk andmeid, mis on saadaval, et kirjeldada jangtse express on piiratud ainult kujutlusvõime Veebilehe disainerid.
Järjestamata: ei ole, et andmed jangtse express. Kui hyperlinked veebilehti moodustab sellest järjestamata andmete kogumine.
Summeerimine: summa kokku andmed jangtse express saadakse, kui liidetakse väga mitmekülgne Veebilehe andmeid.
Veebis on klassikaline näide sellest, mida Dee Hock viitab kui “chaord” (süsteemi, mis on segu kaos ja et).

Klassikalise XML Schema Lähenemine Andmed

Tüüpiline XML-Skeemi, milles struktuur ja liik lubatud andmeid jangtse express on siin näidatud:idatud:

<element name="River">
    <complexType>
        <sequence>
            <element name="Length" type="string"/>
            <element name="StartingLocation" type="string"/>
            <element name="EndingLocation" type="string"/>
        </sequence>
        <attribute name="id" type="ID" use="required"/>
    </complexType>
</element>

XML-Skeemi täpsustatakse, milliseid andmeid on lubatud (“saate anda Pikkuse jõe, selle StartingLocation, ja selle EndingLocation”), ja millises järjekorras. Kui sul luua XML Web page, ja leht vastab ülaltoodud skeemi, siis see peab tingimata olema piiratud tüüpi andmeid näeb skeemi, nt:

<River id="Yangtze">
     <Length>6300 kilometers</Length>
     <StartingLocation>western China's Qinghai-Tibet Plateau</StartingLocation>
     <EndingLocation>East China Sea</EndingLocation>
</River>

Kui ma luua XML veebilehel, siis minu leht hakkab välja nägema sama. Ja kui kolmas isik loob XML-veebilehekülje see liiga on sarnased. Skeemi kehtestab ühtsus, reguleeritud, kontrollitud andmete disain.Olgem lisa omadused klassikaline XML Schema lähenemisviisi määratlemiseks andmed jangtse express:

Tsentraliseeritud Andmed: kuigi seal võib olla mitmeid veebisaite, mis sisaldavad andmeid jangtse express nad kõik sisaldavad samu andmeid (sõnavara). Seega, seal on tegelikult üks, tsentraliseeritud andmeid.
Piiratud Sõnavara: liigirikkus ja hulk andmeid, mis on ette nähtud kirjeldades jangtse express on rangelt piiratud XML-Skeemi. Ettenägematute võimalusi kirjeldavad jangtse express ei ole lubatud.
Tellitud: seal on range järjestuse kohta andmeid jangtse express.
Kogumine: summa kokku andmed jangtse express saadakse, läheb mõni veebisaidid ja andmete kogumine.

Sulgege: Web Andmete Disain vs Klassikaline XML-Andmete Disain

Allpool on tabel, mis võtab kokku eespool arutelu.rutelu.

XML Schemas Veeb
kontrollitud kasvu andmed) anarchical kasvu andmed)
tsentraliseeritud andmed) jaotatud andmed)
koguda andmeid agregeeritud andmed)
vertikaalne data disain põik data disain

Tõhus Kasutamine XML ja XML Schemas Web Maailm

Teha XML-i, ja kaudselt XML-Skeem, kasutatavad Veebi maailmas nõuab nihe selles, kuidas me disain XML Schemas ja kuidas me mõtleme andmeid.Allpool on toodud nõuded XML-struktuuri kirjeldamiseks Yangtze jõe, kus me teeme tõhusat kasutamist veebikeskkonnas:

  • Piiramata Sõnavara: Ei saa olla mingeid piiranguid sisu Jõe element. See võimaldab ettenägematute andmeid. Kõik sõnavara, et skeem näeb ette, tuleks käsitada üksnes lähtekohaks.
  • Järjestamata: Ei saa olla mingeid piiranguid tellimuse andmed)

[Märkus: täielik anarhia oleks koht, absoluutselt mingeid piiranguid sisu Jõe element. Näiteks võimaldaks see Jõgi element, mis sisaldavad “kere” element. Me ei taha, täielik anarhia. Me soovime, et võimaldada mis tahes elemente, nii kaua, kui nad on mõtet Jõe.]Edasi näeme, kuidas koostada skeemi, mis võtab arvesse nende nõuete.

XML-Skeemi Disain äärmiselt venivusega!

Siin on, kuidas koostada skeem, mis vastab eespool toodud nõuetele:

<element name="River">
    <complexType>
        <sequence>
            <any namespace="##targetNamespace" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="id" type="ID" use="required"/>
    </complexType>
</element>
<element name="Length" type="string"/>
<element name="StartingLocation" type="string"/>
<element name="EndingLocation" type="string"/>

Olgem meelde peamised funktsioonid selles skeemis:

Ei ole mingeid piiranguid sisu Jõe muud üle, kui öelda, et sisu peab kuulute sellesse nimeruumi (teiste sõnadega, ma tahan ainult, et võimaldada nii sisu elemente, mis mõtet Jõe element).
Esmane sõnavara – Pikkus, StartingLocation, EndingLocation – on ette nähtud kasutamiseks sisu Jõe element. Käesoleva sõnavara võib pikendada, nagu me näeme.
Lähme tagasi, et näiteks kolm inimest hoone veebilehti: teil luua XML-veebileht, mis kasutab vaid sõnavara esitatud skeemi:skeemi:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river">
     <Length>6300 kilometers</Length>
     <StartingLocation>western China's Qinghai-Tibet Plateau</StartingLocation>
     <EndingLocation>East China Sea</EndingLocation>
</River>

See on oluline märkida, et seal on mingeid piiranguid tellimise elementi Jõgi. Lisaks puuduvad piirangud arvu juhtumeid element (me näeme näide sellest allpool). Seega, see on üldine meetod, mis võimaldab sisukord elemendi esineda suvalises järjekorras, ja mis tahes arvu juhtumite! Pange tähele, et see tehnika on sarnasusi <all> element, kuid on palju võimsamad!Järgmine, soovin ka luua XML Web page about the Yangtze jõe kuid ma tahaksin pakkuda erinevaid andmeid – andmeid kuulus Three Gorges Dam. Siin on minu XML Web page:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river"
       xmlns:d="http://www.geodesy.org/dam">
     <Dam>
         <d:Name>The Three Gorges Dam</d:Name>
         <d:Width>1.5 miles</d:Width>
         <d:Height>610 feet</d:Height>
         <d:Cost>$30 billion</d:Cost>
     </Dam>
</River>

Tamm, element ei ole üks esmast sõnavara, et XML-Skeemi deklareerib, et mul on vaja täiendada esmast sõnavara, luues oma skeemi, mis kinnitab Tamm element:

<include schemaLocation="River.xsd"/>
<import namespace="http://www.geodesy.org/dam"
        schemaLocation="Dam.xsd"/>

<element name="Dam">
    <complexType>
        <sequence>
            <any namespace="http://www.geodesy.org/dam" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
</element>

Deklaratsiooni Dam element ütleb, et selle sisu on midagi, just nii kaua, kui elemendid pärinevad http://www.geodesy.org/dam nimeruum. Schema, Dam.xsd, mis määratleb, et nimeruumi. Siin on Tamm.xsd:

<element name="Name" type="string"/>
<element name="Width" type="string"/>
<element name="Height" type="string"/>
<element name="Cost" type="string"/>

Lõpuks, kolmas isik soovib esitada andmeid eri nimede, et Yangtze river on omandanud aja jooksul:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river">
     <Name>Dri Chu - Female Yak River</Name>
     <Name>Tongtian He, Travelling-Through-the-Heavens River</Name>
     <Name>Jinsha Jiang, River of Golden Sand</Name>
</River>

Kuna see kolmas isik on kasutada ka sõnavara, et ei ole olemas esialgse skeemi sõnavara loetelu, ta/ta peab täiendada esmast sõnavara, luues skeemi:

<include schemaLocation="River.xsd"/>

<element name="Name" type="string"/>

Pange tähele, et kuna Jõgi element on paigutatud mingeid piiranguid selle sisu eest, meil on võimalik kasutada Nime element korduvalt.

Sulgege Näide

Eespool näiteks näitas, kuidas XML Schema võib olla loodud selleks, et võimaldada iga XML Web page olema projekteeritud iseseisvalt ja koos mingit piirangut, mida või kui palju andmeid on ette nähtud jangtse express. See näitab üha kasvav hulk teavet jangtse express. Aggregator vahendid, mida saab korjata kokku kõik erinevad tükid (XML-ülesehitus) andmed esitama konsolideeritud silmas jangtse express. Kena!

Omadused Disain Muster

Käesolevas raamatus on esitatud viisil, kavandamise skeem, mis võimaldab andmeid koguda (ja esindatud kasutades XML) sõltumatu, levitada mood, ja mingit piirangut XML-sõnavara. Oluline on rõhutada, eelkool schemas, et tööle see disain muster

  1. Schemas on Väike: kasutades seda disaini muster te luua ühe skeemi iga ressursi (nt, luua skeemi jõe), ning esitama esialgse komplekti sõnavara, mida võib kasutada koos, et ressursside (nt Pikkus, StartingLocation, ja EndingLocation). Kui teil on erinevate ressursside (nt, vulkaan) siis oleks luua erineva skeemi (ja annab esialgse komplekti sõnavara, mida võib kasutada koos vulkaan ressurss).
  2. Nimeruum = Klass: selle disain muster skeemi on targetNamespace on sisuliselt määratleda klassi (nt, targetNamespace Jõe näide oli: http://www.geodesy.org/river. Seda võib tõlgendada kui “see skeem on määratleda jõe klass”)

Liitmise

Varem ma osutatud võime vahend koondada erinevaid tükki andmeid ja esitada konsolideeritud vaadata. Lähme nüüd ja vaatame, kuidas koondada erinevaid jangtse express andmetel.Näiteks meil oli kolm inimest, kes on loonud andmed jangtse express. Meil lõppes 3 skeeme ja 3 astme dokumendid:

3 Schemas

Jõgi.xsd: deklareeritud Jõe element, ja teatas, et esialgse komplekti sõnavara, mida võib kasutada, et asustada Jõe element – Pikkus, StartingLocation, ja EndingLocation.River2.xsd: see skeemi täiendada esmast sõnavara, mille Dam element.River3.xsd: see skeem ka täiendada esmast sõnavara, mille Nimi element.

3 Astme Dokumendid

Yangtze.xml: see astme dokument näitas, Pikkus, StartingLocation, ja EndingLocation Jõe.Yangtze2.xml: see astme dokumendis kirjeldatud Jõe Kolme Gorges Dam.Yangtze3.xml: see astme dokumendis on loetletud erinevad nimed, et Jõgi on omandatud.

Paneb andmed koos

On aggregator vahend on koguda erinevaid andmeid Jõkke, et luua ühtne dokument:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river"
       xmlns:d="http://www.geodesy.org/dam">
     <Length>6300 kilometers</Length>
     <StartingLocation>western China's Qinghai-Tibet Plateau</StartingLocation>
     <EndingLocation>East China Sea</EndingLocation>
     <Dam>
         <d:Name>The Three Gorges Dam</d:Name>
         <d:Width>1.5 miles</d:Width>
         <d:Height>610 feet</d:Height>
         <d:Cost>$30 billion</d:Cost>
     </Dam>
     <Name>Dri Chu - Female Yak River</Name>
     <Name>Tongtian He, Travelling-Through-the-Heavens River</Name>
     <Name>Jinsha Jiang, River of Golden Sand</Name>
</River>

Thus, this instance document is a composite of all the disparate data about the Yangtze river!To validate the composite instance document the aggregator tool must compose all of the schema declarations into a single file. Here’s the resulting schema:

<import namespace="http://www.geodesy.org/dam"
        schemaLocation="Dam.xsd"/>

<element name="River">
    <complexType>
        <sequence>
            <any namespace="##targetNamespace" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="id" type="ID" use="required"/>
    </complexType>
</element>
<element name="Length" type="string"/>
<element name="StartingLocation" type="string"/>
<element name="EndingLocation" type="string"/>
<element name="Dam">
    <complexType>
        <sequence>
            <any namespace="http://www.geodesy.org/dam" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
</element>
<element name="Name" type="string"/>

Seega, sõnavara, mis on nüüd saadaval, mis kirjeldavad Jõgi on – Pikkus, StartingLocation, EndingLocation, Tammi, ning Nimi!

Liitmise Probleem

Võimu see disain muster on see, et see annab iga inimene iseseisvalt kirjeldada jangtse express ei limitats kohta sõnavara (st XML-silte), mida kasutatakse, et kirjeldada Jõgi (pigem sõnavara peab kõik kuuluvad http://www.geodesy.org/river nimeruum).Et võim tuleb võimalikke probleeme kui koondamisel on erinevad andmed. Näiteks, oletame, et kaks inimest (iseseisvalt) ekskursiooni jõe Tammi. Kõik nad luua oma skeemi, mis kinnitab Tamm element. Kõik on hästi. Iga inimene saab eraldi kinnitada nende astme andmeid. Samas, kui aggregator vahend lusikatäit üles kõiki astme kohtu andmed, ning kogu skeemi, deklaratsioonid, siis ei tule probleemi – schema on kaks (tõenäoliselt erinevad) deklaratsioonide Tamm. See on probleem.Milline on lahendus? Siin on mõned ideed, mis mul on (mul on hea meel teiste inimeste ideid selle kohta):

  1. Kinnitada Eraldi, Hästi Formedness Kollektiivselt: iga inimene saab eraldi kinnitada oma andmeid. Kui andmed on koondatud ei viitsinud kinnitamine (mis mõtet on?). Lihtsalt kontrollida, hästi formedness. Ma arvan, et 99% juhtudel on selline lähenemine täiesti trahvi.
  2. Wrap Duplikaate: kui seal on duplikaadid, nagu eksemplaris Dam elemendid, wrap igaüks neist jooksul unikaalne element. Kas see nii on näiteks dokument, samuti skeemi. Loomulikult, see nõuab palju intelligentsem aggregator vahend.

Soovitus

Nagu oleme näinud, on see Web-orienteeritud (eXtreme venivusega) XML-Skeemi disain muster on kasulik, kui on soov kasvada asutusele teabe, eriti kui sa tahad kasvada asutuse andmete hajus mood. Eespool jangtse express näide on suurepärane näide selle kohta, kui rohkem aega, siis tahaksin kasvatada keha kohta andmeid jõgi. XML Schemas geograafilisi omadusi on hea kandidaat selle disain muster. XML Schemas selleks, et koguda teavet isiku kohta on ka hea kandidaat (näiteks, kui soovite luua elulugu Albert Einstein soovite võib-olla “kasvavad” need andmed sõltumatu, levitada mood). Seal on palju, palju muid näiteid, kus see disain muster on kasulik. Teie kujutlusvõime on tõesti piir.Eesmärk Semantiline Veeb on võimaldada kõigile, kõikjal, igal ajal esitada andmed ressursside kohta. Kasutades disain muster esitatud käesolevas raamatus toob oma andmed vastavusse viimine nägemus Semantiline Veeb.

Seoses MES?

“See on kindlasti kõlab palju nagu RDF – määratleda ressurss (nt, jangtse express), milles on andmed (kinnisvara/väärtus paare) ressurss. Miks “võlts see” XML Schemas? Miks mitte kasutada “päris asi”, … MES?”Sinu tähelepanek on igati õige. Ideaalis me ilmselt tuleks kasutada RDF. Aga MES on vähem hästi aru, mida XML-ühenduse, see ei ole sugugi samal tasemel tüüp, et kontrollida XML-Skeem ette näeb, ja seal on vähem toetust selle poolest vahendid. Nii, et eespool nimetatud lähenemine on ajutine lahendus. Kasutades see lähenemine aitab muuta samm RDF (ja Semantiline Veeb) vähem valus.

Jalgpalliliiga XML Schemas-ja RDF

Parim kõigist võimalikest maailmadest oleks teha nt dokumentide kasutatav nii, mida XML-vahendid, samuti RDF vahendid. Huvitav on see, et kaks astme dokumentide jangtse express näide on ka täiesti hea RDF dokumendid:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river">
     <Length>6300 kilometers</Length>
     <StartingLocation>western China's Qinghai-Tibet Plateau</StartingLocation>
     <EndingLocation>East China Sea</EndingLocation>
</River>

samuti on see üks …

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river">
     <Name>Dri Chu - Female Yak River</Name>
     <Name>Tongtian He, Travelling-Through-the-Heavens River</Name>
     <Name>Jinsha Jiang, River of Golden Sand</Name>
</River>

Teise astme dokument, ei ole siiski head RDF:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river"
       xmlns:d="http://www.geodesy.org/dam">
     <Dam>
         <d:Name>The Three Gorges Dam</d:Name>
         <d:Width>1.5 miles</d:Width>
         <d:Height>610 feet</d:Height>
         <d:Cost>$30 billion</d:Cost>
     </Dam>
</River>

Põhjus on selles, et MES üritab ravida Dam element nagu kinnisvara. Tamm element on tegelikult a-klassi (ja Nimi, Laius, Pikkus ja hind omaduste Klass). Lahendus on wrap Dam element:

<River id="Yangtze"
       xmlns="http://www.geodesy.org/river"
       xmlns:d="http://www.geodesy.org/dam">
     <RiverStructure>
         <Dam>
             <d:Name>The Three Gorges Dam</d:Name>
             <d:Width>1.5 miles</d:Width>
             <d:Height>610 feet</d:Height>
             <d:Cost>$30 billion</d:Cost>
         </Dam>
     </RiverStructure>
</River>

Nüüd on see astme dokument on ka trahvi RDF!Kuna maailm on liikumas Semantiline Veeb ta teeb väga hea tunde, et anda oma andmete kahesuguse kasutusega – kasutatav nii XML-vahendid, ja MES vahendid. (Sõbralik vihje)

Liitmise Probleem Eespool Märgitud, ei ole olemas RDF

Eespool kohta Liitmise ma täheldanud probleemi, mis koguvad erinevaid skeemi deklaratsioonid ühte skeemi, kui seal on mitu eri deklaratsioone sama elemendi (näiteks andsin oli kaks inimest iseseisvalt kuulutatakse Dam element). See on omane probleem XML Skeeme.RDF, aga ei ole seda piirangut. Kõigile, kõikjal ja igal ajal on võimalik määrata samad omadused, ja kui nad koondatakse, siis pole probleemi.

Tänuavaldused

Ma tahaksin, et tänulikult tunnistada järgmised inimesed oma suurepärase arusaamu, soovitusi ja nõuandeid:

  • Dave ‘ i Puhul
  • David Jacobs
  • Frank Manola