1

私は次のレコード構造を持っています:

ID Bezeichner OGD-Kurzname CKAN Feld Anzahl
          Bezeichnung der
 2 schema_name extras:schema_name 1
         Metadatenstruktur
定義名derMetadatenstruktur
                  DieAngabefürOGDMetadatenはオプションではなく、solteaberwennmöglich
                  erfolgen。Bei einer Adaptierung der OGD Metadatenstruktur wird eine
Erläuterung
                  konsistenteMetadatenführungerleichtert。Metadatenelementsollteを死にます
                  automatisch vom System(ソフトウェア)befülltwerden
BeispielOGDオーストリアメタデータ2.0
オンA1.4
2270:2010
ON / EN / ISO mdStanName(10)
19115:2003
RDFプロパティdcterms:alternative
定義OGDオーストリアメタデータ2.0。
英語

ID Bezeichner OGD-Kurzname CKAN Feld Anzahl
            Sprache des extras:
 3 schema_language 1
          Metadatensatzes schema_language
定義ISO639-2dreistelligerISOSprachcodefürdenMetadatensatz
                  welcher der MetadatensatzerstelltwurdeのSprache。ダイス
Erläuterung
                  Metadatenelement sollte automatisch vom System(Software)befülltwerden
Beispiel ger
1.2で
2270:2010
ON / EN / ISO mdLang(3)
19115:2003
RDFプロパティdcterms:language
定義メタデータ言語、常にger(ドイツ語)
英語

私はそれをこの構造に分割したいと思います:

2 | Bezeichnung der Metadatenstruktur | schema_name | extras:schema_name | 1 | Name der Metadatenstruktur |DieAngabefürOGDMetadatenはオプションではなく、solteaberwennmöglicherfolgenです。Bei einer Adaptierung der OGD Metadatenstruktur wirdeinekonsistenteMetadatenführungerleichtert。Dieses Metadatenelement sollte automatisch vom System(Software)befülltwerden|OGDオーストリアメタデータ2.0| 1.4 | mdStanName(10)| dcterms:alternative|OGDオーストリアメタデータ2.0。
3 | Sprache des Metadatensatzes | schema_language | extras:schema_language | 1 | ISO 639-2dreistelligerISOSprachcodefürdenMetadatensatz|Sprache in welcher der Metadatensatzerstelltwurde。Dieses Metadatenelement sollte automatisch vom System(Software)befülltwerden| ger | 1.2 | mdLang(3)| dcterms:language |メタデータ言語、常にger(ドイツ語)

より明確にするために、ここにフィールドを区切る色付きのスクリーンショットがあります。黄色は見出しフィールドです、私は必要ありません、オレンジは必須フィールドです:http: //i.imgur.com/PwG6g.png

4

2 に答える 2

2

それができれば、AWKで実行できるようになります。これを決定する要因は、レコード構造がどれほど予測可能かということです。

たとえば、Bezeichnerフィールドには常に空の行で区切られた2行がありますか?1行しかないこともありますか?

左側の行ラベルについても同じです。それらは常に同じでしょうか?それらはタブまたはスペースによって値から分離されていますか?値は常に改行で区切られていますか?値に改行が含まれることはありますか?

フィールドが固定幅であるという事実が役立ちます。各フィールドに何行のテキストが含まれるかがわかっている場合は、各行を適切な幅のサブストリングに分割できます。

このような構文解析の大きな問題は、技術的な解決策ではありません。誰かが上記のテキストを正しく解析するパーサーを書くことができますが、それはすべてのレコードインスタンスを解析しますか?繰り返しますが、それはレコード形式がどれほど堅固で、その構造がどれだけ変化するかに依存します。

はい、できればAWKでもできます。

于 2012-12-17T19:24:08.170 に答える
2

から抽出されたテキストを解析するPDFことは決して理想的ではありません。しかし、もしあなたが必死になっている(そして多分少し頭がおかしい)なら、あなたはあなた自身のペーサーを書いてみることができます。秘訣は、そもそもデータを適切に抽出することです。そのため、以下のコメントでリンクしたファイルを無視して、ソースに直接アクセスしました。その後、を使用pdftotextして抽出を実行できます。これが私がしたことです:

ステップ1、ファイルを取得します。

wget http://www.data.gv.at/wp-content/uploads/2012/10/OGD-Metadaten_2_1_2012_10.pdf

ステップ2、それを変換します:

pdftotext OGD-Metadaten_2_1_2012_10.pdf

ステップ3、それを解析します:

次のように実行します:

awk -f script.awk OGD-Metadaten_2_1_2012_10.txt

内容script.awk

BEGIN {
    RS="\nID\n"
    FS="\n"; OFS="|"

    a["Bezeichner"]; a["OGD-Kurzname"]; a["CKAN Feld"]
    a["Anzahl"]; a["Definition"]; a["Erläuterung"]
    a["Beispiel"]; a["ON A 2270:2010"]
    a["ON/EN/ISO 19115:2003"]; a["RDF property"]
    a["Definition Englisch"]
}

NR>2 {
    for (i=1;i<=NF;i++) {

        l = (l ? l (l ~ /^extras:$/ ? "" : " ") : "") $i

        if ($(i+1) == "" ) {
            if (l in a) {
                l = ""
            }
            else if (l != "") {
                c = (c ? c OFS : "") l
                n++
                l = ""
            }
        }
        if (n == 12) {
            print (c ~ /^[0-9]/ ? c : "ERROR: BAD RECORD")
            c = n = ""
            next
        }
    }
}

結果:

1|Eindeutiger Identifikator|metadata_identifier|extras:metadata_identifier|1|Eindeutiger Identifikator für den Metadatensatz. Der Eintrag beschreibt die eindeutige Identifikation für einen Metadatensatz. Es sollte eine UUID (nach RFC:4122) gewählt werden.|Der Identifikator soll automatisch vom System (Software) generiert werden. Falls dieser vorhanden ist (Harvesten bestehender Metadatensätze) muss dieser übernommen werden.|550e8400-e29b-11d4-a716-446655441234|1.1|mdFileID (2)|dcterms:identifier|Unique Identifier of metadata. Should the a UUID conforming to RFC:4122
5|Datum des Metadatensatzes|metadata_modified|extras:metadata_modified|1|Datum, an dem der Metadatensatz erzeugt bzw. aktualisiert wurde. Die Datumsangabe erfolgt gemäß ÖNORM ISO 8601 YYYY-MM-DD.|Datum, an dem der Metadatensatz erzeugt bzw. aktualisiert wurde. Dieses Metadatenelement sollte automatisch vom System (Software) befüllt werden. Wird für eine inkrementelle Aktualisierung (Harvesten) in einem Metadatenverbund benötigt.|2011-05-22|1.6|mdDateSt (9)|dcterms:issued|Metadata creation or update timestamp. Specification according to ÖNORM ISO 8601 as YYYY-MM-DD
8|Titel des Metadatensatzes|title|title|1|Titel des beschriebenen Metadatensatzes.|Titel des beschriebenen Metadatensatzes.|Schulstandorte, Pendlerstatistik Linz 2010|2.1.1|resTitle (360)|dcterms:title (mit language tag "de")|Resource title
9|Beschreibung|description|notes|1|Inhaltliche Beschreibung des Datensatzes bzw. Dienstes.|Kurze inhaltliche Beschreibung des Datensatzes bzw. Dienstes für BenutzerInnen.|Hauptwohnsitzbevölkerung der Stadt Linz für das Jahr 2010 gruppiert nach Geschlecht, Alter etc..|2.2|idAbs (25)|dcterms:abstract|Description of the resources content.
10|Kategorie|categorization|extras:categorization[“…“,“…“]|N|Kategorisierung des Datensatzes bzw. Dienstes. Vorgegebenes Kategorienschema für Österreich, siehe Anhang b).|Es muss die Zuordnung des Datensatzes bzw. Dienstes an das vorgegebene Kategorienschema durchgeführt und zur Anwendung gebracht werden. Mehrfachzuordnungen sind möglich.|Gesundheit|2.7.1 & 2.7.2|keyword (53) & thesaName (55)|dcat:theme|Categorisation of the resources content.
11|Schlagworte|keywords|tags|N|Beschlagwortung des Datensatzes bzw. Dienstes.|Beschlagwortung des Datensatzes bzw. Dienstes.|Habitatmodell, Braunbär, Ursus arctos|2.7.1|keyword (53)|dcat:keyword|Key words describing the resource
14|Datensatz oder Dienst Link|resource_url|resources:url|N|URL für den Zugriff auf den Datensatz oder Dienst|URL für den Zugriff auf den Datensatz oder Dienst. Die Angabe zielt auf unterschiedliche Daten- und Dienstformate ab. Es muss sichergestellt sein, dass ausschließlich vergleichbare Information in einer Datensatz/Dienstegruppe abgebildet werden. Im Zweifelsfall sollen eigenständige Metadatensätze angelegt werden.|http://www.wien.gv.at/statistik/ogd/vie-district-pop-foreignborn.csv|6.1.4.1.1|linkage (397)|dcat:accessURL|URL to the resource
15|Datensatz oder Dienst Format|resource_format|resources:format|N|Angabe zum Format des Datensatzes oder Dienstes. Diese ist als Dateiformat, Download- oder Service- Link anzugeben. Liste von OGD Formaten, siehe Anhang a).|OGD-Formate sollten grundsätzlich offene, maschinenlesbare Formate sein. Das bedeutet, dass publizierte Spezifikationen existieren und die Formate ohne rechtliche Einschränkungen genutzt werden können. Die Angabe soll ohne Punkt und in Kleinbuchstaben erfolgen.|csv|6.1.2.1|formatName (285)|dcterms:format|Specification of the resource. This may be a file type, download or service link. List of defined OGD formats in Appendix a).
19|Datenverantwortliche Stelle|maintainer|maintainer|1|Bezeichnung bzw. Name der für den Datensatzes oder Dienst zuständigen Organisation bzw. Person|Bezeichnung bzw. Name der für den Datensatzes oder Dienst zuständigen Organisation bzw. Person, kann in kleinen Organisationen gleichzeitig die veröffentlichende Stelle sein.|Magistrat Wien - Magistratsabteilung 33 - Wien Leuchtet|2.5.1 / 2.5.2|rpIndName (375) / rpOrgName (376)|dcelements:creator|Name of the person or entity responsible for the resource.
21|Lizenz|license|license|1|Rechtliche Nutzungsinformationen für die Verwendung des Datensatzes oder Dienstes.|Angabe der Lizenzform für den Datensatz oder den bereitgestellten Dienst. Bei OGD Daten bezieht sich dies auf Creative Commons "Namensnennung 3.0 Österreich (CC BY 3.0) ".|Namensnennung 3.0 Österreich (CC BY 3.0)|2.8.1.1|othConsts (72)|dcterms:license (sollte URI des Lizenzdokuments sein)|Legal information concerning the usage of the resource
24|Zeitliche Ausdehnung (Anfang)|begin_datetime|extras:begin_datetime|1|Definition Erläuterung Beispiel|Element zur Erfassung des Beginns der Gültigkeit eines Datensatzes oder Dienstes. Element zur zeitlichen Erfassung eines Datensatzes oder Dienstes. Die Angabe des Zeitpunktes erfolgt in folgender Form YYYY-MM-DDThh:mm:ss. TM_Primitive (nach ON EN 8601 bzw. ON EN ISO 19108). 2008-12-23T22:30:12|2.9.6.2.1|exTemp (351)|dcterms:temporal|Date specifying valid from of the resource according to ON EN 8601 or ON EN ISO 19108 respectively.|ID … laufende, eindeutige Nummerierung im OGD-Metadatenkatalog Österreich Anzahl… 1= Single-Value-Feld N=Multi-Value-Feld
16|Datensatz oder Dienst Bezeichner|resource_name|resources:name|N|Bezeichner für den einzelnen Datensatz bzw. Dienst. Das Attribut korrespondiert mit dem Metadaten – Datensatz oder Dienst Link (ID 14).|CKAN verwendet dieses optionale Element als Bezeichner für die URL, die auf den Datensatz oder Dienst zeigt.|Hauptwohnsitzbevölkerung|2.1.1 + 6.1.2.1|-|rdfs:literal|Specifier for the single resource link within a metadata sheet. Will be used as an end user friendly text instead of the resource link.
2|Bezeichnung der Metadatenstruktur|schema_name|extras:schema_name|1|Name der Metadatenstruktur|Die Angabe für OGD Metadaten ist optional, sollte aber wenn möglich erfolgen. Bei einer Adaptierung der OGD Metadatenstruktur wird eine konsistente Metadatenführung erleichtert. Dieses Metadatenelement sollte automatisch vom System (Software) befüllt werden|OGD Austria Metadata 2.0|1.4|mdStanName (10)|dcterms:alternative|OGD Austria Metadata 2.0.
3|Sprache des Metadatensatzes|schema_language|extras:schema_language|1|ISO 639-2 dreistelliger ISO Sprachcode für den Metadatensatz|Sprache in welcher der Metadatensatz erstellt wurde. Dieses Metadatenelement sollte automatisch vom System (Software) befüllt werden|ger|1.2|mdLang (3)|dcterms:language|Metadata language, always ger (German)
4|Character Set Code des Metadatensatzes|schema_characterset|extras:schema_characterset|1|Characterset Code zur Beschreibung des Metadatensatzes nach ISO\IEC 10646-1|Für eine europäische Integration wird dieses Metadatenelement zwingend gebraucht, da eine Zusammenführung sonst nicht möglich ist. Dieses Metadatenelement sollte automatisch vom System (Software) befüllt werden.|utf8|1.3|mdC (4)|cnt:characterEncoding|Metadata payload character encoding, always utf8
6|Weiterführende Metadaten|metadata_linkage|extras:metadata_linkage|N|URL zu erweiterten Metadaten des Datensatzes bzw. Dienstes|URL zur weiteren ausführlicheren Beschreibung der Metadaten. Optional. Der originäre Metadaten Link ist anzugeben. Links auf zusätzliche Informationen in anderen Metadatenkatalogen können angeführt werden.|http://data.wien.gv.at/katalog/bevoelkerung-geburtsbundesland-wien.html|1.7.11|linkage (397)|dcat:dataDictionary|URL providing further descriptive metadata
12|Attributbeschreibung|attribute_description|extras:attribute_description|1|Beschreibung der Attributinformation des Datensatzes bzw. Dienstes|Menschenlesbare Beschreibung der Bedeutung der Datenfelder in einem Datensatz bzw. Dienst|ADRESSE: Adresse (Straßenname, Orientierungsnummer); OEFFNUNGSZEITEN1-6: Öffnungszeiten; TELEFON: Telefonnummer, DISTRICT_CODE: Gemeindebezirkskennzahl, ACCOUNTS_TRANSFER: Laufende Transferzahlungen|2.11.3 & 2.11.4|ISO 19110:2005|memberName (4.1) & definition (4.2)|dcterms:description
13|Bezeichner Kontaktseite der datenverantwortlichen Stelle|maintainer_link|extras:maintainer_link|1|Kontaktseite der datenverantwortlichen Stelle|URL zur daten- bzw. dienstverantwortlichen Stelle|http://www.wien.gv.at/freizeit/bildungjugend/|6.1.1.1.6|Linkage (397)|dcterms:creator|URL to the dataset maintainig entity
17|Datensatz oder Dienst Veröffentlichungsdatum|resource_created|resources:created|1|Datum der Veröffentlichung des Datensatzes oder Dienstes.|Beschreibt den Zeitpunkt der Veröffentlichung der Daten (z.B. das Datum, an dem der Datensatz oder Dienst auf der Website der Behörde verfügbar gemacht wurde).|2011-03-21 ( YYYY-MM-DD)|2.1.3.1 & 2.1.3.2|refDate (394) & refDateType (395)|dcterms:issued|Resource publication timestamp
18|Datensatz oder Dienst Änderungsdatum|resource_lastmodified|resources: last_modified|1|Datum der letzten Aktualisierung des Datensatzes oder Dienstes.|Letztes Aktualisierungsdatum des Datensatzes oder Dienstes.|2012-01-15 ( YYYY-MM-DD )|2.1.3.1 & 2.1.3.2|refDate (394) & refDateType (395)|dcterms:modified|Resource last update timestamp
20|Veröffentlichende Stelle|publisher|extras:publisher|1|Bezeichnung bzw. Name der für den Metadatensatz zuständigen Organisation bzw. Person|Bezeichnung bzw. Name der für den Metadatensatz zuständigen Organisation bzw. Person|Magistrat Wien - Abteilung 53 - Presse- und Informationsdienst|2.5.1 / 2.5.2|rpIndName (375) / rpOrgName (376)|dcelements:publisher|Name of the publishing entity or person
22|Geographische Abdeckung/Lage|geographic_toponym|extras:geographic_toponym|1|Geographische Ortsidentifikation eines Datensatzes oder Dienstes|Menschenlesbare Beschreibung der räumlichen Lage eines Datensatzes oder Dienstes|Linz|2.9.6.1.3.1.1|identCode (207)|dcterms:description|Human-readable description of the resources spatial context
23|Geographische Ausdehnung|geographic_bbox|extras:geographic_bbox|1|Dokumentation der geographischen Ausdehnung eines Datensatzes mit der Definition eines umrahmenden Rechtecks.|Beschreibung der räumlichen Ausdehnung eines Datensatzes mit einem umschreibenden Rechteck. Die Angabe erfolgt im Koordinatensystem EPSG:4326 (WGS84) mit einer Mindestgenauigkeit von zwei Dezimalstellen in einer "Well Known Text String" Repräsentation. POLYGON (Rechtswert_min Hochwert_min, Rechtswert_max Hochwert_max)|POLYGON (-180.00 -90.00, 180.00 90.00)|2.9.6.1.1.1 & 2.9.6.1.1.2 & 2.9.6.1.1.3 & 2.9.6.1.1.4|westBL (344) & eastBL (345) & southBL (346) & northBL (347)|dcterms:spatial|Bounding box specifying the resources spatial coverage
25|Zeitliche Ausdehnung (Ende)|end_datetime|extras:end_datetime|1|Ende der Gültigkeit eines Datensatzes oder Dienstes.|Element zur zeitlichen Erfassung eines Datensatzes oder Dienstes. Die Angabe des Zeitpunktes erfolgt in folgender Form YYYY-MM-DDThh:mm:ss. TM_Primitive (nach ON EN 8601 bzw. ON EN ISO 19108)|2009-11-23T20:36:00|2.9.6.2.1|exTemp (351)|dcterms:temporal|Date specifying valid to of the resource according to ON EN 8601 or ON EN ISO 19108 respectively.
26|Aktualisierungszyklus|update_frequency|extras:update_frequency|1|Menschenlesbare Frequenz der Aktualisierung des Datensatzes bzw. Dienstes. Codeliste im Anhang c)|Zeitliche Nachführungssequenz für einen Datensatz oder Dienst|monatlich, jährlich|2.9.7.1|maintFreq (143)|dcterms:accrualPeriodicity|Human readable resource update frequency
27|Datenqualität/Herkunft|lineage_quality|extras:lineage_quality|1|Menschenlesbare Beschreibung der Qualitäts- und /oder Entstehungsgenese des Datensatzes oder Dienstes z.B. die Methode der Erhebung.|Allgemeine Angaben zur Qualität und/oder Entstehungsgenese des Datensatzes oder Dienstes|Der Datensatz wurde basierend auf der ÖK50, Stand 2011 digitalisiert. Es wurden alle Waldbestände für die Gemeinde Kopfing erfasst.|3.2.1|statement (83)|dcat:dataQuality|Human readable indication of resource quality and / or data origin, possibly the methodology describing the data collection or acquisition.
28|Titel und Beschreibung Englisch|en_title_and_desc|extras:en_title_and_desc|1|Englische Angabe von Titel und Beschreibung des Datensatzes oder Dienstes.|Titel des Datensatzes oder Dienstes und kurze inhaltliche Beschreibung des Datensatzes bzw. Dienstes für BenutzerInnen in Englisch.|Population of Vienna 2010. Contains the population of permanent residents of Vienna and it’s districts as a moving average in the census period 1st January 2010 to 31st December 2012|2.1.1 & 7.1|resTitle (360) & language|dcterms:abstract (mit language tag "en")|Resource title and description in English
29|Größe des Datensatzes oder Dienstes|resource_size|resources:size|1|Dateigröße.|Die Größe des Datensatzes in Bytes. Die Angabe der Größe ist für Services / Dienste nicht sinnvoll.|899652|-|-|dcat:bytes|Resource size
30|Lizenz Zitat|license_citation|extras:license_citation|1|Die richtige Namensnennung (CC-BY) der Datenquelle laut den Nutzungsbedingungen des jeweiligen Datenportals. Entspricht dem Feld „Datenquelle“ von OGD-Metadaten – 1.1.|Dient dazu, um bei der automatisierten Wiederverwendung von Daten aus einer oder mehreren Datenquellen die richtige Zitierung zu erleichtern.|Datenquelle: CC-BY-3.0: Stadt Linz - data.linz.gv.at|2.8.1.2|accessConsts (70)|cc:attributionName|Attribution as required by CC-BY license
31|Sprache des Datensatzes oder Dienstes|resource_language|resources:language|1|ISO 639-2 dreistelliger ISO Sprachcode für den Datensatz oder Dienst|Sprache, welche der Datensatz oder Dienst verwendet|ger|2.9.3|dataLang (39)|dcterms:language|Resource language
ERROR: BAD RECORD

ステップ4、不良レコードを評価します。

ご覧のとおり、最後のレコードを渡すことができませんでした。したがって、問題のあるテキストを手動で調べて修正する必要があります。幸運を。

于 2012-12-18T04:15:30.733 に答える