33
44import { resources } from '@/data/resources' ;
55import wikidataStats from '@/data/wikidataStats.json' ;
6+ import lastUpdatedMeta from '@/data/lastUpdated.json' ;
7+ import { permanentDoi } from '@/data/config' ;
68import WikidataIcon from '@/components/WikidataIcon' ;
79
810import { FaDownload , FaCode , FaCopy , FaCheck , FaChartBar , FaTable , FaDatabase , FaRobot , FaNetworkWired , FaBook } from 'react-icons/fa' ;
@@ -34,8 +36,71 @@ export default function DataPage() {
3436 setTimeout ( ( ) => setCopiedUrl ( null ) , 2500 ) ;
3537 } ;
3638
39+ const jsonLd = {
40+ "@context" : "https://schema.org/" ,
41+ "@type" : "Dataset" ,
42+ "name" : "Yourself to Science Open Dataset" ,
43+ "description" : "A curated, open-access catalog of services, platforms, and programs that allow individuals to securely contribute to scientific research with their biological and digital selves." ,
44+ "url" : "https://yourselftoscience.org/data" ,
45+ "sameAs" : "https://yourselftoscience.org/resources.ttl#dataset" ,
46+ "identifier" : [
47+ "https://yourselftoscience.org/resources.ttl#dataset" ,
48+ `https://doi.org/${ permanentDoi } `
49+ ] ,
50+ "keywords" : [
51+ "open dataset" ,
52+ "CC0 dataset" ,
53+ "public domain data" ,
54+ "science data" ,
55+ "clinical trials data" ,
56+ "citizen science dataset" ,
57+ "JSON API" ,
58+ "CSV download" ,
59+ "linked data" ,
60+ "research opportunities"
61+ ] ,
62+ "alternateName" : [
63+ "Yourself to Science Catalogue" ,
64+ "Yourself to Science Database"
65+ ] ,
66+ "creator" : {
67+ "@type" : "Organization" ,
68+ "name" : "Yourself to Science" ,
69+ "url" : "https://yourselftoscience.org" ,
70+ "contactPoint" : {
71+ "@type" : "ContactPoint" ,
72+ "contactType" : "public engagement" ,
73+ "email" : "hello@yourselftoscience.org"
74+ }
75+ } ,
76+ "license" : "https://creativecommons.org/publicdomain/zero/1.0/" ,
77+ "isAccessibleForFree" : true ,
78+ "dateModified" : lastUpdatedMeta . dateModified ,
79+ "distribution" : [
80+ {
81+ "@type" : "DataDownload" ,
82+ "encodingFormat" : "text/csv" ,
83+ "contentUrl" : "https://yourselftoscience.org/resources.csv"
84+ } ,
85+ {
86+ "@type" : "DataDownload" ,
87+ "encodingFormat" : "application/json" ,
88+ "contentUrl" : "https://yourselftoscience.org/resources.json"
89+ } ,
90+ {
91+ "@type" : "DataDownload" ,
92+ "encodingFormat" : "text/turtle" ,
93+ "contentUrl" : "https://yourselftoscience.org/resources.ttl"
94+ }
95+ ]
96+ } ;
97+
3798 return (
3899 < main className = "flex-grow w-full max-w-screen-xl mx-auto px-4 py-12 md:py-16" >
100+ < script
101+ type = "application/ld+json"
102+ dangerouslySetInnerHTML = { { __html : JSON . stringify ( jsonLd ) } }
103+ />
39104 < motion . div
40105 initial = { { opacity : 0 , y : - 20 } }
41106 animate = { { opacity : 1 , y : 0 } }
@@ -86,7 +151,7 @@ export default function DataPage() {
86151 </ motion . div >
87152 </ div >
88153
89- < section id = "data" className = "scroll-mt-32 space-y-24" >
154+ < section id = "data" className = "scroll-mt-40 space-y-24" >
90155 < div className = "text-center mb-12" >
91156 < h2 className = "text-3xl font-bold text-apple-primary-text mb-4" > Data Infrastructure</ h2 >
92157 < p className = "text-apple-secondary-text max-w-3xl mx-auto leading-relaxed" >
@@ -98,7 +163,7 @@ export default function DataPage() {
98163
99164
100165 { /* Tier 1: Enterprise */ }
101- < motion . div id = "enterprise" className = "scroll-mt-24 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
166+ < motion . div id = "enterprise" className = "scroll-mt-40 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
102167 < div className = "flex items-center gap-3 mb-6" >
103168 < FaDatabase className = "text-blue-600 text-2xl" />
104169 < h3 className = "text-xl font-bold text-gray-900 border-b border-gray-200 pb-2 flex-grow" > Relational & Structured Data </ h3 >
@@ -124,7 +189,7 @@ export default function DataPage() {
124189 </ motion . div >
125190
126191 { /* Tier 2: AI & LLM Data Feeds */ }
127- < motion . div id = "ai-feeds" className = "scroll-mt-24 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
192+ < motion . div id = "ai-feeds" className = "scroll-mt-40 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
128193 < div className = "flex items-center gap-3 mb-6" >
129194 < FaRobot className = "text-purple-600 text-2xl" />
130195 < h3 className = "text-xl font-bold text-gray-900 border-b border-gray-200 pb-2 flex-grow" > Machine-Readable Context (AI & LLM Modeling ) </ h3 >
@@ -163,7 +228,7 @@ export default function DataPage() {
163228 </ motion . div >
164229
165230 { /* Tier 3: Quantitative & Tabular Analysts */ }
166- < motion . div id = "quantitative" className = "scroll-mt-24 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
231+ < motion . div id = "quantitative" className = "scroll-mt-40 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
167232 < div className = "flex items-center gap-3 mb-6" >
168233 < FaTable className = "text-green-600 text-2xl" />
169234 < h3 className = "text-xl font-bold text-gray-900 border-b border-gray-200 pb-2 flex-grow" > Tabular Datasets & JSON Endpoints </ h3 >
@@ -200,7 +265,7 @@ export default function DataPage() {
200265 </ motion . div >
201266
202267 { /* Tier 4: Semantic Web & Knowledge Graphs */ }
203- < motion . div id = "semantic" className = "scroll-mt-24 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
268+ < motion . div id = "semantic" className = "scroll-mt-40 " initial = { { opacity : 0 , y : 20 } } whileInView = { { opacity : 1 , y : 0 } } viewport = { { once : true } } >
204269 < div className = "flex items-center gap-3 mb-6" >
205270 < FaNetworkWired className = "text-orange-600 text-2xl" />
206271 < h3 className = "text-xl font-bold text-gray-900 border-b border-gray-200 pb-2 flex-grow" > Linked Data & Semantic Mapping </ h3 >
0 commit comments