官术网_书友最值得收藏!

2.1 數據描述方法

良好的數據模型與數據標準是實現信息共享,保證信息一致性、完整性與準確性的基礎。跨領域數據來源于各個業務領域,只有將這些信息按照統一的標準進行描述,才能實現信息交換雙方對信息的一致理解,更好地發現和明確信息交換的需求。數據模型必須具有機器可讀性、平臺無關性和靈活性。

機器可讀性是指在信息交換過程中,通過數據模型對交換數據進行解析時,不需要對信息交換模型進行翻譯或者轉換,而能夠直接使用,能夠保證機器的理解,實現機器對機器的交換。

平臺無關性是指數據模型的描述不應該依賴具體的系統平臺、設計語言與技術,而要采用獨立于平臺、語言與技術的描述方式。

靈活性是指數據模型必須具有可擴展、可屏蔽和可重用等特性。可擴展是指當某個數據模式與交換數據相比,不足以表達交換數據的全貌時,能夠適當增加模式屬性,形成完整的信息交換模式。可屏蔽是指當數據模式與信息交換需求相比,有部分冗余時,可以將不需要的部分屬性進行隱藏,形成滿足需求的信息交換模式。可重用是指可以將兩個或者更多個數據模式組合在一起,形成新的數據模式,達到數據模式重用的目的。

數據參考模型為信息交換雙方不一致的信息資源提供了統一的建模方法和技術路線,確保為業務需求提供全面、一致、完整的高質量共享數據,并且為明確數據引用關系、定義交換需求提供依據。XML Schema、JSON具有很強的信息描述和表達能力,為數據模型的表示提供了有效的手段。

2.1.1 數據參考模型

美國政府聯邦企業架構(Federal Enterprise Architecture,FEA)中的數據參考模型(Data Reference Model,DRM)提供了有效的數據描述方法。美國預算管理辦公室(Office of Management and Budget,OMB)提出的數據參考模型是美國政府聯邦企業架構中5個參考模型之一,旨在促進橫向(美國聯邦政府業務領域之間)和縱向(美國聯邦政府與州政府和地方政府之間)的信息交換與共享。

數據參考模型提供了描述各業務領域數據,以及信息共享方法的標準化模型,包括數據模式描述模型、數據環境描述模型和數據共享描述模型3個部分,其關系及作用如圖2-1所示。

img

圖2-1 數據參考模型3個組成部分的關系及作用

數據模式描述模型主要描述各個業務領域數據的語義和語法,解決數據使用者如何理解數據的問題,描述的主要概念包括實體、數據類型、屬性、關系等。

數據環境描述模型主要解決對數據集的查詢定位問題,描述概念包括分類方法、數據集、數據管理者等。數據集是一個容器,包含數據、文件知識庫、相關數據庫或網絡資源等。數據管理者指的是負責管理數據集的人或者組織。

數據共享描述模型主要描述實現數據共享的方法,包括查詢點和信息交換包。查詢點指的是訪問或者查詢數據集的工具或手段,信息交換包是按照交換雙方協商的格式封裝的交換數據。

數據參考模型為各領域進行信息集成、互操作、發現和共享數據提供了一套描述方法。為了達到這個目標,數據參考模型對數據架構概念元素及它們之間的關系進行了明確定義,并且針對每個概念元素分別定義了一系列通用屬性。數據參考模型按照數據模式描述、數據環境描述、數據共享描述3個部分,描述了各個部分相關的概念元素及其關系。需要注意的是,為了表述清晰,圖2-2所示的一些概念元素會出現多次,實線邊框中的概念元素才是真正的定義,虛線邊框中的概念元素只是從其他部分“借用”來的。

img

圖2-2 數據參考模型

1.數據模式描述模型

數據模式描述的目標是提供關于信息資源數據結構(語法)和意義(語義)的描述。存儲在計算機中的數據資源,可分為結構化數據、半結構化數據和非結構化數據,如圖2-3所示。結構化數據通過數據模式(Data Schema)來描述。數據模式定義了結構化數據資源的語法和語義,可以說是結構化數據的元數據(Meta Data)。數據模式通過實體(Entity)、屬性(Attribute)、關系(Relationship)和數據類型(Data Type)這4個概念及它們之間的關系來定義。

● 實體(Entity):現實世界中客觀事物的抽象。實體包含若干屬性,實體通過“關系”與其他實體建立關聯。

● 屬性(Attribute):實體某一特性的抽象。一個屬性的取值被約束于一個數據類型。

● 數據類型(Data Type):對于一個屬性的物理表述的類型約束。

● 關系(Relationship):用于描述實體間的關系。

img

圖2-3 數據模式描述模型

除結構化數據之外,其他如視頻數據、音頻數據等非結構化數據,與結構化數據的最大區別在于,非結構化數據的語義和語法與實例數據本身緊密結合在一起,因此,其組織結構和意義對外界并不具備很強的公開性和交互性;而結構化數據與之相反,定義其數據結構和意義的數據模式信息可以獨立于實例數據之外,用于不同系統之間進行針對語義和語法的交流。數據模式描述的內容如表2-1所示。

表2-1 數據模式描述的內容

img

(續表)

img

2.數據環境描述模型

數據環境描述用于為數據添加與其使用和創建的目標相關的信息,從而便于不同視角的數據使用者發現和使用數據。經過數據模式描述模型的定義,利益共同體內成員對于數據的描述將會產生共識,但是這并不意味著具有不同視角的數據使用者就關心所有的數據實體或數據實體的所有屬性,甚至即便是針對某個數據實體的實例數據,不同的數據使用者由于視角不同也可能只對其中部分實例數據感興趣。舉例來說,假設一個“人”的實體,它對人進行了抽象,并在利益共同體內根據所有參與者的共識,定義了符合所有數據使用者要求的屬性,但是在使用過程中,從商業的角度來看待人,可能更關注商業行為方面的數據,因而對他來說并不一定關注如頭發顏色之類的信息,而對于執法機構的信息使用者卻不然。由此可以看出,數據可以根據不同的方式進行分類,而針對分類方式的描述和定義就構成了“數據環境”。除了關于數據的分類劃分這個核心概念,數據環境還描述數據集的主題、數據集維護管理機構及訪問數據集的服務方式,如圖2-4所示。

數據環境的定義實際上就是針對數據使用背景的分類法的定義。雖然用來分類的角度紛繁復雜,但本質上來講不論何種分類法都可以通過結構化方式進行表述,這也為不同業務領域之間對于分類法的語義和語法達成共識提供了基礎。經過結構化表述的分類法定義,數據使用者可以識別符合自己要求的數據集是否存在,并檢測其包含的數據是否符合他對信息的要求。數據環境的主要概念之間的關系如下。

img

圖2-4 數據環境描述模型

● 數據環境的分類法(Taxonomy)包含若干主題(Topic),而且主題之間是相互聯系的。分類法被描述為結構化數據,并存放于結構化數據資源中。

● 每個分類法的主題用于對數據集進行分類,同時也可以對各種數據集、查詢點和信息交換包進行分類。

● 可以為數據集指定一個管理數據的負責人或機構。

數據環境描述內容如表2-2所示。

表2-2 數據環境描述內容

img

(續表)

img

3.數據共享描述模型

數據模式描述模型和數據環境描述模型為規劃和實現信息訪問、交換提供了基礎,數據共享描述模型用來描述信息訪問和交換的方法,如圖2-5所示。信息交換通常是指在信息生產者和信息使用者之間所存在的相對固定且時常發生的信息交互過程。針對信息的使用除這種交換的方式外,作為信息源的信息提供者往往還需要對外提供各種信息訪問接口,從而為各種不確定的外界信息使用者提供信息訪問的能力。

img

圖2-5 數據共享描述模型

信息交換包(Exchange Package)用于表述產生于信息提供者和信息使用者之間的經常性的信息交換。信息交換包中包含了與交換過程相關的各種信息(如信息提供者ID、信息使用者ID、信息有效期等),以及數據載荷的引用。信息交換包還可以用來定義在一次信息交換中某個查詢點(Query Point)接收與處理的查詢結果的格式。信息交換包與其他概念元素之間有如下關系:

● 信息交換包引用了業務領域的實體;

● 信息交換包被傳播給信息使用者;

● 信息交換包通過查詢點查詢獲取數據;

● 信息交換包引用了針對交換數據載荷的定義。

信息提供者與其他概念元素之間具有如下關系:信息提供者生成信息交換包;信息使用者(Consumer)是使用數據的實體;數據載荷定義(Payload Definition)表示針對數據交換需求而制定的格式化定義;查詢點(Query Point)是為了訪問和查詢數據集而提供接口的端點,一個查詢點的具體表達可以是Web服務的URL。

數據共享描述內容如表2-3所示。

表2-3 數據共享描述內容

img

2.1.2 基于XML Schema的數據描述方法

XML Schema作為一種具有數據描述功能、高度結構性、可驗證的標記語言,其易于擴展、結構性強、語義性強、可格式化、易于處理、與平臺無關等特性使之成為信息交換數據模型表示的常用語言。在對客觀世界的分析、歸納和抽象的基礎上,運用XML Schema,用類與類之間的關系及類的屬性等對數據模型進行描述。

1.XML Schema

XML Schema是萬維網聯盟(World Wide Web Consortium,W3C)制定的XML文檔結構描述標準,它可以定義出現在文檔中的元素、屬性、子元素的次序、數目、默認值(固定值或值范圍)、值列表,以及元素和屬性的數據類型。作為一種文檔描述語言,通常將其簡寫為XSD(XML Schema Define)。

XML Schema本身就是一個結構良好的XML文檔,它的基本結構是樹形的。樹的根節點是Schema元素,用于表示該XML文檔是一個XML Schema文檔,下面的子節點就是需要聲明的元素、屬性、簡單數據類型和復雜數據類型等。XML Schema文檔的基本結構如圖2-6所示:

img

圖2-6 XML Schema文檔的基本結構

常用的XML Schema元素如表2-4所示。

表2-4 常用的XML Schema元素

img

(1)attribute。

attribute 定義一個屬性,只能用于表示簡單的內容,如表示一個值。attribute在XML中不能獨立存在,必須由元素攜帶;其屬性不能擴展、替換、擴充或多次出現。attribute的基本語法如圖2-7所示。

img

圖2-7 attribute基本語法

attribute的屬性說明如下。

① default:可選,規定屬性的默認值。default和fixed屬性不能同時出現。

② fixed:可選,規定屬性的固定值。default和fixed屬性不能同時出現。

③ form:可選,規定屬性的格式。默認值是包含該屬性的schema元素的attributeFormDefault屬性的值,可以設置為下列值。

● "qualified":指示必須通過命名空間前綴和該屬性的無冒號名稱 (NCName)來限定此屬性。

● "unqualified":指示此屬性無須由命名空間前綴限定,且無須匹配此屬性的無冒號名稱(NCName),即本地名稱。

④ id:可選,規定該元素唯一的ID。

⑤ name:可選,規定屬性的名稱。name和ref屬性不能同時出現。

⑥ ref:可選,規定對指定的屬性的引用,若需要使用在復雜類型中一個已有的屬性定義來聲明一個屬性,使用ref屬性。name和ref屬性不能同時出現。如果ref出現,則simpleType元素、form和type不能出現。

⑦ type:可選,規定內建的數據類型或簡單類型。type屬性只能在內容不包含simpleType元素時出現。

⑧ use:可選,規定如何使用該屬性。在默認情況下,屬性是可選的。若需要規定屬性為必選,使用 "use" 屬性,可設置為下面的值。

● optional:屬性是可選的,并且可以具有任何值(默認)。

● prohibited:不能使用屬性。

● required:屬性是必需的。

⑨ any attributes:可選,規定帶有non-schema命名空間的任何其他屬性。

若一個屬性名稱為“lang”的定義如下。

img

帶有“lang”屬性的“lastname”元素XML元素如下:

img

(2)element。

element定義一個元素,用于表示簡單內容(值)或復雜內容(對象),元素都可以帶有屬性。element的基本語法如圖2-8所示。

屬性說明如下。

① id:可選,規定該元素唯一的ID。

② name:可選,規定元素的名稱。如果父元素是 schema 元素,則此屬性是必需的。

③ ref:可選,對另一個元素的引用。ref屬性可包含一個命名空間前綴。如果父元素是schema元素,則不使用該屬性。

img

圖2-8 element的基本語法

④ type:可選,規定數據類型的名稱,或者規定simpleType元素或complexType元素的名稱。

⑤ substitutionGroup:可選,規定可用來替代該元素的元素名稱。該元素必須具有相同的類型或從指定元素類型派生的類型。如果父元素不是 schema 元素,則不可以使用該屬性。

⑥ default:可選,為元素規定默認值(僅當元素內容是簡單類型或 textOnly 時使用)。

⑦ fixed:可選,為元素規定固定值(僅當元素內容是簡單類型或 textOnly 時使用)。

⑧ form:可選,該元素的形式。默認值是包含該屬性的 schema 元素的 elementFormDefault 屬性的值。該值必須是下列字符串之一:"qualified" 或 "unqualified"。如果父元素是 schema 元素,則不能使用該屬性。

● 如果該值是 "unqualified",則無須通過命名空間前綴限定該元素。

● 如果該值是 "qualified",則必須通過命名空間前綴限定該元素。

⑨ maxOccurs:可選,規定 element 元素在父元素中可以出現的最大次數。該值可以是大于或等于零的整數。若不想對最大次數設置任何限制,請使用字符串 "unbounded",默認值為 1。如果父元素是 schema 元素,則不能使用該屬性。

⑩ minOccurs:可選,規定 element 元素在父元素中可以出現的最小次數。該值可以是大于或等于零的整數,默認值為 1。如果父元素是 schema 元素,則不能使用該屬性。

imgnillable:可選,標識是否可以將顯式的零值分配給該元素,此項應用于元素內容且不是該元素的屬性,默認值為 false。

imgabstract:可選,指示元素是否可以在實例文檔中使用。如果該值為 true,則元素不能出現在實例文檔中;相反,substitutionGroup 屬性包含該元素的限定名(QName)的其他元素必須出現在該元素的位置。多個元素可以在其substitutionGroup屬性中引用該元素,默認值為false。

imgblock:可選,派生的類型。block 屬性防止具有指定派生類型的元素被用于替代該元素。該值可以包含 #all 或者一個列表,該列表是 extension、restriction 或 substitution 的子集。

● extension:防止通過擴展派生的元素被用來替代該元素。

● restriction:防止通過限制派生的元素被用來替代該元素。

● substitution:防止通過替換派生的元素被用來替代該元素。

● #all:防止所有派生的元素被用來替代該元素。

imgfinal:可選,設置 element 元素上 final 屬性的默認值。如果父元素不是 schema 元素,則不能使用該屬性。該值可以包含 #all 或者一個列表,該列表是 extension 或 restriction 的子集。

● extension:防止通過擴展派生的元素被用來替代該元素。

● restriction:防止通過限制派生的元素被用來替代該元素。

● #all:防止所有派生的元素被用來替代該元素。

imgany attributes:可選,規定帶有non-schema命名空間的任何其他屬性。

如圖2-9所示的XML中,包含了5個元素和2個屬性(structures:id 和 nc:personNameInitialIndicator)。

img

圖2-9 元素和屬性用法舉例

(3)簡單類型元素。

簡單類型元素是指其使用的只有基本數據類型,不會包括任何子元素和屬性。圖2-10是一個schema,其中帶有4個簡單元素:"fname","lname","age","dateborn",類型是string、string、nonNegativeInteger、date。

(4)復合類型元素。

復合類型元素是指包含子元素的元素,它包括4種類型,分別是空元素、只包含子元素的元素、只包含文本的元素、同時包含子元素和文本的元素。復合類型元素聲明的表示方法有兩種。一種是對此元素直接進行聲明,具體表示方法如圖2-11所示。

img

圖2-10 簡單類型元素舉例

img

圖2-11 復合類型元素的一種表示方法

另一種是使用type屬性,這個屬性的作用是引用要使用的復合類型的名稱,具體表示方法如圖2-12所示。

img

圖2-12 復合類型元素的另一種表示方法

圖2-13分別是以兩種方式定義復合類型的例子。

(5)指示器。

在復合類型中,通過指示器可以控制在文檔中使用元素的方式。復合類型中有3類、7種指示器:Order指示器(〈all〉、〈choice〉和〈sequence〉),Occurrence指示器(〈maxOccurs〉和〈minOccurs〉),Group指示器(〈Group〉、〈attributeGroup〉)。

① Order指示器。

〈all〉指示器規定子元素可以按照任意順序出現,并且每個子元素必須出現一次,如圖2-14所示。

img

圖2-13 復合類型元素表示方法舉例

img

圖2-14 〈all〉指示器用法舉例

<choice>指示器規定可出現某個子元素,或者可出現另一個子元素(非此即彼)。

<sequence>指示器規定子元素必須按照特定的順序出現。

② Occurrence指示器。

<maxOccurs>指示器規定某個元素可出現的最大次數。

<minOccurs>指示器規定某個元素可出現的最小次數。

③ Group指示器。

元素組通過<group>指示器聲明進行定義,屬性組通過<attributeGroup>指示器聲明進行定義。

(6)類型擴展。

XSD使用<xs:extension>擴展一個基本類型、簡單類型或復合類型。基本類型擴展可以增加屬性,簡單類型擴展主要增加附加的一些約束,復合類型擴展則可以增加新的組成元素或屬性。對基本類型進行擴展可使用<xs:simpleContent>,對復合類型進行擴展可使用<xs:complexContent>。

① 基本類型擴展,如圖2-15所示,在基本類型的基礎上增加了屬性。

img

圖2-15 基本類型擴展舉例

② 簡單類型擴展,如圖2-16所示。

img

圖2-16 簡單類型擴展舉例

③ 復合類型擴展,如圖2-17所示。

img

圖2-17 復合類型擴展舉例

2.實體描述

一個實體代表一組擁有共同特征的事物。一個實體對應于客觀世界中的一個物體,或者一個抽象的概念。一個實體可以是獨立的,也可以存在依賴關系。獨立的實體可以獨立確定,而不需要決定與其他實體的關系;具有依賴性的實體需要確定與其他實體的關系。

特征代表實體的一個特性。通常一個實體包含多個特征,一個特征實例包括特征類型和特征值。例如,“機動車(Vehicle)”這個實體包含了“生產時間(VehicleMake)”“內部顏色(VehicleColorInteriorText)”“門的數量(VehicleDoorQuantity)”等多個特征。在一個實體中,特征必須有唯一的名稱,同樣的特征名稱代表同樣的特征;反過來,同樣的特征就需要相同的特征名稱。

實體通常表示為類,在XML中通常用simpleType、complexType數據類型和element數據元素來定義。特征通常表現為類成員,在XML中用數據元素element來定義。如圖2-18所示的代碼,定義了實體“機動車”和它的3個特征——“生產時間”“內部顏色”“門的數量”。

img

圖2-18 實體描述舉例

img

圖2-18 實體描述舉例(續)

3.實體間關系描述

實體間的關系在XML中可以通過“is-a”和“has-a”來描述。“is-a”代表實體之間的繼承關系,“has-a”代表實體之間的包含關系。

“is-a”表示若干數據實體繼承自某個數據實體,并因此具有該實體的部分屬性,“is-a”關系在XML中可以通過使用extension元素,并指定其屬性base=" 被繼承實體"來描述。“has-a”代表包含關系,表示實體包含其他的實體,被包含的實體是前者的組成部分,通過在<xs:sequence> </xs:sequence>中增加被包含的元素。

如圖2-19的代碼所示,節點<xs:extension base="mda:DocumentType">表示LOAReportType實體繼承了實體DocumentType的屬性,或者說,LOAReportType is-a DocumentType;而節點<xs:sequence>下的內容則表示了包含關系,LOAReportType包含船舶(Vessel)、位置(Position)和船員列表(CrewNationalityList)等信息。

img

圖2-19 實體間關系描述舉例

img

圖2-19 實體間關系描述舉例(續)

包含關系及其子實體的數量表示方法如表2-5所示。

表2-5 包含關系及其子實體的數量表示方法

img

2.1.3 基于JSON Schema的數據描述方法

1.JSON基本語法

JSON(JavaScript Object Notation)是基于JavaScript編程語言ECMA-262 3rd Edition-December 1999標準的一種輕量級的數據交換格式。JSON獨立于編程語言,能夠把針對編程語言的數據結構(如數字、數組等)格式化為字符串的文檔,便于機器解析和生成。與XML相比,JSON結構簡單、標記少、解析方便。JSON數據描述方法主要如下。

(1)對象(object):一個對象以“{”開始,以“}”結束。一個對象包含一系列非排序的名稱/值對,每個名稱/值對之間使用“,”分隔。

(2)鍵—值對(collection):鍵名稱和值之間使用“:”隔開,一般的形式是{name:value}。一個鍵名稱是一個字符串;一個值可以是一個字符串、數值、對象、布爾值、串行表或null值。

(3)數組(array):一個或多個值用“,”分隔后,使用“[”“]”括起來就形成列表[collection, collection],這種列表即數組。

(4)字符串:以" "括起來的一串字符。

(5)數值:一系列0~9的數字組合,可以為負數或小數,還可以用“e”或者“E”表示為指數形式。

(6)布爾值:表示為 true 或 false。

如圖2-20所示為JSON的一個例子,包含3個程序員、3個作者和2個音樂家,每個類別又分別放在一個數組中。

img

圖2-20 JSON描述舉例

2.JSON Schema基本語法

JSON Schema是用來定義JSON數據約束的模式文件,其作用類似于XML Schema的作用。根據這個約定模式,交換數據的雙方可以理解JSON數據的要求和約束,也可以據此對JSON實例數據進行驗證,保證交換數據的正確性。

JSON Schema文件中包括一個或多個鍵—值對,如圖2-21所示為JSON Schema描述模板。其中,“$schema”的屬性指定該JSON應遵循的JSON Schema規范;“additionalProperties”指定在實例中是否允許使用除此模式中定義的屬性以外的其他屬性;“properties”定義元素;“definitions”定義數據類型。

其中,“definitions”中的“type”鍵的值包括“string”“number”“integer”“boolean”“object”“array”“array(屬性“uniqueitems”:true)”“null”“any” 等,相關的語法如下。

img

圖2-21 JSON Schema描述通用模板

① 當“type”的值為數值或整數時,包括的鍵:multipleOf將值設置為給定數字的倍數,minimum、exclusiveMinimum、maximum、exclusiveMaximum設定鍵值的范圍。

② 當“type”的值為字符串時,包括的鍵:minLength和maxLength設置字符串的長度;Pattern設置該值需要滿足的正則表達式;format設置該值的格式(如date-time、email、ipv4、uri等類型的格式)。

③ 當“type”的值為數組時,相關的鍵包括:type設置每個項的數據類型;enum設置數組中項的允許值;minItems和maxItems設置數組中項的數量;uniqueItems指定數組中每個項都是唯一的。

④ 當“type”的值為對象時,相關的鍵包括:properties列出可能包含在對象中的屬性;required列出必須包含在對象中的屬性;additionalProperties表示該模式文件是否允許properties和patternProperties下未列出的其他屬性存在;minProperties和maxProperties設置對象出現的最小數量和最大數量;patternProperties定義具有正則表達式的屬性;Dependencies表示該對象依賴的其他對象。

此外,模式可以與以下鍵結合使用:allOf表示如果實例針對此鍵值定義的所有模式成功驗證,則實例將針對此鍵成功驗證;anyOf表示如果實例針對此鍵值定義的至少一個成功驗證,則實例將針對此鍵成功驗證;one of表示如果實例針對此鍵值定義的一個成功驗證,則實例將針對此鍵成功驗證。在如圖2-22所示模式文件中,anyOf關鍵字表示給定值可能對任何給定子模式均有效。第一個子模式需要一個最大長度為5的字符串;第二個子模式需要一個最小值為0的數字。只要某個值針對任何一個子模式驗證通過,就被視為對整個模式都有效。若鍵值為“short”或“12”,則驗證可通過;若鍵值為“too long”或“-5”則驗證不通過。

img

圖2-22 anyOf關鍵字舉例

如圖2-23所示為一個請求法庭聽證的JSON Schema示例。

img

圖2-23 一個請求法庭聽證的JSON Schema舉例

img

圖2-23 一個請求法庭聽證的JSON Schema舉例(續)

圖2-24為如圖2-23所示XML Schema對應的JSON實例數據。

img

圖2-24 JSON實例數據

3.JSON-LD

JSON是一種輕量級的、與語言無關的數據交換格式,易于解析且易于生成。但是,很難集成不同來源的JSON文件,因為一個JSON文件中可能包含其他數據來源的鍵。此外,JSON沒有對超鏈接的內置支持,而超鏈接是Web的基本組成。JSON-LD是JavaScript Object Notation for Linked Data的首字母縮寫,是一種基于JSON表示和傳輸關聯數據(Linked Data)的方法,允許跨網站鏈接數據,易于人類閱讀,也易于機器解析和生成。

如圖2-25所示的數據,人類可以理解,它是一個包含名稱“Manu Sporny”、主頁地址“http://manu.sporny.org/”、圖片地址“http://manu.sporny.org/images/ manu.png” 相關的數據,但是機器不能如此直觀理解。有時,對于復雜的數據,即使人類,也很難解決此類表示形式的含義。因此,通過使用明確的標識符表示不同的概念,而不是如“name”“homepage”之類的標記,可以解決此問題。

img

圖2-25 JSON舉例

對于鏈接數據,通常使用國際資源標識符(Internationalized Resource Identifier,IRI)進行明確標識。為數據指定一個明確的IRI,彼此之間就不會產生沖突,開發人員和機器也能夠使用此IRI(例如,通過使用Web瀏覽器訪問某個地址)來查找類似“name”“homepage”這樣的術語,并獲得對該術語含義的定義,如圖2-26所示。

img

圖2-26 使用IRI代替術語

圖2-27中每個屬性均由IRI明確標識,所有表示IRI的值均由@id關鍵字明確標記。盡管這是一個有效的JSON-LD文檔,但該文檔過于冗長,不便于使用。為了解決此問題,JSON-LD引入了上下文“context”的概念。

img

圖2-27 使用上下文描述方法

圖2-28中定義了一個對象模型,對應的JSON-LD數據文件如圖2-29所示。

img

圖2-28 對象模型舉例

img

圖2-29 JSON-LD數據文件舉例

主站蜘蛛池模板: 江华| 四平市| 广饶县| 益阳市| 龙海市| 曲水县| 锡林郭勒盟| 尖扎县| 铁岭市| 长岛县| 邵阳市| 张家界市| 隆林| 翁源县| 陆良县| 谢通门县| 静海县| 九龙城区| 白城市| 乌兰浩特市| 宁安市| 亳州市| 岱山县| 阿拉善盟| 闻喜县| 台前县| 临沂市| 德清县| 行唐县| 绵竹市| 芦溪县| 阳曲县| 商洛市| 阳新县| 克什克腾旗| 同仁县| 乌兰浩特市| 银川市| 辰溪县| 武清区| 丰原市|