Geonovum / imwe2014

GNU General Public License v3.0
0 stars 0 forks source link

Hoe moeten IMWEPT2014 tekst/illustratie objecten eruit komen te zien? #3

Closed justb4 closed 9 years ago

justb4 commented 9 years ago

In IMWE2014 wordt binnen de 4 hoofdobjectypen verwezen naar Text en Illustraties. Deze laatsten staan gemodelleerd in IMWEPT2014 en gebaseerd op IMROPT2012. Bij het maken van proefbestanden zijn volgens mij de verwijzingen als volgt, zie voorbeeldbestand: https://github.com/Geonovum/imwe2014/blob/master/samples/imwe2014/FC-IMWE2014-1.xml

        <imwe:verwijzingNaarTekstInfo>
            <!-- Zie 4.4 - W3 - 'pt_' + planID -->
            <imwe:TekstReferentieNG_WN>
                 <imwe:verwijzingNaarTekst>pt_NL.IMWE.1709.WelstandsNiveauGebied.23</imwe:verwijzingNaarTekst>
                <imwe:typeTekst>beschrijving</imwe:typeTekst>
            </imwe:TekstReferentieNG_WN>
        </imwe:verwijzingNaarTekstInfo>

Dus een verwijzing zoals 'pt_' + planID bijv 'pt_NL.IMWE.1709.WelstandsNiveauGebied.23'. (?). In IMROPT2012 wordt direct verwezen naar een .pdf .html o.i.d., in ieder geval een "echt" bestand.

In IMWEPT2014 lijkt het erop dat teksten in een "imwept:FeatureCollectionIMWEPT" vervat zijn, waarbij iedere tekst (of onderdeel?) een "imwept:TekstObject" van type "imwept:TekstObjectType" is als volgt:

<element name="TekstObject" type="imwept:TekstObjectType"/>
<complexType name="TekstObjectType">
    <sequence>
        <element name="identificatie" type="string"/>
        <element name="verwijzingNaarPlangebied" type="string"/>
        <element name="volgnummer" type="integer"/>
        <element name="niveau" type="integer"/>
        <element name="type" type="imwept:Tekstobjecttype_WNType"/>
        <element name="titel" type="imwept:TitelInfoPropertyType"/>
        <element name="externeVerwijzing" type="string" minOccurs="0" maxOccurs="unbounded"/>
        <element name="tekst" type="string" minOccurs="0"/>
        <element name="tekstMetadata" type="imwept:TekstMetadataPropertyType" minOccurs="0"/>
        <element name="ouderID" type="imwept:TekstObjectPropertyType"/>
        <element name="interneVerwijzing" type="imwept:TekstObjectPropertyType" minOccurs="0"/>
    </sequence>
</complexType>

De vragen hier zijn:

MartijnSnel commented 9 years ago

De antwoorden zijn:

justb4 commented 9 years ago

Bij het aanmaken en verwijzen van IMWEPT2014 proefbestanden loop ik tegen 2 gerelateerde problemen/vragen aan:

  1. De "imwept:FeatureCollectionIMWEPT", dus de IMWEPT FeatureCollection, is niet, zoals "imwe:FeatureCollectionIMWE", de IMWE FeatureCollection afgeleid van een GML FC, i.e. via substitutionGroup="gml:AbstractFeature". Is dit bewust? Hierdoor wordt het formaat van IMWEPT2014 bestanden als volgt:

     <imwept:FeatureCollectionIMWEPT
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:imwept="http://www.geonovum.nl/imwe/pt/2014/1.0"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xhtml="http://www.w3.org/1999/xhtml"
          xsi:schemaLocation="
           http://www.geonovum.nl/imwe/pt/2014/1.0   ...."
      >
      <imwept:TekstMetadata>
    
      </imwept:TekstMetadata>
    
     <imwept:TekstObject>
       <imwept:identificatie>identificatie</imwept:identificatie>
    
     </imwept:TekstObject>
    
     <imwept:TekstObject>
       <imwept:identificatie>identificatie</imwept:identificatie>
    
     </imwept:TekstObject>
             .
             .
    </imwept:FeatureCollectionIMWEPT>

M.a.w. imwept:TekstMetadata en imwept:TekstObject zijn direct embedded onder imwept:FeatureCollectionIMWEPT, ipv als gml:featureMember (zoals bij IMWE2014). Maar mogelijk is dit een bewuste keuze, ook omdat tekst misschien niet via WFS verloopt. er moet dan wel custom software voor komen.

  1. Onduidelijk/onmogelijk om naar individuele tekstobjecten te verwijzen via xlink. In GML Applicatie schema's is het gebruikelijk om naar elders gedefinieerde element in ander document te verwijzen via xlink:href=http://...#id waarbij #id een gml:id is. Omdat IMWEPT2014 TextObjecten geen GML features zijn en geen "id" attribuut mogen hebben, hoe wordt dan verwezen via xlink? Via imwept:identificatie wordt linking te impliciet, of er moeten XPointer expressies worden gebruikt. Het nadeel van impliciete verwijzingen (zoals ook in BAG) is dat standaard software daar geen gebruik van kan maken of zelfs de xlinks als invalid beschouwt.

Een oplossing zou zijn om ook IMWEPT2014 op GML te baseren, identiek aan IMWE2014 en onder 2. om gml:id te gebruiken.

Maar nogmaals, misschien zijn dit alles (1+2) bewuste keuzes, i.e. om geen GML Feature Collections voor tekst te gebruiken en om linking naar tekst/figuren niet via XML xlink te doen maar via "identificatie" (idn) elementen....

justb4 commented 9 years ago

Nog een punt mbt identificatie en verwijzing naar tekstobjecten. In IMWE2014-v1.0.pdf lijkt een soort inconsistentie te bestaan. (Of ik begrijp de bedoelde conventie niet goed):

In constraints voor WN, W3, p37: "Format verwijzing naar tekst. Format = pt’planID’". Terwijl TekstObjecten juist hun eigen namespaced formaat hebben: 3.2.1, p29: 3.2.1: "Attribuut: identificatie...eigen identificatie (idn) van het TekstObject. De code moet uniek zijn binnen het plantekstenbestand. De identificatie begint met "NL.IMWE.PT." en wordt gevolgd door max. 32 alfanumerieke tekens. De waarde moet voldoen aan de volgende reguliere expressie: NL.IMWE.PT.[A-Za-z0-9-,.]{1,32}"

Dus lijkt mij dat dan Format verwijzing naar tekst dezelfde conventie dient te hebben als de idn van TekstObject.

justb4 commented 9 years ago

Nog een mbt verwijzingen: in een FeatureCollectionIMWEPT kan een TekstObject een verwijzing hebben naar een TekstMetadata. Deze verwijzing heeft als definitie TekstMetadataPropertyType die een xlink attribuutgroep is. Dus m.a.w. de verwijzing moet een xlink zijn. Bijv

          <imwept:tekstMetadata xlink:href="#NL.IMWE.PT.0882.WelstandLandgraaf.v1.MD"/>

Echter, TekstMetadata kent geen id attribuut, alleen een "identificatie" (idn) element. Dit zorgt voor een invalid xlink in bovenstaande notatie. De oplossing zou zijn om FeatureCollectionIMWEPT een GML collectie net als FeatureCollectionIMWE te maken. Dan zou TekstMetadata een gml:id kunnen krijgen. Vandaar dat deze opmerking hier geplaatst is.

imwept:ouderID en imwept:interneVerwijzing hebben hetzelfde probleem als imwept:tekstMetadata: xlink's naar TekstObjecten, echter TekstObjecten hebben geen (gml:)id attribuut.

PalmJanssen commented 9 years ago

Ik zit niet in het tekstmodel. Het is analoog gemaakt aan het IMROPT2012 tekstmodel. De implementatie gaat op een vergelijkbare manier. Voor IMRO2012 is de objectgerichte tekst facultatief. Je zou dus naar voorbeelden van IMRO2012 met object planteksten moeten kijken. Kan je vinden op: http://ro-standaarden.geonovum.nl/2012/voorbeeldplannen/20121106/

justb4 commented 9 years ago

@PalmJanssen ok, gevonden bijv. http://ro-standaarden.geonovum.nl/2012/voorbeeldplannen/20121106/IMROPT/NL.IMRO.9999.SVP20120007/VA01/pt_NL.IMRO.9999.SVP20120007-VA01.xml. Er is wel 1 groot verschil tussen IMWEPT en IMROPT: het gebruik van het attribuut identificatie: in IMROPT2012 een XML attribute type ID en in IMWEPT2012 een element. Dit laatste maakt dat (interne) verwijzing via xlink in IMWEPT2012 nooit mogelijk is (bijv via TekstMetadataPropertyType)

Zie definities: IMROPT2012 (attribuut type ID):

<element name="TekstMetadata" type="imropt:TekstMetadataType"/>
<complexType name="TekstMetadataType">
    <sequence>
        <element name="verwijzingNaarPlangebied" type="string"/>
        <element name="typePlan" type="string" minOccurs="0"/>
        <element name="naam" type="string" minOccurs="0"/>
        <element name="beleidsmatigVerantwoordelijkeOverheid" type="string" minOccurs="0"/>
        <element name="naamOverheid" type="string" minOccurs="0" maxOccurs="unbounded"/>
        <element name="overheidsCode" type="string" minOccurs="0"/>
        <element name="creatiedatum" type="string" minOccurs="0"/>
        <element name="naamPraktijkrichtlijn" type="string"/>
    </sequence>
    <attribute name="identificatie" type="ID" use="required"/>
</complexType>
<complexType name="TekstMetadataPropertyType">
    <attributeGroup ref="xlink:simpleAttrs"/>
</complexType>
<element name="TekstObject" type="imropt:TekstObjectType"/>
<complexType name="TekstObjectType">
    <sequence>
        <element name="verwijzingNaarPlangebied" type="string"/>
        <element name="volgnummer" type="integer"/>
        <element name="niveau" type="integer"/>
        <element name="type" type="imropt:ObjecttypePropertyType"/>
        <element name="typeTekst" type="imropt:TeksttypeType" minOccurs="0"/>
        <element name="titelInfo" type="imropt:TitelInfoPropertyType"/>
        <element name="externeVerwijzing" type="anyURI" minOccurs="0" maxOccurs="unbounded"/>
        <element name="tekstMetadata" type="imropt:TekstMetadataPropertyType" minOccurs="0"/>
        <element name="ouderID" type="imropt:TekstObjectPropertyType"/>
        <element name="interneVerwijzing" type="imropt:TekstObjectPropertyType" minOccurs="0" maxOccurs="unbounded"/>
        <element ref="xhtml:tekst" minOccurs="0"/>
    </sequence>
    <attribute name="identificatie" type="ID" use="required"/>
</complexType>

en IMWEPT2012 (identificatie is element):

<element name="TekstMetadata" type="imwept:TekstMetadataType"/>
<complexType name="TekstMetadataType">
    <sequence>
        <element name="identificatie" type="string"/>
        <element name="verwijzingNaarPlangebied" type="string"/>
        <element name="typePlan" type="string"/>
        <element name="naam" type="string"/>
        <element name="beleidsmatigVerantwoordelijkeOverheid" type="string"/>
        <element name="naamOverheid" type="string"/>
        <element name="overheidsCode" type="string"/>
        <element name="creatiedatum" type="string"/>
        <element name="naamPraktijkrichtlijn" type="string"/>
    </sequence>
</complexType>
<complexType name="TekstMetadataPropertyType">
    <attributeGroup ref="xlink:simpleAttrs"/>
</complexType>
<simpleType name="Tekstobjecttype_WNType">
    <restriction base="string">
        <enumeration value="welstandstekst"/>
        <enumeration value="bijlage"/>
        <enumeration value="bijlagen"/>
        <enumeration value="deel"/>
        <enumeration value="document"/>
        <enumeration value="hoofdstuk"/>
        <enumeration value="overig"/>
        <enumeration value="paragraaf"/>
        <enumeration value="subparagraaf"/>
        <enumeration value="subsubparagraaf"/>
        <enumeration value="subsubsubparagraaf"/>
    </restriction>
</simpleType>
<element name="TekstObject" type="imwept:TekstObjectType"/>
<complexType name="TekstObjectType">
    <sequence>
        <element name="identificatie" type="string"/>
        <element name="verwijzingNaarPlangebied" type="string"/>
        <element name="volgnummer" type="integer"/>
        <element name="niveau" type="integer"/>
        <element name="type" type="imwept:Tekstobjecttype_WNType"/>
        <element name="titel" type="imwept:TitelInfoPropertyType"/>
        <element name="externeVerwijzing" type="string" minOccurs="0" maxOccurs="unbounded"/>
        <element name="tekst" type="string" minOccurs="0"/>
        <element name="tekstMetadata" type="imwept:TekstMetadataPropertyType" minOccurs="0"/>
        <element name="ouderID" type="imwept:TekstObjectPropertyType"/>
        <element name="interneVerwijzing" type="imwept:TekstObjectPropertyType" minOccurs="0"/>
    </sequence>
</complexType>
<complexType name="TekstObjectPropertyType">
    <attributeGroup ref="xlink:simpleAttrs"/>
</complexType>

De eigenschap identificatie is van type XML element. Daardoor kan geen xlink gelegd worden.

PalmJanssen commented 9 years ago

Ik zie het. Moet geregeld worden. In de GML docs hebben alle objecten een gml:id. In tekstdocs niet. Vandaar deze omissie.. Het komt er op neer dat identificatie van type ID moet zijn.

justb4 commented 9 years ago

Ok een gooi gedaan in IMWEPT 2014 proefbestand. Voorlopig uitgegaan van 'identificatie' referentie: https://github.com/Geonovum/imwe2014/blob/master/samples/imwe2014/FC-IMWEPT2014-1.xml Sluiten als identificatie ID attribute (in RC3?) aanwezig is.

PalmJanssen commented 9 years ago

In IMWEPT2014 versie 1.0.0RC2: identificatie is van type ID gemaakt. attribute name="identificatie" type="ID" use="required"

Is daar alles mee opgelost?

justb4 commented 9 years ago

Nee (als dat enige wijziging is), want dan kun je nog steeds niet verwijzen. identificatie moet een attribute zijn, analoog aan IMROPT:

    <attribute name="identificatie" type="ID" use="required"/>
PalmJanssen commented 9 years ago

Dank je. het is precies zo gedaan als je zegt

justb4 commented 9 years ago

ok!