成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

模式設(shè)計(jì)和原則在知識(shí)圖譜中的應(yīng)用

開發(fā) 前端
通過使用知識(shí)圖譜,可以實(shí)現(xiàn)更加輕松地操作和發(fā)現(xiàn)數(shù)據(jù)。知識(shí)圖譜是一個(gè)基于圖形結(jié)構(gòu)的數(shù)據(jù)模型,可以將各種實(shí)體和概念以及它們之間的關(guān)系表示為節(jié)點(diǎn)和邊,使得數(shù)據(jù)之間的關(guān)系和結(jié)構(gòu)更加清晰和易于理解。

知識(shí)圖譜是一種非常強(qiáng)大的表示工具,它可以通過一張圖表達(dá)復(fù)雜的概念,這就是為什么常說“一圖勝千言”。但是,如果我們?cè)跊]有明確定義的模式下創(chuàng)建知識(shí)圖譜,就會(huì)存在一些問題。這就是為什么需要一種模式來限制鏈接的類型,充當(dāng)文檔,提供和機(jī)器可讀的語義,并確保軟件按照預(yù)期的方式來組織信息。

對(duì)于知識(shí)圖譜而言,良好的模式設(shè)計(jì)比關(guān)系數(shù)據(jù)庫(kù)更為重要和核心。不幸的是,對(duì)于如何完成相對(duì)簡(jiǎn)單的任務(wù)而言,目前缺乏詳細(xì)的指導(dǎo)。根據(jù)我的經(jīng)驗(yàn),我想至少提供一些幫助。

為了更好地了解模式設(shè)計(jì)的模式和原則,我們可以使用TerminusCMS。雖然其中許多想法也適用于其他領(lǐng)域。

文檔(Documents)

在知識(shí)圖譜TerminusDB中,數(shù)據(jù)被視為由具有特定數(shù)據(jù)類型的字段組成的基本單元,這些字段可以是字符串、整數(shù)或日期等類型。這些基本單元會(huì)被組織成一個(gè)數(shù)據(jù)集合,稱為“文檔”。

舉個(gè)例子,我們可以看看“Person”文檔,以更好地理解這個(gè)概念。

{ "@type" : "Class",
"@id" : "Person",
"first_name" : "xsd:string",
"family_name" : "xsd:string",
"date_of_birth" : "xsd:dateTime"
}

這個(gè)人的信息包括姓名和出生日期,類似于關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)或逗號(hào)分隔值(CSV)文件中的行記錄。為了讓數(shù)據(jù)更加豐富,可以添加一些額外的鏈接。

{ "@type" : "Class",
"@id" : "Person",
"first_name" : "xsd:string",
"family_name" : "xsd:string",
"date_of_birth" : "xsd:dateTime",
"friends" : { "@type" : "Set", "@class" : "Person" }
}

在知識(shí)圖譜中,我們可以將人與他們的朋友之間建立鏈接。這種數(shù)據(jù)結(jié)構(gòu)非常適合用于社交網(wǎng)絡(luò)或聯(lián)系人管理應(yīng)用程序。我們可以將每個(gè)人視為一個(gè)文檔,其中包含許多數(shù)據(jù)屬性,例如姓名和出生日期。此外,我們可以在文檔中添加指向其他文檔的鏈接,以建立人與他們的朋友之間的聯(lián)系。這種建模方式非常簡(jiǎn)單和靈活,讓我們能夠方便地捆綁所有的數(shù)據(jù)屬性和鏈接在一起。

子文檔(Subdocuments)

有時(shí),您需要在文檔中包含一個(gè)內(nèi)部結(jié)構(gòu),這個(gè)結(jié)構(gòu)不僅僅是一個(gè)數(shù)據(jù)原子,而是與該對(duì)象有緊密聯(lián)系,而不只是指向另一個(gè)對(duì)象的鏈接。這種類型的對(duì)象最常見的變體是注釋了一些附加結(jié)構(gòu)的數(shù)據(jù)。例如,我們可能希望在某個(gè)時(shí)間范圍內(nèi)得到數(shù)據(jù)點(diǎn),該數(shù)據(jù)點(diǎn)具有特定的來源或可能有一個(gè)單位。

{ "@type" : "Enum",
"@id" : "Unit",
"@value" : [ "meters", "kilograms" ] }

{ "@type" : "Class",
"@id" : "UnitValue",
"@subdocument" : [],
"value" : "xsd:decimal",
"unit" : "Unit" }

有時(shí)候一個(gè)數(shù)據(jù)原子的值本身并沒有意義,但是在特定對(duì)象的上下文中卻很有用,例如人的身高。為了表達(dá)這種內(nèi)在聯(lián)系,我們可以使用子文檔,它可以將數(shù)據(jù)與額外的結(jié)構(gòu)注釋關(guān)聯(lián)起來。使用"@subdocument" : []指定一個(gè)子文檔類,這個(gè)子文檔將完全屬于包含類,不允許其他人對(duì)其進(jìn)行引用,并且當(dāng)我們搜索包含文檔時(shí),它將始終以完全擴(kuò)展的 JSON 文檔返回。

{ "@type" : "Class",
"@id" : "Person",
"first_name" : "xsd:string",
"family_name" : "xsd:string",
"date_of_birth" : "xsd:dateTime",
"friends" : { "@type" : "Set", "@class" : "Person" }
"height" : "UnitValue",
"weight" : "UnitValue",
}

您可能已經(jīng)發(fā)現(xiàn),“height”和“weight”都被表示為“UnitValue”,但是可能沒有使用正確的單位。為了確保單位的正確性,我們正在加入一些限制。

關(guān)系(Relationships)

并非所有關(guān)系都可以簡(jiǎn)化為一個(gè)簡(jiǎn)單的鏈接。xsd:decimal是表示數(shù)字的一種數(shù)據(jù)類型,然而,對(duì)于復(fù)雜的關(guān)系,通常可以使用子文檔來表示它們,就像我們使用單位裝飾基本類型以添加輔助信息一樣。如果您有一個(gè)復(fù)雜的關(guān)系,將其升級(jí)為一級(jí)對(duì)象通常是有意義的。例如,假設(shè)我們要表示股權(quán)關(guān)系,我們可以使用子文檔來描述持股人、股票數(shù)量、股份轉(zhuǎn)讓條款等詳細(xì)信息。

{ "@type" : "Class",
"@id" : "Company",
"name" : "xsd:string" }
{ "@type" : "Class",
"@id" : "Shareholder",
"name" : "xsd:string" }
{ "@type" : "Class",
"@id" : "Company",
"@inherits" : "Shareholder" }
{ "@type" : "Class",
"@id" : "Person",
"@inherits" : "Shareholder" }
{ "@type" : "Class",
"@id" : "Shareholding",
"quantity" : "xsd:decimal",
"shares_in" : "Company",
"held_by" : "Shareholder",
"from" : "xsd:date",
"to" : { "@type" : "Optional", "@class" : "xsd:date" }}

我們的Shareholding關(guān)系包含兩個(gè)不同的角色:持股公司和股東,他們可以是個(gè)人或公司。此外,我們還添加了關(guān)于這個(gè)關(guān)系的兩個(gè)附加信息:持股數(shù)量和持有時(shí)間。這種一流關(guān)系鏈接的方法可以擴(kuò)展到處理超圖,即涉及兩個(gè)或更多對(duì)象的關(guān)系(例如接管)。

混合(Mixins):面向方面編程的多重繼承

在編程語言中,多重繼承是一種有效的工具,但在數(shù)據(jù)處理中,它更加實(shí)用。混合是數(shù)據(jù)建模中可重復(fù)使用的一種方法,可以用來解決一些通用問題,例如空間、時(shí)間、來源和單位等。在我的建模經(jīng)驗(yàn)中,我發(fā)現(xiàn)這些通用問題在數(shù)據(jù)建模中屢次出現(xiàn),它們是跨多個(gè)領(lǐng)域的共同問題。

時(shí)域范圍(Temporal Scope)

上面的例子Shareholding使用了時(shí)間組件,但該組件也可作為mixin(混入)在其他地方重用。mixin是一種可組合的代碼單元,可在不同類或?qū)ο笾羞M(jìn)行重復(fù)利用,以實(shí)現(xiàn)更高的代碼復(fù)用性和靈活性。因此,將時(shí)間組件提取為mixin可以在其他數(shù)據(jù)建模中方便地進(jìn)行復(fù)用,提高建模效率和代碼質(zhì)量。

{ "@type" : "Class",
"@id" : "TemporalScope"
"from" : "xsd:date",
"to" : { "@type" : "Optional", "@class" : "xsd:date" }
}

在數(shù)據(jù)建模中,時(shí)間范圍的起始日期(from)是必須要有的,因?yàn)樗枋隽艘恍┦虑榈拈_始時(shí)間。但是,結(jié)束日期(to)是可選的,這樣可以建模尚未結(jié)束的時(shí)間范圍。當(dāng)然,并不總是需要這樣做,但通常這是一種非常有用的方法。

此外,我們可能還需要建模只發(fā)生一次的事件,即在某個(gè)特定時(shí)刻發(fā)生且不再重復(fù)發(fā)生的事件,例如一個(gè)人的生日或一場(chǎng)比賽的開始時(shí)間。

{ "@type" : "Class",
"@id" : "Event"
"at" : "xsd:date"
}

空間范圍(spatial scope)

在知識(shí)圖譜中,我們可以利用幾何形狀為對(duì)象添加空間范圍,這可以通過繼承來實(shí)現(xiàn)。我們可以將不同的幾何形狀組合在一起來表示空間范圍,例如矩形、圓形或多邊形。這種方法使我們能夠描述一個(gè)實(shí)體或概念在地理上的位置或空間范圍。

{ "@type" : "Class",
"@id" : "GeographicScope",
"geometry" : "Geometry" }

在這個(gè)上下文中,“Geometry”所指的是GeoJson中的一個(gè)類,具體指的是“Geometry類”。

溯源(Provenance)

為了更好地了解某些信息,通常需要記錄相關(guān)資源的來源。例如,當(dāng)我們從網(wǎng)站等途徑獲取資源時(shí),這種記錄就很常見。在這種情況下,我們可能需要?jiǎng)?chuàng)建一個(gè)繼承Event和Source類的對(duì)象來記錄這些信息。

{ "@type" : "Class",
"@id" : "Source",
"source" : "xsd:anyURI"
}
{ "@type" : "Class",
"@id" : "WebScrape",
"@inherits" : ["Event", "Source"],
"page" : "xsd:string",
}

集合體(Collections)

在知識(shí)圖譜中,有許多不同的方式可以對(duì)集合進(jìn)行建模。TerminusDB 實(shí)現(xiàn)了三種不同的方法,旨在嘗試簡(jiǎn)化建模過程,這三種方法是:Set、List和Array。了解這三種方法之間的差異非常重要:Set表示集合,List表示列表,而Array則表示數(shù)組。

集合(Set)

Set是三種集合模型中最簡(jiǎn)單的一種,因?yàn)樗鼪]有順序,實(shí)際上只是一條邊,可以包含多個(gè)元素。在圖中,具有三個(gè)元素的Set集合可以表示為以下形式:

數(shù)組(Array)

Array是一個(gè)更復(fù)雜的對(duì)象,它通過索引來對(duì)元素進(jìn)行編碼,并且可以根據(jù)位置來訪問它們。與Sets和Lists不同,Array具有固定的大小,其元素是有序的。此外,Array還提供了一些額外的功能,使其與Sets和Lists區(qū)別開來。

數(shù)組中的每個(gè)值元素都有一個(gè)附加的(隱藏)間接對(duì)象,帶有索引(或多維數(shù)組的多個(gè)索引)。這使得我們不僅可以有順序,還可以有多個(gè)維度來表示“間隔”。當(dāng)返回 JSON 中的值時(shí),我們將返回一個(gè)多維數(shù)組,其中包含未填充區(qū)域的null字段。但實(shí)際上,這些未填充區(qū)域并沒有在數(shù)據(jù)庫(kù)中出現(xiàn)。

列表(List)

List 是直接從 RDF 數(shù)據(jù)中提取 rdf:List 并使用 rdf:first 和 rdf:rest 字段來表示。三個(gè)元素的列表結(jié)構(gòu)如下所示:

°  ° rest→ ° rest→ ° rest→ rdf:nil
first first first
v0 v1 v2

鏈表式結(jié)構(gòu)具有潛在的技術(shù)優(yōu)勢(shì)。相較于數(shù)組,您可以在列表中的任何位置插入新元素,而不必在給定元素之后重新索引所有內(nèi)容。但是,鏈表式結(jié)構(gòu)需要遍歷圖中的長(zhǎng)鏈來解碼列表,這可能會(huì)對(duì)性能產(chǎn)生影響。在列表非常長(zhǎng)時(shí),它可能會(huì)導(dǎo)致解碼時(shí)間顯著延長(zhǎng),因此需要權(quán)衡其優(yōu)缺點(diǎn)來選擇適合特定場(chǎng)景的數(shù)據(jù)結(jié)構(gòu)。

結(jié)論

通過使用知識(shí)圖譜,可以實(shí)現(xiàn)更加輕松地操作和發(fā)現(xiàn)數(shù)據(jù)。知識(shí)圖譜是一個(gè)基于圖形結(jié)構(gòu)的數(shù)據(jù)模型,可以將各種實(shí)體和概念以及它們之間的關(guān)系表示為節(jié)點(diǎn)和邊,使得數(shù)據(jù)之間的關(guān)系和結(jié)構(gòu)更加清晰和易于理解。在使用知識(shí)圖譜進(jìn)行數(shù)據(jù)建模后,用戶可以方便地進(jìn)行數(shù)據(jù)操作和發(fā)現(xiàn),從而更加高效地利用數(shù)據(jù)。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-03-17 07:13:43

2021-01-18 10:50:29

知識(shí)圖譜人工智能深度學(xué)習(xí)

2025-06-06 01:00:00

AI人工智能知識(shí)圖譜

2025-06-05 09:09:50

2025-06-09 09:10:26

2017-03-06 16:48:56

知識(shí)圖譜構(gòu)建存儲(chǔ)

2025-06-09 03:00:00

人工智能AI知識(shí)圖譜

2021-01-19 10:52:15

知識(shí)圖譜

2025-04-27 00:10:00

AI人工智能知識(shí)圖譜

2021-01-25 10:36:32

知識(shí)圖譜人工智能

2024-02-26 00:00:00

RAG系統(tǒng)圖譜

2025-06-03 15:00:04

2025-06-03 06:03:06

2025-06-05 02:00:00

人工智能知識(shí)圖譜AI

2025-06-03 06:14:37

2020-12-02 08:14:05

行業(yè)規(guī)模經(jīng)驗(yàn)

2017-04-13 11:48:05

NLP知識(shí)圖譜

2024-10-08 10:37:12

語言數(shù)據(jù)自然語言

2024-06-03 07:28:43

2023-06-29 07:27:26

知識(shí)圖譜Shopee
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品视频一二三区 | 午夜av毛片 | 永久免费在线观看 | 毛片一区二区三区 | 中文字幕在线精品 | 国产一区二区精品在线观看 | 亚洲区中文字幕 | 91在线第一页 | 丁香婷婷在线视频 | 色综合天天天天做夜夜夜夜做 | 国产成人精品一区二区 | 国产精品成人69xxx免费视频 | 中文字幕在线网 | 妹子干综合 | 午夜视频导航 | 国产精品一区二区视频 | 日本在线看片 | 一区二区三区成人 | 一区二区三区四区不卡视频 | 免费在线播放黄色 | 综合久久一区 | 国产午夜精品一区二区三区 | 日韩在线免费 | 国产精品一区二区在线 | 日韩精品一区二区三区中文字幕 | 午夜av一区二区 | 免费v片在线观看 | 亚洲精品乱码久久久久久黑人 | 男女羞羞在线观看 | 欧美亚洲视频 | 久久精品性视频 | 亚洲精品在线视频 | 欧美激情在线精品一区二区三区 | 97国产一区二区 | www.色.com| 日韩精品视频一区二区三区 | 久久专区| 成人在线观看免费视频 | 亚洲一区亚洲二区 | 一区二区三区欧美 | 国产精品欧美一区二区 |