2023-06-28 04:35:44 +00:00
<!doctype html>
< html class = "no-js" lang = "en" >
< head > < meta charset = "utf-8" / >
< meta name = "viewport" content = "width=device-width,initial-scale=1" / >
< meta name = "color-scheme" content = "light dark" > < meta name = "generator" content = "Docutils 0.19: https://docutils.sourceforge.io/" / >
< link rel = "index" title = "Index" href = "../../genindex.html" / > < link rel = "search" title = "Search" href = "../../search.html" / > < link rel = "next" title = "SOLID" href = "solid.html" / > < link rel = "prev" title = "Linked Data" href = "index.html" / >
< link rel = "canonical" href = "/docs/comparison/ld/rdf.html" / >
<!-- Generated with Sphinx 6.2.1 and Furo 2023.05.20 -->
< title > RDF and Friends - p2p-ld 0.1.0 documentation< / title >
< link rel = "stylesheet" type = "text/css" href = "../../_static/pygments.css" / >
< link rel = "stylesheet" type = "text/css" href = "../../_static/styles/furo.css?digest=e6660623a769aa55fea372102b9bf3151b292993" / >
< link rel = "stylesheet" type = "text/css" href = "../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" / >
< link rel = "stylesheet" type = "text/css" href = "../../_static/styles/furo-extensions.css?digest=30d1aed668e5c3a91c3e3bf6a60b675221979f0e" / >
< style >
body {
--color-code-background: #f8f8f8;
--color-code-foreground: black;
}
@media not print {
body[data-theme="dark"] {
2023-07-01 06:59:21 +00:00
--color-code-background: #0d1117;
--color-code-foreground: #e6edf3;
2023-06-28 04:35:44 +00:00
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
2023-07-01 06:59:21 +00:00
--color-code-background: #0d1117;
--color-code-foreground: #e6edf3;
2023-06-28 04:35:44 +00:00
}
}
}
< / style > < / head >
< body >
< script >
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
< / script >
< svg xmlns = "http://www.w3.org/2000/svg" style = "display: none;" >
< symbol id = "svg-toc" viewBox = "0 0 24 24" >
< title > Contents< / title >
< svg stroke = "currentColor" fill = "currentColor" stroke-width = "0" viewBox = "0 0 1024 1024" >
< path d = "M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z" / >
< / svg >
< / symbol >
< symbol id = "svg-menu" viewBox = "0 0 24 24" >
< title > Menu< / title >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
< line x1 = "3" y1 = "12" x2 = "21" y2 = "12" > < / line >
< line x1 = "3" y1 = "6" x2 = "21" y2 = "6" > < / line >
< line x1 = "3" y1 = "18" x2 = "21" y2 = "18" > < / line >
< / svg >
< / symbol >
< symbol id = "svg-arrow-right" viewBox = "0 0 24 24" >
< title > Expand< / title >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
< polyline points = "9 18 15 12 9 6" > < / polyline >
< / svg >
< / symbol >
< symbol id = "svg-sun" viewBox = "0 0 24 24" >
< title > Light mode< / title >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor"
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
< circle cx = "12" cy = "12" r = "5" > < / circle >
< line x1 = "12" y1 = "1" x2 = "12" y2 = "3" > < / line >
< line x1 = "12" y1 = "21" x2 = "12" y2 = "23" > < / line >
< line x1 = "4.22" y1 = "4.22" x2 = "5.64" y2 = "5.64" > < / line >
< line x1 = "18.36" y1 = "18.36" x2 = "19.78" y2 = "19.78" > < / line >
< line x1 = "1" y1 = "12" x2 = "3" y2 = "12" > < / line >
< line x1 = "21" y1 = "12" x2 = "23" y2 = "12" > < / line >
< line x1 = "4.22" y1 = "19.78" x2 = "5.64" y2 = "18.36" > < / line >
< line x1 = "18.36" y1 = "5.64" x2 = "19.78" y2 = "4.22" > < / line >
< / svg >
< / symbol >
< symbol id = "svg-moon" viewBox = "0 0 24 24" >
< title > Dark mode< / title >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor"
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
< path stroke = "none" d = "M0 0h24v24H0z" fill = "none" / >
< path d = "M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" / >
< / svg >
< / symbol >
< symbol id = "svg-sun-half" viewBox = "0 0 24 24" >
< title > Auto light/dark mode< / title >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor"
stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-shadow">
< path stroke = "none" d = "M0 0h24v24H0z" fill = "none" / >
< circle cx = "12" cy = "12" r = "9" / >
< path d = "M13 12h5" / >
< path d = "M13 15h4" / >
< path d = "M13 18h1" / >
< path d = "M13 9h4" / >
< path d = "M13 6h1" / >
< / svg >
< / symbol >
< / svg >
< input type = "checkbox" class = "sidebar-toggle" name = "__navigation" id = "__navigation" >
< input type = "checkbox" class = "sidebar-toggle" name = "__toc" id = "__toc" >
< label class = "overlay sidebar-overlay" for = "__navigation" >
< div class = "visually-hidden" > Hide navigation sidebar< / div >
< / label >
< label class = "overlay toc-overlay" for = "__toc" >
< div class = "visually-hidden" > Hide table of contents sidebar< / div >
< / label >
< div class = "page" >
< header class = "mobile-header" >
< div class = "header-left" >
< label class = "nav-overlay-icon" for = "__navigation" >
< div class = "visually-hidden" > Toggle site navigation sidebar< / div >
< i class = "icon" > < svg > < use href = "#svg-menu" > < / use > < / svg > < / i >
< / label >
< / div >
< div class = "header-center" >
< a href = "../../index.html" > < div class = "brand" > p2p-ld 0.1.0 documentation< / div > < / a >
< / div >
< div class = "header-right" >
< div class = "theme-toggle-container theme-toggle-header" >
< button class = "theme-toggle" >
< div class = "visually-hidden" > Toggle Light / Dark / Auto color theme< / div >
< svg class = "theme-icon-when-auto" > < use href = "#svg-sun-half" > < / use > < / svg >
< svg class = "theme-icon-when-dark" > < use href = "#svg-moon" > < / use > < / svg >
< svg class = "theme-icon-when-light" > < use href = "#svg-sun" > < / use > < / svg >
< / button >
< / div >
< label class = "toc-overlay-icon toc-header-icon" for = "__toc" >
< div class = "visually-hidden" > Toggle table of contents sidebar< / div >
< i class = "icon" > < svg > < use href = "#svg-toc" > < / use > < / svg > < / i >
< / label >
< / div >
< / header >
< aside class = "sidebar-drawer" >
< div class = "sidebar-container" >
< div class = "sidebar-sticky" > < a class = "sidebar-brand" href = "../../index.html" >
< span class = "sidebar-brand-text" > p2p-ld 0.1.0 documentation< / span >
< / a > < form class = "sidebar-search-container" method = "get" action = "../../search.html" role = "search" >
< input class = "sidebar-search" placeholder = "Search" name = "q" aria-label = "Search" >
< input type = "hidden" name = "check_keywords" value = "yes" >
< input type = "hidden" name = "area" value = "default" >
< / form >
< div id = "searchbox" > < / div > < div class = "sidebar-scroll" > < div class = "sidebar-tree" >
< p class = "caption" role = "heading" > < span class = "caption-text" > Introduction< / span > < / p >
< ul class = "current" >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../overview.html" > Overview< / a > < / li >
< li class = "toctree-l1 current has-children" > < a class = "reference internal" href = "../index.html" > Comparison< / a > < input checked = "" class = "toctree-checkbox" id = "toctree-checkbox-1" name = "toctree-checkbox-1" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-1" > < div class = "visually-hidden" > Toggle navigation of Comparison< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul class = "current" >
< li class = "toctree-l2 has-children" > < a class = "reference internal" href = "../p2p/index.html" > P2P< / a > < input class = "toctree-checkbox" id = "toctree-checkbox-2" name = "toctree-checkbox-2" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-2" > < div class = "visually-hidden" > Toggle navigation of P2P< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../p2p/bittorrent.html" > BitTorrent< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../p2p/ipfs.html" > IPFS< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../p2p/hypercore.html" > Dat/Hypercore< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../p2p/spritely.html" > Spritely/Goblin< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2 has-children" > < a class = "reference internal" href = "../social/index.html" > Social< / a > < input class = "toctree-checkbox" id = "toctree-checkbox-3" name = "toctree-checkbox-3" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-3" > < div class = "visually-hidden" > Toggle navigation of Social< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/activitypub.html" > ActivityPub< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/ssb.html" > Secure Scuttlebutt< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/matrix.html" > Matrix< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/at_protocol.html" > AT Protocol/Bluesky< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/nostr.html" > Nostr< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../social/xmpp.html" > XMPP< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2 current has-children" > < a class = "reference internal" href = "index.html" > Linked Data< / a > < input checked = "" class = "toctree-checkbox" id = "toctree-checkbox-4" name = "toctree-checkbox-4" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-4" > < div class = "visually-hidden" > Toggle navigation of Linked Data< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul class = "current" >
< li class = "toctree-l3 current current-page" > < a class = "current reference internal" href = "#" > RDF and Friends< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "solid.html" > SOLID< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "ld_fragments.html" > Linked Data Fragments< / a > < / li >
2023-07-01 06:59:21 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "hdt.html" > HDT< / a > < / li >
2023-06-28 04:35:44 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "ld_platform.html" > Linked Data Platform< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "nanopubs.html" > NanoPubs< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2 has-children" > < a class = "reference internal" href = "../data/index.html" > Data Structures< / a > < input class = "toctree-checkbox" id = "toctree-checkbox-5" name = "toctree-checkbox-5" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-5" > < div class = "visually-hidden" > Toggle navigation of Data Structures< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul >
2023-07-01 06:59:21 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../data/datalad.html" > DataLad< / a > < / li >
2023-06-28 04:35:44 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../data/dmc.html" > DMC< / a > < / li >
2023-07-01 06:59:21 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../data/eris.html" > ERIS< / a > < / li >
2023-11-28 07:26:49 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../data/graphdb.html" > Graph Databases< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../data/sqlite.html" > SQLite< / a > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../p2p_concepts.html" > P2P Concepts< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../out_of_scope.html" > Out of Scope< / a > < / li >
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Protocol< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../definitions.html" > 1. Definitions< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../protocol.html" > 2. Protocol< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../identity.html" > 3. Identity< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../discovery.html" > 4. Discovery< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../data_structures.html" > 5. Data Structures< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../vocabulary.html" > 6. Vocabulary< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../querying.html" > 7. Querying< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../encryption.html" > 8. Encryption< / a > < / li >
2023-11-28 07:26:49 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../../federation.html" > 9. Federation< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../backwards_compatibility.html" > 10. Backwards Compatibility< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../evolvability.html" > 11. Evolvability< / a > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Ecosystem< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../triplets.html" > Triplets< / a > < / li >
2023-07-01 06:59:21 +00:00
< li class = "toctree-l1 has-children" > < a class = "reference internal" href = "../../codecs/index.html" > Codecs< / a > < input class = "toctree-checkbox" id = "toctree-checkbox-6" name = "toctree-checkbox-6" role = "switch" type = "checkbox" / > < label for = "toctree-checkbox-6" > < div class = "visually-hidden" > Toggle navigation of Codecs< / div > < i class = "icon" > < svg > < use href = "#svg-arrow-right" > < / use > < / svg > < / i > < / label > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../../codecs/hdf5.html" > HDF5< / a > < / li >
< / ul >
< / li >
2023-06-28 04:35:44 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../../translation/index.html" > Translation< / a > < / li >
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Drafting< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../design.html" > Design Decisions< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../sketchpad.html" > Sketchpad< / a > < / li >
< / ul >
< p class = "caption" role = "heading" > < span class = "caption-text" > Meta< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../genindex.html" > Index< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../references.html" > References< / a > < / li >
2023-11-28 07:26:49 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../../todo.html" > TODO< / a > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< / div >
< / div >
< / div >
< / div >
< / aside >
< div class = "main" >
< div class = "content" >
< div class = "article-container" >
< a href = "#" class = "back-to-top muted-link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >
< path d = "M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z" > < / path >
< / svg >
< span > Back to top< / span >
< / a >
< div class = "content-icon-container" >
< div class = "theme-toggle-container theme-toggle-content" >
< button class = "theme-toggle" >
< div class = "visually-hidden" > Toggle Light / Dark / Auto color theme< / div >
< svg class = "theme-icon-when-auto" > < use href = "#svg-sun-half" > < / use > < / svg >
< svg class = "theme-icon-when-dark" > < use href = "#svg-moon" > < / use > < / svg >
< svg class = "theme-icon-when-light" > < use href = "#svg-sun" > < / use > < / svg >
< / button >
< / div >
< label class = "toc-overlay-icon toc-content-icon" for = "__toc" >
< div class = "visually-hidden" > Toggle table of contents sidebar< / div >
< i class = "icon" > < svg > < use href = "#svg-toc" > < / use > < / svg > < / i >
< / label >
< / div >
< article role = "main" >
< section id = "rdf-and-friends" >
< span id = "index-0" > < / span > < h1 > RDF and Friends< a class = "headerlink" href = "#rdf-and-friends" title = "Permalink to this heading" > #< / a > < / h1 >
< p > RDF is one of the elephants in the room when it comes to triplet graphs and linked data. Its history is complex and torrid, known as hopelessly and aggressively complex or a divine calling, depending on your disposition.< / p >
< p > < strong > p2p-ld does not necessarily seek to be an RDF-based p2p protocol,< / strong > though strategizing for interoperability with RDF and RDF-derivative formats would be nice.< / p >
< p > One of the primary challenges to using RDF-like formats is the conflation of URLs and URIs as the primary identifiers for schema and objects. This idea (roughly) maps onto the “neat” characterization of linked data where everything should have ideally one canonical representation, and there should be a handful of “correct” general-purpose schema capable of modeling the world.< / p >
2023-07-01 06:59:21 +00:00
< p > We depart from that vision, instead favoring radical vernacularism < span id = "id1" > [< a class = "reference internal" href = "../../references.html#id16" title = "Jonny L. Saunders. Surveillance Graphs. 2023-04-02T00:00:00+00:00. URL: https://jon-e.net/surveillance-graphs (visited on 2023-06-08), arXiv:hc:54749, doi:10.17613/syv8-cp10." > Saunders, 2023< / a > ]< / span > . URIs are extremely general, and include decentralized identifiers like < span class = "target" id = "index-1" > < / span > multiaddrs< / p >
2023-06-28 04:35:44 +00:00
< section id = "id2" >
< h2 > RDF And Friends< a class = "headerlink" href = "#id2" title = "Permalink to this heading" > #< / a > < / h2 >
2023-07-01 06:59:21 +00:00
< div class = "admonition important" >
< p class = "admonition-title" > Important< / p >
< p > Return here re: RDF canonicalization and IPFS < a class = "reference external" href = "https://github.com/multiformats/multicodec/pull/261" > https://github.com/multiformats/multicodec/pull/261< / a > < / p >
< / div >
2023-06-28 04:35:44 +00:00
< section id = "json-ld" >
< span id = "index-2" > < / span > < h3 > JSON-LD< a class = "headerlink" href = "#json-ld" title = "Permalink to this heading" > #< / a > < / h3 >
< / section >
< / section >
< section id = "challenges" >
< h2 > Challenges< a class = "headerlink" href = "#challenges" title = "Permalink to this heading" > #< / a > < / h2 >
2023-07-01 06:59:21 +00:00
< section id = "ordered-data" >
< h3 > Ordered Data< a class = "headerlink" href = "#ordered-data" title = "Permalink to this heading" > #< / a > < / h3 >
2023-06-28 04:35:44 +00:00
< p > The edges from a node in a graph are unordered, which makes array and tabular data difficult to work with in RDF!< / p >
< p > This has been approached in a few ways:< / p >
< p > < strong > RDF< / strong > uses a < a class = "reference external" href = "https://www.w3.org/TR/rdf12-schema/#ch_collectionvocab" > godforsaken < code class = "docutils literal notranslate" > < span class = "pre" > rdf:first< / span > < / code > < code class = "docutils literal notranslate" > < span class = "pre" > rdf:rest< / span > < / code > linked list syntax< / a > < / p >
< p > eg. one would express < code class = "docutils literal notranslate" > < span class = "pre" > MyList< / span > < / code > which contains the < code class = "docutils literal notranslate" > < span class = "pre" > Friends< / span > < / code > < code class = "docutils literal notranslate" > < span class = "pre" > [" Arnold" ,< / span > < span class = "pre" > " Bob" ,< / span > < span class = "pre" > " Carly" ]< / span > < / code > in (longhand) turtle as< / p >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > rdf:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/1999/02/22-rdf-syntax-ns#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > :< / span > < span class = "w" > < / span > < span class = "nv" > < https://example.com> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > MyList< / span > < span class = "p" > :< / span > < span class = "nt" > Friends< / span > < span class = "p" > :< / span > < span class = "nt" > list1< / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > list1< / span >
2023-07-01 06:59:21 +00:00
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "p" > :< / span > < span class = "nt" > Amy< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "p" > :< / span > < span class = "nt" > list2< / span > < span class = "p" > .< / span >
2023-06-28 04:35:44 +00:00
< span class = "p" > :< / span > < span class = "nt" > list2< / span >
2023-07-01 06:59:21 +00:00
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "p" > :< / span > < span class = "nt" > Bob< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "p" > :< / span > < span class = "nt" > list3< / span > < span class = "p" > .< / span >
2023-06-28 04:35:44 +00:00
< span class = "p" > :< / span > < span class = "nt" > list3< / span >
2023-07-01 06:59:21 +00:00
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "p" > :< / span > < span class = "nt" > Carly< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > nil< / span > < span class = "p" > .< / span >
2023-06-28 04:35:44 +00:00
< / pre > < / div >
< / div >
< p > And thankfully turtle has a shorthand, which isn’ t so bad:< / p >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > rdf:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/1999/02/22-rdf-syntax-ns#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > :< / span > < span class = "w" > < / span > < span class = "nv" > < https://example.com> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > MyList< / span >
2023-07-01 06:59:21 +00:00
< span class = "p" > :< / span > < span class = "nt" > Friends< / span > < span class = "p" > (< / span >
< span class = "p" > :< / span > < span class = "nt" > Amy< / span >
< span class = "p" > :< / span > < span class = "nt" > Bob< / span >
< span class = "p" > :< / span > < span class = "nt" > Carly< / span >
< span class = "p" > ).< / span >
2023-06-28 04:35:44 +00:00
< / pre > < / div >
< / div >
< p > Both of these correspond to the triplet graph:< / p >
< div class = "mermaid" >
flowchart LR
2023-07-01 06:59:21 +00:00
MyList
list1
list2
list3
nil
Amy
Bob
Carly
MyList --> |Friends| list1
list1 --> |rest| list2
list2 --> |rest| list3
list3 --> |rest| nil
list1 --> |first| Amy
list2 --> |first| Bob
list3 --> |first| Carly
2023-06-28 04:35:44 +00:00
< / div > < p > Which is not great.< / p >
< p > < strong > < span class = "target" id = "index-3" > < / span > JSON-LD< / strong > uses a < code class = "docutils literal notranslate" > < span class = "pre" > @ list< / span > < / code > keyword:< / p >
< div class = "highlight-jsonld notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nd" > " @context" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "nt" > " foaf" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " http://xmlns.com/foaf/0.1/" < / span > < span class = "p" > },< / span >
< span class = "w" > < / span > < span class = "nd" > " @id" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " http://example.org/people#joebob" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " foaf:nick" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nd" > " @list" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "w" > < / span > < span class = "s2" > " joe" < / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "s2" > " bob" < / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "s2" > " jaybee" < / span > < span class = "w" > < / span > < span class = "p" > ]< / span >
< span class = "w" > < / span > < span class = "p" > },< / span >
< span class = "p" > }< / span >
< / pre > < / div >
< / div >
< p > which can be expanded recursively to < a class = "reference external" href = "https://www.w3.org/TR/json-ld11/#example-84-coordinates-expressed-in-json-ld" > mimic arrays< / a > < / p >
< div class = "sd-tab-set docutils" >
< input checked = "checked" id = "sd-tab-item-0" name = "sd-tab-set-0" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-0" >
JSON-LD< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-jsonld notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nd" > " @context" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nd" > " @vocab" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " https://purl.org/geojson/vocab#" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " coordinates" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "nd" > " @container" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " @list" < / span > < span class = "p" > }< / span >
< span class = "w" > < / span > < span class = "p" > },< / span >
< span class = "w" > < / span > < span class = "nt" > " geometry" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " coordinates" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > [< / span >
< span class = "w" > < / span > < span class = "p" > [< / span >
< span class = "w" > < / span > < span class = "p" > [< / span > < span class = "mf" > -10.0< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "mf" > -10.0< / span > < span class = "p" > ],< / span >
< span class = "w" > < / span > < span class = "p" > [< / span > < span class = "mf" > 10.0< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "mf" > -10.0< / span > < span class = "p" > ],< / span >
< span class = "w" > < / span > < span class = "p" > [< / span > < span class = "mf" > 10.0< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "mf" > 10.0< / span > < span class = "p" > ],< / span >
< span class = "w" > < / span > < span class = "p" > [< / span > < span class = "mf" > -10.0< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "mf" > -10.0< / span > < span class = "p" > ]< / span >
< span class = "w" > < / span > < span class = "p" > ]< / span >
< span class = "w" > < / span > < span class = "p" > ]< / span >
< span class = "w" > < / span > < span class = "p" > }< / span >
< span class = "p" > }< / span >
< / pre > < / div >
< / div >
< / div >
< input id = "sd-tab-item-1" name = "sd-tab-set-0" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-1" >
Turtle< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > geojson:< / span > < span class = "w" > < / span > < span class = "nv" > < https://purl.org/geojson/vocab#> < / span > < span class = "p" > .< / span >
< span class = "p" > [< / span >
< span class = "kt" > a< / span > < span class = "nn" > geojson< / span > < span class = "p" > :< / span > < span class = "nt" > Feature< / span > < span class = "p" > ;< / span >
< span class = "nn" > geojson< / span > < span class = "p" > :< / span > < span class = "nt" > bbox< / span > < span class = "p" > (< / span > < span class = "mi" > -10< / span > < span class = "mi" > -10< / span > < span class = "mi" > 10< / span > < span class = "mi" > 10< / span > < span class = "p" > )< / span > < span class = "p" > ;< / span >
< span class = "nn" > geojson< / span > < span class = "p" > :< / span > < span class = "nt" > geometry< / span > < span class = "p" > [< / span >
< span class = "kt" > a< / span > < span class = "nn" > geojson< / span > < span class = "p" > :< / span > < span class = "nt" > Polygon< / span > < span class = "p" > ;< / span >
< span class = "nn" > geojson< / span > < span class = "p" > :< / span > < span class = "nt" > coordinates< / span > < span class = "p" > (< / span >
< span class = "p" > (< / span >
< span class = "p" > (< / span > < span class = "mi" > -10< / span > < span class = "mi" > -10< / span > < span class = "p" > )< / span >
< span class = "p" > (< / span > < span class = "mi" > 10< / span > < span class = "mi" > -10< / span > < span class = "p" > )< / span >
< span class = "p" > (< / span > < span class = "mi" > 10< / span > < span class = "mi" > 10< / span > < span class = "p" > )< / span >
< span class = "p" > (< / span > < span class = "mi" > -10< / span > < span class = "mi" > -10< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "p" > ]< / span >
< span class = "p" > ]< / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
< / section >
2023-07-01 06:59:21 +00:00
< section id = "tabular-data" >
< h3 > Tabular Data< a class = "headerlink" href = "#tabular-data" title = "Permalink to this heading" > #< / a > < / h3 >
< p > As an overbrief summary, converting data from tables to RDF needs a schema mapping:< / p >
< ul class = "simple" >
< li > < p > Columns to Properties< / p > < / li >
< li > < / li >
< li > < p > Column names in source table to symbolic names used within the conversion schema< / p > < / li >
< li > < p > datatype (for representation in concrete RDF syntax)< / p > < / li >
< li > < / li >
< / ul >
< p > According to the < a class = "reference external" href = "https://www.w3.org/TR/csv2rdf/" > Tabular Data to RDF< / a > recommendation, one would convert the following table (encoded as < code class = "docutils literal notranslate" > < span class = "pre" > csv< / span > < / code > ):< / p >
< div class = "table-wrapper docutils container" >
< table class = "docutils align-default" >
< tbody >
< tr class = "row-odd" > < td > < p > countryCode< / p > < / td >
< td > < p > latitude< / p > < / td >
< td > < p > longitude< / p > < / td >
< td > < p > name< / p > < / td >
< / tr >
< tr class = "row-even" > < td > < p > AD< / p > < / td >
< td > < p > 42.5< / p > < / td >
< td > < p > 1.6< / p > < / td >
< td > < p > Andorra< / p > < / td >
< / tr >
< tr class = "row-odd" > < td > < p > AE< / p > < / td >
< td > < p > 23.4< / p > < / td >
< td > < p > 53.8< / p > < / td >
< td > < p > United Arab Emirates< / p > < / td >
< / tr >
< tr class = "row-even" > < td > < p > AF< / p > < / td >
< td > < p > 33.9< / p > < / td >
< td > < p > 67.7< / p > < / td >
< td > < p > Afghanistan< / p > < / td >
< / tr >
< / tbody >
< / table >
< / div >
< p > Into one of two “minimal” or “standard” formats of RDF:< / p >
< div class = "sd-tab-set docutils" >
< input checked = "checked" id = "sd-tab-item-2" name = "sd-tab-set-1" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-2" >
Minimal mode< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @base< / span > < span class = "w" > < / span > < span class = "nv" > < http://example.org/countries.csv> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > 8228a149-8efe-448d-b15f-8abf92e7bd17< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AD" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 42.5" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 1.6" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " Andorra" < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > ec59dcfc-872a-4144-822b-9ad5e2c6149c< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AE" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 23.4" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 53.8" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " United Arab Emirates" < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > e8f2e8e9-3d02-4bf5-b4f1-4794ba5b52c9< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AF" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 33.9" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 67.7" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " Afghanistan" < / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / div >
< input id = "sd-tab-item-3" name = "sd-tab-set-1" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-3" >
Standard mode< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @base< / span > < span class = "w" > < / span > < span class = "nv" > < http://example.org/countries.csv> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > csvw:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/ns/csvw#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > xsd:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/2001/XMLSchema#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > d4f8e548-9601-4e41-aadb-09a8bce32625< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > TableGroup< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > table< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Table< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < http://example.org/countries.csv> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > row< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Row< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > rownum< / span > < span class = "s" > " 1" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > integer< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #row=2> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "p" > :< / span > < span class = "nt" > 8228a149-8efe-448d-b15f-8abf92e7bd17< / span >
< span class = "p" > ],< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Row< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > rownum< / span > < span class = "s" > " 2" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > integer< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #row=3> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "p" > :< / span > < span class = "nt" > ec59dcfc-872a-4144-822b-9ad5e2c6149c< / span >
< span class = "p" > ],< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Row< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > rownum< / span > < span class = "s" > " 3" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > integer< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #row=4> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "p" > :< / span > < span class = "nt" > e8f2e8e9-3d02-4bf5-b4f1-4794ba5b52c9< / span >
< span class = "p" > ]< / span >
< span class = "p" > ]< / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > 8228a149-8efe-448d-b15f-8abf92e7bd17< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AD" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 42.5" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 1.6" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " Andorra" < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > ec59dcfc-872a-4144-822b-9ad5e2c6149c< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AE" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 23.4" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 53.8" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " United Arab Emirates" < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > e8f2e8e9-3d02-4bf5-b4f1-4794ba5b52c9< / span >
< span class = "nv" > < #countryCode> < / span > < span class = "s" > " AF" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #latitude> < / span > < span class = "s" > " 33.9" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #longitude> < / span > < span class = "s" > " 67.7" < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #name> < / span > < span class = "s" > " Afghanistan" < / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
< p > The recommendation also covers more complex situations. These make use of a JSON schema that handles mapping between the CSV data and RDF.< / p >
< p > By default, each row of a table describes a single RDF resource, and each column has a single property (so each cell is a triple).< / p >
< p > For example this table of concerts:< / p >
< div class = "table-wrapper docutils container" >
< table class = "docutils align-default" >
< tbody >
< tr class = "row-odd" > < td > < p > Name< / p > < / td >
< td > < p > Start Date< / p > < / td >
< td > < p > Location Name< / p > < / td >
< td > < p > Location Address< / p > < / td >
< td > < p > Ticket Url< / p > < / td >
< / tr >
< tr class = "row-even" > < td > < p > B.B. King< / p > < / td >
< td > < p > 2014-04-12T19:30< / p > < / td >
< td > < p > Lupo’ s Heartbreak Hotel< / p > < / td >
< td > < p > 79 Washington St., Providence, RI< / p > < / td >
< td > < p > < a class = "reference external" href = "https://www.etix.com/ticket/1771656" > https://www.etix.com/ticket/1771656< / a > < / p > < / td >
< / tr >
< tr class = "row-odd" > < td > < p > B.B. King< / p > < / td >
< td > < p > 2014-04-13T20:00< / p > < / td >
< td > < p > Lynn Auditorium< / p > < / td >
< td > < p > Lynn, MA, 01901< / p > < / td >
< td > < p > < a class = "reference external" href = "http://frontgatetickets.com/venue.php?id=11766" > http://frontgatetickets.com/venue.php?id=11766< / a > < / p > < / td >
< / tr >
< / tbody >
< / table >
< / div >
< p > Needs to be mapped to 3 separate resources with 7 properties. The values are not transformed, just grouped in different places under different resources. Notice how in the standard mode the < code class = "code docutils literal highlight highlight-turtle" > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < / code > entry can have three objects. The turtle is surprisingly humane.< / p >
< p > The JSON schema describes five concrete triples that carry the data from the CSV, and five < code class = "docutils literal notranslate" > < span class = "pre" > virtual< / span > < / code > triples that give the resources types and link them together. Abstractions over table iterators take the form of < code class = "docutils literal notranslate" > < span class = "pre" > " #event-{_row}" < / span > < / code > to create a resource < code class = "docutils literal notranslate" > < span class = "pre" > < #event-1> < / span > < / code > , < code class = "docutils literal notranslate" > < span class = "pre" > < #event-2> < / span > < / code > , etc. for each row.< / p >
< div class = "sd-tab-set docutils" >
< input checked = "checked" id = "sd-tab-item-4" name = "sd-tab-set-2" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-4" >
Minimal mode< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @base< / span > < span class = "w" > < / span > < span class = "nv" > < http://example.org/events-listing.csv> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > schema:< / span > < span class = "w" > < / span > < span class = "nv" > < http://schema.org/> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > xsd:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/2001/XMLSchema#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "nv" > < #event-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > MusicEvent< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " B.B. King" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > startDate< / span > < span class = "s" > " 2014-04-12T19:30:00" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > dateTime< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > location< / span > < span class = "nv" > < #place-1> < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > offers< / span > < span class = "nv" > < #offer-1> < / span > < span class = "p" > .< / span >
< span class = "nv" > < #place-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Place< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " Lupo’ s Heartbreak Hotel" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > address< / span > < span class = "s" > " 79 Washington St., Providence, RI" < / span > < span class = "p" > .< / span >
< span class = "nv" > < #offer-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Offer< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "s" > " https://www.etix.com/ticket/1771656" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > anyURI< / span > < span class = "p" > .< / span >
< span class = "nv" > < #event-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > MusicEvent< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " B.B. King" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > startDate< / span > < span class = "s" > " 2014-04-13T20:00:00" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > dateTime< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > location< / span > < span class = "nv" > < #place-2> < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > offers< / span > < span class = "nv" > < #offer-2> < / span > < span class = "p" > .< / span >
< span class = "nv" > < #place-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Place< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " Lynn Auditorium" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > address< / span > < span class = "s" > " Lynn, MA, 01901" < / span > < span class = "p" > .< / span >
< span class = "nv" > < #offer-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Offer< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "s" > " http://frontgatetickets.com/venue.php?id=11766" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > anyURI< / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / div >
< input id = "sd-tab-item-5" name = "sd-tab-set-2" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-5" >
Standard mode< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @base< / span > < span class = "w" > < / span > < span class = "nv" > < http://example.org/events-listing.csv> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > csvw:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/ns/csvw#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > schema:< / span > < span class = "w" > < / span > < span class = "nv" > < http://schema.org/> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > xsd:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/2001/XMLSchema#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > 95cc7970-ce99-44b0-900c-e2c2c028bbd3< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > TableGroup< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > table< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Table< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < http://example.org/events-listing.csv> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > row< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Row< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > rownum< / span > < span class = "mi" > 1< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #row=2> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "nv" > < #event-1> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #place-1> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #offer-1> < / span >
< span class = "p" > ],< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > Row< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > rownum< / span > < span class = "mi" > 2< / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #row=3> < / span > < span class = "p" > ;< / span >
< span class = "nn" > csvw< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "nv" > < #event-2> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #place-2> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #offer-2> < / span >
< span class = "p" > ]< / span >
< span class = "p" > ]< / span > < span class = "p" > .< / span >
< span class = "nv" > < #event-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > MusicEvent< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " B.B. King" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > startDate< / span > < span class = "s" > " 2014-04-12T19:30:00" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > dateTime< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > location< / span > < span class = "nv" > < #place-1> < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > offers< / span > < span class = "nv" > < #offer-1> < / span > < span class = "p" > .< / span >
< span class = "nv" > < #place-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Place< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " Lupo’ s Heartbreak Hotel" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > address< / span > < span class = "s" > " 79 Washington St., Providence, RI" < / span > < span class = "p" > .< / span >
< span class = "nv" > < #offer-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Offer< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "s" > " https://www.etix.com/ticket/1771656" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > anyURI< / span > < span class = "p" > .< / span >
< span class = "nv" > < #event-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > MusicEvent< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " B.B. King" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > startDate< / span > < span class = "s" > " 2014-04-13T20:00:00" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > dateTime< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > location< / span > < span class = "nv" > < #place-2> < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > offers< / span > < span class = "nv" > < #offer-2> < / span > < span class = "p" > .< / span >
< span class = "nv" > < #place-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Place< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > name< / span > < span class = "s" > " Lynn Auditorium" < / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > address< / span > < span class = "s" > " Lynn, MA, 01901" < / span > < span class = "p" > .< / span >
< span class = "nv" > < #offer-2> < / span > < span class = "kt" > a< / span > < span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > Offer< / span > < span class = "p" > ;< / span >
< span class = "nn" > schema< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "s" > " http://frontgatetickets.com/venue.php?id=11766" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > anyURI< / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / div >
< input id = "sd-tab-item-6" name = "sd-tab-set-2" type = "radio" >
< / input > < label class = "sd-tab-label" for = "sd-tab-item-6" >
JSON Schema< / label > < div class = "sd-tab-content docutils" >
< div class = "highlight-json notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " @context" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > [< / span > < span class = "s2" > " http://www.w3.org/ns/csvw" < / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "nt" > " @language" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " en" < / span > < span class = "p" > }],< / span >
< span class = "w" > < / span > < span class = "nt" > " url" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " events-listing.csv" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " dialect" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span > < span class = "nt" > " trim" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > },< / span >
< span class = "w" > < / span > < span class = "nt" > " tableSchema" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " columns" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > [{< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " name" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " titles" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " Name" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #event-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:name" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " start_date" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " titles" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " Start Date" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " datatype" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " base" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " datetime" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " format" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " yyyy-MM-ddTHH:mm" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #event-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:startDate" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " location_name" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " titles" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " Location Name" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #place-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:name" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " location_address" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " titles" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " Location Address" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #place-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:address" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " ticket_url" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " titles" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " Ticket Url" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " datatype" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " anyURI" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #offer-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:url" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " type_event" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " virtual" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #event-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " rdf:type" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " valueUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:MusicEvent" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " type_place" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " virtual" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #place-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " rdf:type" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " valueUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:Place" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " type_offer" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " virtual" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #offer-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " rdf:type" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " valueUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:Offer" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " location" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " virtual" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #event-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:location" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " valueUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #place-{_row}" < / span >
< span class = "w" > < / span > < span class = "p" > },< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< span class = "w" > < / span > < span class = "nt" > " name" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " offers" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " virtual" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "kc" > true< / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " aboutUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #event-{_row}" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " propertyUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " schema:offers" < / span > < span class = "p" > ,< / span >
< span class = "w" > < / span > < span class = "nt" > " valueUrl" < / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s2" > " #offer-{_row}" < / span >
< span class = "w" > < / span > < span class = "p" > }]< / span >
< span class = "w" > < / span > < span class = "p" > }< / span >
< span class = "p" > }< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
< p > One could imagine how this might generalize into multidimensional array data, but that immediately becomes pretty ridiculous - a better strategy in all cases that I can think of would be to just provide metadata about the array like the encoding, the sizes, types, etc. of their axes and indices and then link to the array.< / p >
< p > I’ ll just leave this example of encoding the pixels in one RGB video frame as a joke.< / p >
< div class = "highlight-turtle notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > vid:< / span > < span class = "w" > < / span > < span class = "nv" > < http://example.com/GodforsakenVideoSchema> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > xsd:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/2001/XMLSchema#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "k" > @prefix< / span > < span class = "w" > < / span > < span class = "nn" > rdf:< / span > < span class = "w" > < / span > < span class = "nv" > < http://www.w3.org/1999/02/22-rdf-syntax-ns#> < / span > < span class = "w" > < / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > myVideo< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > VideoGroup< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > video< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > Video< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < http://example.com/myVideo.mp4> < / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > frame< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > Frame< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > framenum< / span > < span class = "mi" > 1< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #frame=1> < / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "nv" > < #frame-1> < / span > < span class = "p" > ;< / span >
< span class = "p" > ],< / span > < span class = "p" > [< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > Frame< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > framenum< / span > < span class = "mi" > 2< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > url< / span > < span class = "nv" > < #frame=2> < / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > describes< / span > < span class = "nv" > < #frame-2> < / span > < span class = "p" > ;< / span >
< span class = "p" > ]< / span >
< span class = "p" > ]< / span > < span class = "p" > .< / span >
< span class = "nv" > < #frame-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > VideoFrame< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > timestamp< / span > < span class = "s" > " 2023-06-29T12:00:00" < / span > < span class = "p" > ^^< / span > < span class = "nn" > xsd< / span > < span class = "p" > :< / span > < span class = "nt" > dateTime< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > bitDepth< / span > < span class = "mi" > 8< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > width< / span > < span class = "mi" > 1920< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > height< / span > < span class = "mi" > 1080< / span > < span class = "p" > ;< / span >
< span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > channels< / span > < span class = "nv" > < #red-1> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #green-1> < / span > < span class = "p" > ,< / span > < span class = "nv" > < #blue-1> < / span > < span class = "p" > ;< / span >
< span class = "nv" > < #red-1> < / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > VideoChannel< / span > < span class = "p" > ;< / span >
< span class = "p" > :< / span > < span class = "nt" > pixel-1< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > pixelValue< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "mi" > 0< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "p" > :< / span > < span class = "nt" > pixel-2< / span > < span class = "p" > .< / span >
< span class = "p" > :< / span > < span class = "nt" > pixel-2< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > pixelValue< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "mi" > 46< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "p" > :< / span > < span class = "nt" > pixel-3< / span > < span class = "p" > .< / span >
< span class = "c" > # ...< / span >
< span class = "p" > :< / span > < span class = "nt" > pixel-2073600< / span > < span class = "kt" > a< / span > < span class = "nn" > vid< / span > < span class = "p" > :< / span > < span class = "nt" > pixelValue< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > first< / span > < span class = "mi" > 57< / span > < span class = "p" > ;< / span >
< span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > rest< / span > < span class = "nn" > rdf< / span > < span class = "p" > :< / span > < span class = "nt" > nil< / span > < span class = "p" > .< / span >
< / pre > < / div >
< / div >
< / section >
2023-06-28 04:35:44 +00:00
< section id = "naming" >
< h3 > Naming< a class = "headerlink" href = "#naming" title = "Permalink to this heading" > #< / a > < / h3 >
< ul class = "simple" >
< li > < p > All names have to be global. Relative names must resolve to a global name via contexts/prefixes. The alternative is blank nodes, which are treated as equivalent in eg. graph merges. Probably here enters pattern matching or whatever those things are called.< / p > < / li >
< li > < p > Blank nodes and skolemization < a class = "reference external" href = "https://www.w3.org/TR/rdf11-mt/#skolemization-informative" > https://www.w3.org/TR/rdf11-mt/#skolemization-informative< / a > < / p > < / li >
< / ul >
< / section >
< / section >
< section id = "references" >
< h2 > References< a class = "headerlink" href = "#references" title = "Permalink to this heading" > #< / a > < / h2 >
< ul class = "simple" >
< li > < p > < a class = "reference external" href = "https://www.w3.org/TR/rdf11-primer/" > RDF 1.1 Primer< / a > < / p > < / li >
2023-07-01 06:59:21 +00:00
< li > < p > W3C Recommendation on generating RDF from tabular data: < span id = "id3" > [< a class = "reference internal" href = "../../references.html#id18" title = "Jeremy Tandy, Ivan Herman, and Gregg Kellogg. Generating RDF from Tabular Data on the Web. 2015-12-17. URL: https://www.w3.org/TR/csv2rdf/ (visited on 2023-06-28)." > Tandy < em > et al.< / em > , 2015< / a > ]< / span > < / p >
< ul >
< li > < p > Tabular data model: < a class = "reference external" href = "https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#parsing" > https://www.w3.org/TR/2015/REC-tabular-data-model-20151217/#parsing< / a > < / p > < / li >
< li > < p > Metadata model: < a class = "reference external" href = "https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/" > https://www.w3.org/TR/2015/REC-tabular-metadata-20151217/< / a > < / p > < / li >
< / ul >
< / li >
2023-06-28 04:35:44 +00:00
< li > < p > < span class = "target" id = "index-4" > < / span > JSON Schema in RDF: < span id = "id4" > [< a class = "reference internal" href = "../../references.html#id2" title = "Victor Charpenay, Maxime Lefrançois, and María Poveda Villalón. JSON Schema in RDF. 2023-06-14. URL: https://www.w3.org/2019/wot/json-schema (visited on 2023-06-28)." > Charpenay < em > et al.< / em > , 2023< / a > ]< / span > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://www.w3.org/TR/rdf12-turtle/" > Turtle< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://www.w3.org/TR/swbp-n-aryRelations/" > N-ary relations in RDF< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://www.w3.org/TR/rdf11-mt/" > RDF 1.1 Semantics< / a > < / p > < / li >
< / ul >
< section id = "libraries" >
< h3 > Libraries< a class = "headerlink" href = "#libraries" title = "Permalink to this heading" > #< / a > < / h3 >
< ul class = "simple" >
< li > < p > < a class = "reference external" href = "https://github.com/digitalbazaar/jsonld.js" > jsonld.js< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://github.com/digitalbazaar/rdf-canonize-native" > rdf-canonize-native< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://github.com/biolink/biolink-model" > biolink-model< / a > for a nice example of generating multiple schema formats from a .yaml file.< / p > < / li >
2023-07-01 06:59:21 +00:00
< li > < p > < a class = "reference external" href = "https://linkml.io/" > linkml< / a > - modeling language for linked data < span id = "id5" > [< a class = "reference internal" href = "../../references.html#id11" title = "Sierra Moxon, Harold Solbrig, Deepak Unni, Dazhi Jiao, Richard Bruskiewich, James Balhoff, Gaurav Vaidya, William Duncan, Harshad Hegde, Mark Miller, Matthew Brush, Nomi Harris, Melissa Haendel, and Christopher Mungall. The linked data modeling language (linkml): a general-purpose data modeling framework grounded in machine-readable semantics. In CEUR Workshop Proceedings, volume 3073, 148– 151. CEUR-WS, 2021. URL: https://pure.johnshopkins.edu/en/publications/the-linked-data-modeling-language-linkml-a-general-purpose-data-m (visited on 2023-06-28)." > Moxon < em > et al.< / em > , 2021< / a > ]< / span > < / p >
2023-06-28 04:35:44 +00:00
< ul >
< li > < p > Multidimensional arrays in linkml < a class = "reference external" href = "https://linkml.io/linkml/howtos/multidimensional-arrays.html" > https://linkml.io/linkml/howtos/multidimensional-arrays.html< / a > < / p > < / li >
< / ul >
< / li >
< li > < p > < a class = "reference external" href = "https://incatools.github.io/ontology-access-kit/index.html" > oaklib< / a > - python package for managing ontologies< / p > < / li >
< li > < p > < a class = "reference external" href = "https://github.com/RDFLib/rdflib" > rdflib< / a > - maybe the canonical python rdf library< / p > < / li >
2023-07-01 06:59:21 +00:00
< li > < p > < a class = "reference external" href = "https://github.com/Swirrl/csv2rdf/" > csv2rdf< / a > < / p > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< / section >
< section id = "see-also" >
< h3 > See Also< a class = "headerlink" href = "#see-also" title = "Permalink to this heading" > #< / a > < / h3 >
< ul class = "simple" >
< li > < p > < a class = "reference external" href = "https://www.hydra-cg.com/spec/latest/core/" > HYDRA vocabulary< / a > - Linked Data plus REST< / p > < / li >
< li > < p > < a class = "reference external" href = "https://github.com/jmchandonia/CORAL" > CORAL< / a > < / p > < / li >
2023-07-01 06:59:21 +00:00
< li > < p > < a class = "reference external" href = "https://www.cs.ox.ac.uk/isg/challenges/sem-tab/" > SEMTAB< / a > - competition for mapping tabular data to RDF< / p > < / li >
< li > < p > < a class = "reference external" href = "https://www.ceur-ws.org/Vol-1272/paper_22.pdf" > SciSPARQL< / a > - an extension of SPARQL to include arrays.< / p > < / li >
< / ul >
< / section >
< section id = "example-datasets" >
< h3 > Example Datasets< a class = "headerlink" href = "#example-datasets" title = "Permalink to this heading" > #< / a > < / h3 >
< ul class = "simple" >
< li > < p > < a class = "reference external" href = "https://www.w3.org/wiki/DataSetRDFDumps" > RDF Data Dumps< / a > < / p > < / li >
< li > < p > < a class = "reference external" href = "https://download.bio2rdf.org" > bio2rdf< / a > < / p > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< / section >
< / section >
< / section >
< / article >
< / div >
< footer >
< div class = "related-pages" >
< a class = "next-page" href = "solid.html" >
< div class = "page-info" >
< div class = "context" >
< span > Next< / span >
< / div >
< div class = "title" > SOLID< / div >
< / div >
< svg class = "furo-related-icon" > < use href = "#svg-arrow-right" > < / use > < / svg >
< / a >
< a class = "prev-page" href = "index.html" >
< svg class = "furo-related-icon" > < use href = "#svg-arrow-right" > < / use > < / svg >
< div class = "page-info" >
< div class = "context" >
< span > Previous< / span >
< / div >
< div class = "title" > Linked Data< / div >
< / div >
< / a >
< / div >
< div class = "bottom-of-page" >
< div class = "left-details" >
< div class = "copyright" >
Copyright © 2023, Jonny Saunders
< / div >
Made with < a href = "https://www.sphinx-doc.org/" > Sphinx< / a > and < a class = "muted-link" href = "https://pradyunsg.me" > @pradyunsg< / a > 's
< a href = "https://github.com/pradyunsg/furo" > Furo< / a >
< / div >
< div class = "right-details" >
< / div >
< / div >
< / footer >
< / div >
< aside class = "toc-drawer" >
< div class = "toc-sticky toc-scroll" >
< div class = "toc-title-container" >
< span class = "toc-title" >
On this page
< / span >
< / div >
< div class = "toc-tree-container" >
< div class = "toc-tree" >
< ul >
< li > < a class = "reference internal" href = "#" > RDF and Friends< / a > < ul >
< li > < a class = "reference internal" href = "#id2" > RDF And Friends< / a > < ul >
< li > < a class = "reference internal" href = "#json-ld" > JSON-LD< / a > < / li >
< / ul >
< / li >
< li > < a class = "reference internal" href = "#challenges" > Challenges< / a > < ul >
2023-07-01 06:59:21 +00:00
< li > < a class = "reference internal" href = "#ordered-data" > Ordered Data< / a > < / li >
< li > < a class = "reference internal" href = "#tabular-data" > Tabular Data< / a > < / li >
2023-06-28 04:35:44 +00:00
< li > < a class = "reference internal" href = "#naming" > Naming< / a > < / li >
< / ul >
< / li >
< li > < a class = "reference internal" href = "#references" > References< / a > < ul >
< li > < a class = "reference internal" href = "#libraries" > Libraries< / a > < / li >
< li > < a class = "reference internal" href = "#see-also" > See Also< / a > < / li >
2023-07-01 06:59:21 +00:00
< li > < a class = "reference internal" href = "#example-datasets" > Example Datasets< / a > < / li >
2023-06-28 04:35:44 +00:00
< / ul >
< / li >
< / ul >
< / li >
< / ul >
< / div >
< / div >
< / div >
< / aside >
< / div >
< / div > < script data-url_root = "../../" id = "documentation_options" src = "../../_static/documentation_options.js" > < / script >
< script src = "../../_static/doctools.js" > < / script >
< script src = "../../_static/sphinx_highlight.js" > < / script >
< script src = "../../_static/scripts/furo.js" > < / script >
< script src = "../../_static/design-tabs.js" > < / script >
< script src = "https://unpkg.com/mermaid@10.2.0/dist/mermaid.min.js" > < / script >
< script >
mermaid.initialize({
"startOnLoad":true,
"theme": "dark"
})
< / script >
< / body >
< / html >