@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema1: <http://schema.org/> .
@prefix sm: <https://moderndata101.substack.com/p/the-semantic-medallion#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

sm:AuditRecord a rdfs:Class,
        owl:Class ;
    rdfs:label "AuditRecord"@en ;
    schema1:description "An audit record that is compliance-related."@en ;
    schema1:name "AuditRecord"@en ;
    rdfs:comment "An audit record that is compliance-related."@en ;
    rdfs:isDefinedBy sm: ;
    rdfs:subClassOf sm:ComplianceRelated .

sm:BillingAccount a rdfs:Class,
        owl:Class ;
    rdfs:label "BillingAccount"@en ;
    schema1:description "A billing account associated with a customer."@en ;
    schema1:name "BillingAccount"@en ;
    rdfs:comment "A billing account associated with a customer."@en ;
    rdfs:isDefinedBy sm: .

sm:CatalogCapability a rdfs:Class,
        owl:Class ;
    rdfs:label "CatalogCapability"@en ;
    schema1:description "A semantic catalog capability enabled by the knowledge graph."@en ;
    schema1:name "CatalogCapability"@en ;
    rdfs:comment "A semantic catalog capability enabled by the knowledge graph."@en ;
    rdfs:isDefinedBy sm: .

sm:ComplianceOfficer a rdfs:Class,
        owl:Class ;
    rdfs:label "ComplianceOfficer"@en ;
    schema1:description "A person or role responsible for compliance work."@en ;
    schema1:name "ComplianceOfficer"@en ;
    rdfs:comment "A person or role responsible for compliance work."@en ;
    rdfs:isDefinedBy sm: ;
    rdfs:subClassOf sm:ComplianceRelated .

sm:ComplianceRelated a rdfs:Class,
        owl:Class ;
    rdfs:label "ComplianceRelated"@en ;
    schema1:description "A superclass for compliance-related catalog entities."@en ;
    schema1:name "ComplianceRelated"@en ;
    rdfs:comment "A superclass for compliance-related catalog entities."@en ;
    rdfs:isDefinedBy sm: .

sm:Contract a rdfs:Class,
        owl:Class ;
    rdfs:label "Contract"@en ;
    schema1:description "A contractual relationship or agreement involving a customer."@en ;
    schema1:name "Contract"@en ;
    rdfs:comment "A contractual relationship or agreement involving a customer."@en ;
    rdfs:isDefinedBy sm: .

sm:Customer a rdfs:Class,
        owl:Class ;
    rdfs:label "Customer"@en ;
    schema1:description "A harmonized customer entity identified by a stable IRI."@en ;
    schema1:name "Customer"@en ;
    rdfs:comment "A harmonized customer entity identified by a stable IRI."@en ;
    rdfs:isDefinedBy sm: .

sm:DataSource a rdfs:Class,
        owl:Class ;
    rdfs:label "DataSource"@en ;
    schema1:description "A source system or dataset feeding the medallion architecture."@en ;
    schema1:name "DataSource"@en ;
    rdfs:comment "A source system or dataset feeding the medallion architecture."@en ;
    rdfs:isDefinedBy sm: .

sm:ExternalRegistry a rdfs:Class,
        owl:Class ;
    rdfs:label "ExternalRegistry"@en ;
    schema1:description "An external registry that contributes entity identity or enrichment data."@en ;
    schema1:name "ExternalRegistry"@en ;
    rdfs:comment "An external registry that contributes entity identity or enrichment data."@en ;
    rdfs:isDefinedBy sm: .

sm:HarmonizationActivity a rdfs:Class,
        owl:Class ;
    rdfs:label "HarmonizationActivity"@en ;
    schema1:description "A data transformation activity that maps structured data into RDF."@en ;
    schema1:name "HarmonizationActivity"@en ;
    rdfs:comment "A data transformation activity that maps structured data into RDF."@en ;
    rdfs:isDefinedBy sm: .

sm:MedallionLayer a rdfs:Class,
        owl:Class ;
    rdfs:label "MedallionLayer"@en ;
    schema1:description "A Bronze, Silver, or Gold layer in a medallion architecture."@en ;
    schema1:name "MedallionLayer"@en ;
    rdfs:comment "A Bronze, Silver, or Gold layer in a medallion architecture."@en ;
    rdfs:isDefinedBy sm: .

sm:RegulatoryFiling a rdfs:Class,
        owl:Class ;
    rdfs:label "RegulatoryFiling"@en ;
    schema1:description "A regulatory filing that is compliance-related."@en ;
    schema1:name "RegulatoryFiling"@en ;
    rdfs:comment "A regulatory filing that is compliance-related."@en ;
    rdfs:isDefinedBy sm: ;
    rdfs:subClassOf sm:ComplianceRelated .

sm:answerPattern a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "answerPattern"@en ;
    schema1:description "Stores the query or traversal pattern used to answer a catalog question."@en ;
    schema1:name "answerPattern"@en ;
    rdfs:comment "Stores the query or traversal pattern used to answer a catalog question."@en ;
    rdfs:isDefinedBy sm: .

sm:catalogQuestion a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "catalogQuestion"@en ;
    schema1:description "Stores a question that the graph-powered catalog can answer."@en ;
    schema1:name "catalogQuestion"@en ;
    rdfs:comment "Stores a question that the graph-powered catalog can answer."@en ;
    rdfs:isDefinedBy sm: .

sm:contributesRecord a rdf:Property,
        owl:ObjectProperty ;
    rdfs:label "contributesRecord"@en ;
    schema1:description "Indicates that a data source contributes a record to the catalog."@en ;
    schema1:name "contributesRecord"@en ;
    rdfs:comment "Indicates that a data source contributes a record to the catalog."@en ;
    rdfs:isDefinedBy sm: .

sm:dependsOn a rdf:Property,
        owl:ObjectProperty ;
    rdfs:label "dependsOn"@en ;
    schema1:description "Connects a downstream catalog object to an upstream dependency."@en ;
    schema1:name "dependsOn"@en ;
    rdfs:comment "Connects a downstream catalog object to an upstream dependency."@en ;
    rdfs:isDefinedBy sm: .

sm:email a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "email"@en ;
    schema1:description "Local email property used in executable examples."@en ;
    schema1:name "email"@en ;
    rdfs:comment "Local email property used in executable examples."@en ;
    rdfs:isDefinedBy sm: .

sm:hasBillingAccount a rdf:Property,
        owl:ObjectProperty ;
    rdfs:label "hasBillingAccount"@en ;
    schema1:description "Connects a customer to a billing account."@en ;
    schema1:name "hasBillingAccount"@en ;
    rdfs:comment "Connects a customer to a billing account."@en ;
    rdfs:isDefinedBy sm: .

sm:hasContract a rdf:Property,
        owl:ObjectProperty ;
    rdfs:label "hasContract"@en ;
    schema1:description "Connects a customer to a contract."@en ;
    schema1:name "hasContract"@en ;
    rdfs:comment "Connects a customer to a contract."@en ;
    rdfs:isDefinedBy sm: .

sm:name a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "name"@en ;
    schema1:description "Local name property used in executable examples."@en ;
    schema1:name "name"@en ;
    rdfs:comment "Local name property used in executable examples."@en ;
    rdfs:isDefinedBy sm: .

sm:outstandingBalance a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "outstandingBalance"@en ;
    schema1:description "Records the unpaid balance on a billing account."@en ;
    schema1:name "outstandingBalance"@en ;
    rdfs:comment "Records the unpaid balance on a billing account."@en ;
    rdfs:isDefinedBy sm: .

sm:paymentMethod a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "paymentMethod"@en ;
    schema1:description "Records a billing account payment method."@en ;
    schema1:name "paymentMethod"@en ;
    rdfs:comment "Records a billing account payment method."@en ;
    rdfs:isDefinedBy sm: .

sm:registeredIn a rdf:Property,
        owl:ObjectProperty ;
    rdfs:label "registeredIn"@en ;
    schema1:description "Connects an entity to an external registry record."@en ;
    schema1:name "registeredIn"@en ;
    rdfs:comment "Connects an entity to an external registry record."@en ;
    rdfs:isDefinedBy sm: .

sm:semanticMedallionCatalog a schema1:DataCatalog,
        dcat:Catalog ;
    rdfs:label "Semantic Medallion catalog"@en ;
    schema1:description "DCAT catalog describing the generated customer knowledge graph."@en ;
    schema1:name "Semantic Medallion catalog"@en ;
    rdfs:comment "DCAT catalog describing the generated customer knowledge graph."@en ;
    dcat:dataset sm:dataset-customers .

sm:sourceId a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "sourceId"@en ;
    schema1:description "Records the source-local identifier captured in the Silver layer."@en ;
    schema1:name "sourceId"@en ;
    rdfs:comment "Records the source-local identifier captured in the Silver layer."@en ;
    rdfs:isDefinedBy sm: .

sm:sourceSystem a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "sourceSystem"@en ;
    schema1:description "Connects an entity to its originating source system."@en ;
    schema1:name "sourceSystem"@en ;
    rdfs:comment "Connects an entity to its originating source system."@en ;
    rdfs:isDefinedBy sm: .

sm:status a rdf:Property,
        owl:DatatypeProperty ;
    rdfs:label "status"@en ;
    schema1:description "Records a contract or operational status."@en ;
    schema1:name "status"@en ;
    rdfs:comment "Records a contract or operational status."@en ;
    rdfs:isDefinedBy sm: .

sm:a1 a schema1:Answer ;
    rdfs:label "Answer 1"@en ;
    schema1:description "It is a medallion architecture pattern where the Gold layer is published as a connected RDF knowledge graph."@en ;
    schema1:name "Answer 1"@en ;
    rdfs:comment "It is a medallion architecture pattern where the Gold layer is published as a connected RDF knowledge graph."@en .

sm:a10 a schema1:Answer ;
    rdfs:label "Answer 10"@en ;
    schema1:description "The article emphasizes that stable identifier design should begin early."@en ;
    schema1:name "Answer 10"@en ;
    rdfs:comment "The article emphasizes that stable identifier design should begin early."@en .

sm:a2 a schema1:Answer ;
    rdfs:label "Answer 2"@en ;
    schema1:description "Stable IRIs give records durable identifiers that can connect data across source systems."@en ;
    schema1:name "Answer 2"@en ;
    rdfs:comment "Stable IRIs give records durable identifiers that can connect data across source systems."@en .

sm:a3 a schema1:Answer ;
    rdfs:label "Answer 3"@en ;
    schema1:description "Gold changes from clean joined tables into harmonized RDF mapped to a shared ontology."@en ;
    schema1:name "Answer 3"@en ;
    rdfs:comment "Gold changes from clean joined tables into harmonized RDF mapped to a shared ontology."@en .

sm:a4 a schema1:Answer ;
    rdfs:label "Answer 4"@en ;
    schema1:description "The catalog can answer semantic relationship questions directly instead of only listing tables and columns."@en ;
    schema1:name "Answer 4"@en ;
    rdfs:comment "The catalog can answer semantic relationship questions directly instead of only listing tables and columns."@en .

sm:a5 a schema1:Answer ;
    rdfs:label "Answer 5"@en ;
    schema1:description "DCAT standardizes catalog, dataset, distribution, and service metadata in RDF."@en ;
    schema1:name "Answer 5"@en ;
    rdfs:comment "DCAT standardizes catalog, dataset, distribution, and service metadata in RDF."@en .

sm:a6 a schema1:Answer ;
    rdfs:label "Answer 6"@en ;
    schema1:description "PROV-O links generated datasets to source datasets and harmonization activities."@en ;
    schema1:name "Answer 6"@en ;
    rdfs:comment "PROV-O links generated datasets to source datasets and harmonization activities."@en .

sm:a7 a schema1:Answer ;
    rdfs:label "Answer 7"@en ;
    schema1:description "It maps structured DataFrames through templates into RDF triples."@en ;
    schema1:name "Answer 7"@en ;
    rdfs:comment "It maps structured DataFrames through templates into RDF triples."@en .

sm:a8 a schema1:Answer ;
    rdfs:label "Answer 8"@en ;
    schema1:description "SPARQL queries both the business data and the catalog metadata in the same graph model."@en ;
    schema1:name "Answer 8"@en ;
    rdfs:comment "SPARQL queries both the business data and the catalog metadata in the same graph model."@en .

sm:a9 a schema1:Answer ;
    rdfs:label "Answer 9"@en ;
    schema1:description "Multiple source records can be linked to one entity using stable IRIs and equivalence relationships."@en ;
    schema1:name "Answer 9"@en ;
    rdfs:comment "Multiple source records can be linked to one entity using stable IRIs and equivalence relationships."@en .

sm:activity-customer-harmonization a prov:Activity,
        sm:HarmonizationActivity ;
    rdfs:label "Customer harmonization"@en ;
    schema1:description "Representative activity that maps Silver customer DataFrames to Gold RDF."@en ;
    schema1:name "Customer harmonization"@en ;
    rdfs:comment "Representative activity that maps Silver customer DataFrames to Gold RDF."@en .

sm:billing-B-001 a sm:BillingAccount ;
    rdfs:label "Billing B 001"@en ;
    schema1:accountId "B-001" ;
    schema1:description "Representative billing account instance."@en ;
    schema1:name "Billing B 001"@en ;
    rdfs:comment "Representative billing account instance."@en ;
    sm:outstandingBalance 250.0 ;
    sm:paymentMethod "Credit Card" .

sm:billing-B-002 a sm:BillingAccount ;
    rdfs:label "Billing B 002"@en ;
    schema1:accountId "B-002" ;
    schema1:description "Representative billing account instance."@en ;
    schema1:name "Billing B 002"@en ;
    rdfs:comment "Representative billing account instance."@en ;
    sm:outstandingBalance 0.0 ;
    sm:paymentMethod "Credit Card" .

sm:billing-B-003 a sm:BillingAccount ;
    rdfs:label "Billing B 003"@en ;
    schema1:accountId "B-003" ;
    schema1:description "Representative billing account instance."@en ;
    schema1:name "Billing B 003"@en ;
    rdfs:comment "Representative billing account instance."@en ;
    sm:outstandingBalance 82.75 ;
    sm:paymentMethod "Credit Card" .

sm:billingSystem a schema1:DataFeed,
        sm:DataSource ;
    rdfs:label "Billing"@en ;
    schema1:description "Billing platform"@en ;
    schema1:identifier "billing-extract" ;
    schema1:isPartOf sm:overviewSection ;
    schema1:name "Billing"@en ;
    rdfs:comment "Billing platform"@en .

sm:capabilitiesSection a schema1:ArticleSection ;
    rdfs:label "Catalog capabilities"@en ;
    schema1:description "Entity resolution, semantic search, and impact analysis capabilities gained from graph-backed catalog data."@en ;
    schema1:isPartOf sm:article ;
    schema1:name "Catalog capabilities"@en ;
    rdfs:comment "Entity resolution, semantic search, and impact analysis capabilities gained from graph-backed catalog data."@en .

sm:codexDesktopEnvironment a schema1:SoftwareApplication ;
    rdfs:label "Codex desktop"@en ;
    schema1:description "Local coding environment used for artifact generation and validation."@en ;
    schema1:name "Codex desktop"@en ;
    schema1:url <https://openai.com/codex/> ;
    rdfs:comment "Local coding environment used for artifact generation and validation."@en .

sm:contract-K-2024-001 a sm:Contract ;
    rdfs:label "Contract K 2024 001"@en ;
    schema1:description "Representative contract instance."@en ;
    schema1:name "Contract K 2024 001"@en ;
    rdfs:comment "Representative contract instance."@en ;
    sm:status "Active" .

sm:contract-K-2024-002 a sm:Contract ;
    rdfs:label "Contract K 2024 002"@en ;
    schema1:description "Representative contract instance."@en ;
    schema1:name "Contract K 2024 002"@en ;
    rdfs:comment "Representative contract instance."@en ;
    sm:status "Expired" .

sm:contract-K-2024-003 a sm:Contract ;
    rdfs:label "Contract K 2024 003"@en ;
    schema1:description "Representative contract instance."@en ;
    schema1:name "Contract K 2024 003"@en ;
    rdfs:comment "Representative contract instance."@en ;
    sm:status "Active" .

sm:crmSystem a schema1:DataFeed,
        sm:DataSource ;
    rdfs:label "CRM"@en ;
    schema1:description "Customer relationship management system"@en ;
    schema1:identifier "crm-export" ;
    schema1:isPartOf sm:overviewSection ;
    schema1:name "CRM"@en ;
    rdfs:comment "Customer relationship management system"@en .

sm:customer-C-001 a schema1:Person,
        sm:Customer ;
    rdfs:label "Alice Johnson"@en ;
    schema1:description "Representative customer instance used by the executable SPARQL examples."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Alice Johnson"@en ;
    rdfs:comment "Representative customer instance used by the executable SPARQL examples."@en ;
    owl:sameAs sm:billing-account-holder-12345,
        sm:external-registry-company-67890 ;
    sm:email "alice@example.com" ;
    sm:hasBillingAccount sm:billing-B-001 ;
    sm:hasContract sm:contract-K-2024-001 ;
    sm:name "Alice Johnson" ;
    sm:registeredIn sm:registry-company-12345 ;
    sm:sourceId "CRM-12345" ;
    sm:sourceSystem "CRM" .

sm:customer-C-002 a schema1:Person,
        sm:Customer ;
    rdfs:label "Bob Smith"@en ;
    schema1:description "Representative customer instance used by the executable SPARQL examples."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Bob Smith"@en ;
    rdfs:comment "Representative customer instance used by the executable SPARQL examples."@en ;
    sm:email "bob@example.com" ;
    sm:hasBillingAccount sm:billing-B-002 ;
    sm:hasContract sm:contract-K-2024-002 ;
    sm:name "Bob Smith" ;
    sm:registeredIn sm:registry-company-67890 ;
    sm:sourceId "CRM-12346" ;
    sm:sourceSystem "CRM" .

sm:customer-C-003 a schema1:Person,
        sm:Customer ;
    rdfs:label "Carla Nguyen"@en ;
    schema1:description "Representative customer instance used by the executable SPARQL examples."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Carla Nguyen"@en ;
    rdfs:comment "Representative customer instance used by the executable SPARQL examples."@en ;
    sm:email "carla@example.com" ;
    sm:hasBillingAccount sm:billing-B-003 ;
    sm:hasContract sm:contract-K-2024-003 ;
    sm:name "Carla Nguyen" ;
    sm:registeredIn sm:registry-company-34567 ;
    sm:sourceId "REG-34567" ;
    sm:sourceSystem "External Registry" .

sm:dataset-customers a schema1:Dataset,
        dcat:Dataset ;
    rdfs:label "Customer Master Data"@en ;
    dct:description "Unified customer records from CRM, billing, and registry"@en ;
    dct:issued "2024-01-15"^^xsd:date ;
    dct:modified "2024-04-20"^^xsd:date ;
    dct:publisher sm:dataTeam ;
    dct:title "Customer Master Data"@en ;
    schema1:description "Unified customer records from CRM, billing, and registry."@en ;
    schema1:name "Customer Master Data"@en ;
    rdfs:comment "Unified customer records from CRM, billing, and registry."@en ;
    dcat:distribution sm:dataset-customers-parquet,
        sm:dataset-customers-sparql ;
    dcat:theme <http://publications.europa.eu/resource/authority/data-theme/ECON> ;
    prov:wasDerivedFrom sm:dataset-billing-extract,
        sm:dataset-crm-export ;
    prov:wasGeneratedBy sm:activity-customer-harmonization .

sm:dataset-customers-parquet a dcat:Distribution ;
    rdfs:label "Customer parquet distribution"@en ;
    dct:format "application/vnd.apache.parquet" ;
    schema1:description "Distribution for Customer parquet distribution."@en ;
    schema1:name "Customer parquet distribution"@en ;
    rdfs:comment "Distribution for Customer parquet distribution."@en ;
    dcat:downloadURL sm:silver-customers-parquet .

sm:dataset-customers-sparql a dcat:Distribution ;
    rdfs:label "Customer graph SPARQL distribution"@en ;
    dct:format "application/sparql-query" ;
    schema1:description "Distribution for Customer graph SPARQL distribution."@en ;
    schema1:name "Customer graph SPARQL distribution"@en ;
    rdfs:comment "Distribution for Customer graph SPARQL distribution."@en ;
    dcat:accessURL <https://linkeddata.uriburner.com/sparql> .

sm:dcatConcept a schema1:DefinedTerm ;
    rdfs:label "DCAT"@en ;
    schema1:description "The W3C Data Catalog Vocabulary used to describe catalogs, datasets, distributions, and data services."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "DCAT"@en ;
    rdfs:comment "The W3C Data Catalog Vocabulary used to describe catalogs, datasets, distributions, and data services."@en .

sm:dcatSection a schema1:ArticleSection ;
    rdfs:label "DCAT catalog layer"@en ;
    schema1:about <http://dbpedia.org/resource/Data_Catalog_Vocabulary> ;
    schema1:description "Dataset, distribution, and provenance metadata modeled with DCAT and PROV-O."@en ;
    schema1:isPartOf sm:article ;
    schema1:name "DCAT catalog layer"@en ;
    rdfs:comment "Dataset, distribution, and provenance metadata modeled with DCAT and PROV-O."@en .

sm:externalRegistry a schema1:DataFeed,
        sm:DataSource ;
    rdfs:label "External Registry"@en ;
    schema1:description "External company registry"@en ;
    schema1:identifier "registry-snapshot" ;
    schema1:isPartOf sm:overviewSection ;
    schema1:name "External Registry"@en ;
    rdfs:comment "External company registry"@en .

sm:faq a schema1:FAQPage ;
    rdfs:label "Semantic Medallion FAQ"@en ;
    schema1:description "Questions and answers generated from the article."@en ;
    schema1:mainEntity sm:q1,
        sm:q10,
        sm:q2,
        sm:q3,
        sm:q4,
        sm:q5,
        sm:q6,
        sm:q7,
        sm:q8,
        sm:q9 ;
    schema1:name "Semantic Medallion FAQ"@en ;
    rdfs:comment "Questions and answers generated from the article."@en .

sm:goldGraphLayer a schema1:CreativeWork,
        sm:MedallionLayer ;
    rdfs:label "Gold Graph"@en ;
    schema1:description "Harmonized RDF graph mapped to a shared ontology and published for SPARQL queries."@en ;
    schema1:isPartOf sm:architectureSection ;
    schema1:name "Gold Graph"@en ;
    rdfs:comment "Harmonized RDF graph mapped to a shared ontology and published for SPARQL queries."@en ;
    sm:dependsOn sm:silverLayer .

sm:gpt5ChatInterface a schema1:SoftwareApplication ;
    rdfs:label "GPT-5 Chat"@en ;
    schema1:description "Language model environment used to generate this artifact set."@en ;
    schema1:name "GPT-5 Chat"@en ;
    schema1:url <https://openai.com/> ;
    rdfs:comment "Language model environment used to generate this artifact set."@en .

sm:howto a schema1:HowTo ;
    rdfs:label "Build a Semantic Medallion catalog"@en ;
    schema1:description "Practical workflow implied by the article."@en ;
    schema1:name "Build a Semantic Medallion catalog"@en ;
    schema1:step sm:step1,
        sm:step2,
        sm:step3,
        sm:step4,
        sm:step5,
        sm:step6 ;
    rdfs:comment "Practical workflow implied by the article."@en .

sm:iriMintingConcept a schema1:DefinedTerm ;
    rdfs:label "IRI minting"@en ;
    schema1:description "The practice of assigning stable, globally unique identifiers to entities during the Silver layer."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "IRI minting"@en ;
    rdfs:comment "The practice of assigning stable, globally unique identifiers to entities during the Silver layer."@en .

sm:kgGeneratorSkill a schema1:SoftwareApplication ;
    rdfs:label "kg-generator skill"@en ;
    schema1:description "Generated the RDF knowledge graph and compliance model."@en ;
    schema1:name "kg-generator skill"@en ;
    schema1:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/kg-generator> ;
    rdfs:comment "Generated the RDF knowledge graph and compliance model."@en .

sm:maplibConcept a schema1:DefinedTerm ;
    rdfs:label "maplib"@en ;
    schema1:description "Python mapping library used in the article to transform DataFrames into RDF."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "maplib"@en ;
    rdfs:comment "Python mapping library used in the article to transform DataFrames into RDF."@en .

sm:modernData101 a schema1:Organization ;
    rdfs:label "Modern Data 101"@en ;
    schema1:description "Publisher of the article and curator of Modern Data topics."@en ;
    schema1:name "Modern Data 101"@en ;
    schema1:url <https://moderndata101.substack.com> ;
    rdfs:comment "Publisher of the article and curator of Modern Data topics."@en .

sm:ottrConcept a schema1:DefinedTerm ;
    rdfs:label "OTTR templates"@en ;
    schema1:description "Reusable template definitions for mapping tabular rows into RDF triples."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "OTTR templates"@en ;
    rdfs:comment "Reusable template definitions for mapping tabular rows into RDF triples."@en .

sm:provConcept a schema1:DefinedTerm ;
    rdfs:label "PROV-O"@en ;
    schema1:description "The W3C provenance ontology used to trace derivation and generation activities."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "PROV-O"@en ;
    rdfs:comment "The W3C provenance ontology used to trace derivation and generation activities."@en .

sm:q1 a schema1:Question ;
    rdfs:label "What is the Semantic Medallion?"@en ;
    schema1:acceptedAnswer sm:a1 ;
    schema1:name "What is the Semantic Medallion?"@en .

sm:q10 a schema1:Question ;
    rdfs:label "What is the key implementation risk?"@en ;
    schema1:acceptedAnswer sm:a10 ;
    schema1:name "What is the key implementation risk?"@en .

sm:q2 a schema1:Question ;
    rdfs:label "Why mint IRIs in the Silver layer?"@en ;
    schema1:acceptedAnswer sm:a2 ;
    schema1:name "Why mint IRIs in the Silver layer?"@en .

sm:q3 a schema1:Question ;
    rdfs:label "What changes in the Gold layer?"@en ;
    schema1:acceptedAnswer sm:a3 ;
    schema1:name "What changes in the Gold layer?"@en .

sm:q4 a schema1:Question ;
    rdfs:label "Why does this help data catalogs?"@en ;
    schema1:acceptedAnswer sm:a4 ;
    schema1:name "Why does this help data catalogs?"@en .

sm:q5 a schema1:Question ;
    rdfs:label "What role does DCAT play?"@en ;
    schema1:acceptedAnswer sm:a5 ;
    schema1:name "What role does DCAT play?"@en .

sm:q6 a schema1:Question ;
    rdfs:label "How is provenance represented?"@en ;
    schema1:acceptedAnswer sm:a6 ;
    schema1:name "How is provenance represented?"@en .

sm:q7 a schema1:Question ;
    rdfs:label "What does maplib do?"@en ;
    schema1:acceptedAnswer sm:a7 ;
    schema1:name "What does maplib do?"@en .

sm:q8 a schema1:Question ;
    rdfs:label "Why is SPARQL important here?"@en ;
    schema1:acceptedAnswer sm:a8 ;
    schema1:name "Why is SPARQL important here?"@en .

sm:q9 a schema1:Question ;
    rdfs:label "What is entity resolution in this architecture?"@en ;
    schema1:acceptedAnswer sm:a9 ;
    schema1:name "What is entity resolution in this architecture?"@en .

sm:query-active-contract-billing-issues a schema1:CreativeWork,
        schema1:SoftwareSourceCode ;
    rdfs:label "Find customers with billing issues and active contracts"@en ;
    schema1:codeSampleType "Executable SPARQL query adapted from article example" ;
    schema1:description "Source image query selected customers with active contracts and balances greater than zero."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Find customers with billing issues and active contracts"@en ;
    schema1:potentialAction sm:query-active-contract-billing-issues-runAction ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target sm:uriBurnerSparqlEndpoint ;
    schema1:text """PREFIX sm: <https://moderndata101.substack.com/p/the-semantic-medallion#>
SELECT ?customer ?name ?balance ?contractStatus
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/semantic-medallion-gpt5-chat-1.ttl> {
    ?customer a sm:Customer ;
      sm:name ?name ;
      sm:hasBillingAccount ?account ;
      sm:hasContract ?contract .
    ?account sm:outstandingBalance ?balance .
    ?contract sm:status ?contractStatus .
    FILTER(?contractStatus = "Active" && ?balance > 0)
  }
}""" ;
    rdfs:comment "Source image query selected customers with active contracts and balances greater than zero."@en .

sm:query-active-contract-billing-issues-runAction a schema1:SearchAction ;
    rdfs:label "Run live query"@en ;
    schema1:description "URL-encoded live query action for URIBurner SPARQL."@en ;
    schema1:name "Run live query"@en ;
    schema1:target <https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20sm%3A%20%3Chttps%3A%2F%2Fmoderndata101.substack.com%2Fp%2Fthe-semantic-medallion%23%3E%0ASELECT%20%3Fcustomer%20%3Fname%20%3Fbalance%20%3FcontractStatus%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Fsemantic-medallion-gpt5-chat-1.ttl%3E%20%7B%0A%20%20%20%20%3Fcustomer%20a%20sm%3ACustomer%20%3B%0A%20%20%20%20%20%20sm%3Aname%20%3Fname%20%3B%0A%20%20%20%20%20%20sm%3AhasBillingAccount%20%3Faccount%20%3B%0A%20%20%20%20%20%20sm%3AhasContract%20%3Fcontract%20.%0A%20%20%20%20%3Faccount%20sm%3AoutstandingBalance%20%3Fbalance%20.%0A%20%20%20%20%3Fcontract%20sm%3Astatus%20%3FcontractStatus%20.%0A%20%20%20%20FILTER%28%3FcontractStatus%20%3D%20%22Active%22%20%26%26%20%3Fbalance%20%3E%200%29%0A%20%20%7D%0A%7D&format=text%2Fhtml&timeout=0&debug=on&run=+Run+Query+> ;
    rdfs:comment "URL-encoded live query action for URIBurner SPARQL."@en .

sm:query-customer-datasets a schema1:CreativeWork,
        schema1:SoftwareSourceCode ;
    rdfs:label "Find datasets that contain customer information"@en ;
    schema1:codeSampleType "Executable SPARQL query adapted from article example" ;
    schema1:description "Source image query used DCAT distribution metadata and customer instances to discover datasets."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Find datasets that contain customer information"@en ;
    schema1:potentialAction sm:query-customer-datasets-runAction ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target sm:uriBurnerSparqlEndpoint ;
    schema1:text """PREFIX sm: <https://moderndata101.substack.com/p/the-semantic-medallion#>
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?dataset ?title
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/semantic-medallion-gpt5-chat-1.ttl> {
    ?dataset a dcat:Dataset ;
      dct:title ?title ;
      dcat:distribution ?dist .
    ?dist dcat:accessURL ?endpoint .
    ?customer a sm:Customer .
  }
}""" ;
    rdfs:comment "Source image query used DCAT distribution metadata and customer instances to discover datasets."@en .

sm:query-customer-datasets-runAction a schema1:SearchAction ;
    rdfs:label "Run live query"@en ;
    schema1:description "URL-encoded live query action for URIBurner SPARQL."@en ;
    schema1:name "Run live query"@en ;
    schema1:target <https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20sm%3A%20%3Chttps%3A%2F%2Fmoderndata101.substack.com%2Fp%2Fthe-semantic-medallion%23%3E%0APREFIX%20dcat%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23%3E%0APREFIX%20dct%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E%0ASELECT%20%3Fdataset%20%3Ftitle%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Fsemantic-medallion-gpt5-chat-1.ttl%3E%20%7B%0A%20%20%20%20%3Fdataset%20a%20dcat%3ADataset%20%3B%0A%20%20%20%20%20%20dct%3Atitle%20%3Ftitle%20%3B%0A%20%20%20%20%20%20dcat%3Adistribution%20%3Fdist%20.%0A%20%20%20%20%3Fdist%20dcat%3AaccessURL%20%3Fendpoint%20.%0A%20%20%20%20%3Fcustomer%20a%20sm%3ACustomer%20.%0A%20%20%7D%0A%7D&format=text%2Fhtml&timeout=0&debug=on&run=+Run+Query+> ;
    rdfs:comment "URL-encoded live query action for URIBurner SPARQL."@en .

sm:query-customer-properties a schema1:CreativeWork,
        schema1:SoftwareSourceCode ;
    rdfs:label "Show every property and value about customer C-001"@en ;
    schema1:codeSampleType "Executable SPARQL query adapted from article example" ;
    schema1:description "Source image query used <https://example.org/customer/C-001> ?property ?value."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Show every property and value about customer C-001"@en ;
    schema1:potentialAction sm:query-customer-properties-runAction ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target sm:uriBurnerSparqlEndpoint ;
    schema1:text """PREFIX sm: <https://moderndata101.substack.com/p/the-semantic-medallion#>
SELECT ?property ?value
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/semantic-medallion-gpt5-chat-1.ttl> {
    sm:customer-C-001 ?property ?value .
  }
}""" ;
    rdfs:comment "Source image query used <https://example.org/customer/C-001> ?property ?value."@en .

sm:query-customer-properties-runAction a schema1:SearchAction ;
    rdfs:label "Run live query"@en ;
    schema1:description "URL-encoded live query action for URIBurner SPARQL."@en ;
    schema1:name "Run live query"@en ;
    schema1:target <https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20sm%3A%20%3Chttps%3A%2F%2Fmoderndata101.substack.com%2Fp%2Fthe-semantic-medallion%23%3E%0ASELECT%20%3Fproperty%20%3Fvalue%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Fsemantic-medallion-gpt5-chat-1.ttl%3E%20%7B%0A%20%20%20%20sm%3Acustomer-C-001%20%3Fproperty%20%3Fvalue%20.%0A%20%20%7D%0A%7D&format=text%2Fhtml&timeout=0&debug=on&run=+Run+Query+> ;
    rdfs:comment "URL-encoded live query action for URIBurner SPARQL."@en .

sm:query-source-counts a schema1:CreativeWork,
        schema1:SoftwareSourceCode ;
    rdfs:label "Which sources contribute to customer records?"@en ;
    schema1:codeSampleType "Executable SPARQL query adapted from article example" ;
    schema1:description "Source image query grouped :Customer records by :sourceSystem."@en ;
    schema1:isPartOf sm:queryExamplesSection ;
    schema1:name "Which sources contribute to customer records?"@en ;
    schema1:potentialAction sm:query-source-counts-runAction ;
    schema1:programmingLanguage "SPARQL" ;
    schema1:target sm:uriBurnerSparqlEndpoint ;
    schema1:text """PREFIX sm: <https://moderndata101.substack.com/p/the-semantic-medallion#>
SELECT ?source (COUNT(?customer) AS ?records)
WHERE {
  GRAPH <https://linkeddata.uriburner.com/DAV/demos/daas/semantic-medallion-gpt5-chat-1.ttl> {
    ?customer a sm:Customer ;
      sm:sourceSystem ?source .
  }
}
GROUP BY ?source""" ;
    rdfs:comment "Source image query grouped :Customer records by :sourceSystem."@en .

sm:query-source-counts-runAction a schema1:SearchAction ;
    rdfs:label "Run live query"@en ;
    schema1:description "URL-encoded live query action for URIBurner SPARQL."@en ;
    schema1:name "Run live query"@en ;
    schema1:target <https://linkeddata.uriburner.com/sparql?default-graph-uri=&query=PREFIX%20sm%3A%20%3Chttps%3A%2F%2Fmoderndata101.substack.com%2Fp%2Fthe-semantic-medallion%23%3E%0ASELECT%20%3Fsource%20%28COUNT%28%3Fcustomer%29%20AS%20%3Frecords%29%0AWHERE%20%7B%0A%20%20GRAPH%20%3Chttps%3A%2F%2Flinkeddata.uriburner.com%2FDAV%2Fdemos%2Fdaas%2Fsemantic-medallion-gpt5-chat-1.ttl%3E%20%7B%0A%20%20%20%20%3Fcustomer%20a%20sm%3ACustomer%20%3B%0A%20%20%20%20%20%20sm%3AsourceSystem%20%3Fsource%20.%0A%20%20%7D%0A%7D%0AGROUP%20BY%20%3Fsource&format=text%2Fhtml&timeout=0&debug=on&run=+Run+Query+> ;
    rdfs:comment "URL-encoded live query action for URIBurner SPARQL."@en .

sm:rdfInfographicSkill a schema1:SoftwareApplication ;
    rdfs:label "rdf-infographic-skill"@en ;
    schema1:description "Generated RDF-backed HTML and Markdown companion artifacts."@en ;
    schema1:name "rdf-infographic-skill"@en ;
    schema1:url <https://github.com/OpenLinkSoftware/ai-agent-skills/tree/main/rdf-infographic-skill> ;
    rdfs:comment "Generated RDF-backed HTML and Markdown companion artifacts."@en .

sm:registry-company-12345 a sm:ExternalRegistry ;
    rdfs:label "Registry Company 12345"@en ;
    schema1:description "Representative external registry record."@en ;
    schema1:name "Registry Company 12345"@en ;
    rdfs:comment "Representative external registry record."@en .

sm:registry-company-34567 a sm:ExternalRegistry ;
    rdfs:label "Registry Company 34567"@en ;
    schema1:description "Representative external registry record."@en ;
    schema1:name "Registry Company 34567"@en ;
    rdfs:comment "Representative external registry record."@en .

sm:registry-company-67890 a sm:ExternalRegistry ;
    rdfs:label "Registry Company 67890"@en ;
    schema1:description "Representative external registry record."@en ;
    schema1:name "Registry Company 67890"@en ;
    rdfs:comment "Representative external registry record."@en .

sm:step1 a schema1:HowToStep ;
    rdfs:label "Harvest source data"@en ;
    schema1:description "Land raw data in the Bronze layer from APIs, databases, files, and registries."@en ;
    schema1:name "Harvest source data"@en ;
    rdfs:comment "Land raw data in the Bronze layer from APIs, databases, files, and registries."@en .

sm:step2 a schema1:HowToStep ;
    rdfs:label "Structure and identify records"@en ;
    schema1:description "Create Silver DataFrames and mint stable IRIs for entities."@en ;
    schema1:name "Structure and identify records"@en ;
    rdfs:comment "Create Silver DataFrames and mint stable IRIs for entities."@en .

sm:step3 a schema1:HowToStep ;
    rdfs:label "Define ontology templates"@en ;
    schema1:description "Use a shared vocabulary and OTTR-style templates to map columns to RDF properties."@en ;
    schema1:name "Define ontology templates"@en ;
    rdfs:comment "Use a shared vocabulary and OTTR-style templates to map columns to RDF properties."@en .

sm:step4 a schema1:HowToStep ;
    rdfs:label "Publish Gold RDF"@en ;
    schema1:description "Generate the RDF graph and load it into a SPARQL-capable catalog endpoint."@en ;
    schema1:name "Publish Gold RDF"@en ;
    rdfs:comment "Generate the RDF graph and load it into a SPARQL-capable catalog endpoint."@en .

sm:step5 a schema1:HowToStep ;
    rdfs:label "Describe datasets with DCAT"@en ;
    schema1:description "Model datasets, distributions, services, and provenance as catalog metadata."@en ;
    schema1:name "Describe datasets with DCAT"@en ;
    rdfs:comment "Model datasets, distributions, services, and provenance as catalog metadata."@en .

sm:step6 a schema1:HowToStep ;
    rdfs:label "Query across data and metadata"@en ;
    schema1:description "Use SPARQL to inspect customer entities, sources, datasets, and lineage."@en ;
    schema1:name "Query across data and metadata"@en ;
    rdfs:comment "Use SPARQL to inspect customer entities, sources, datasets, and lineage."@en .

sm:uriBurnerResolver a schema1:SoftwareApplication ;
    rdfs:label "URIBurner"@en ;
    schema1:description "Linked Data resolver used for entity description links."@en ;
    schema1:name "URIBurner"@en ;
    schema1:url <https://linkeddata.uriburner.com/> ;
    rdfs:comment "Linked Data resolver used for entity description links."@en .

sm:virtuosoServer a schema1:SoftwareApplication ;
    rdfs:label "OpenLink Virtuoso"@en ;
    schema1:description "RDF database and SPARQL endpoint platform backing URIBurner."@en ;
    schema1:name "OpenLink Virtuoso"@en ;
    schema1:url <https://virtuoso.openlinksw.com/> ;
    rdfs:comment "RDF database and SPARQL endpoint platform backing URIBurner."@en ;
    owl:sameAs <http://dbpedia.org/resource/Virtuoso_Universal_Server> .

<https://substack.com/@veronahe#this> a schema1:Person ;
    rdfs:label "Veronika Heimsbakk"@en ;
    schema1:description "Knowledge graph specialist, semantic technologies expert, author, and speaker cited as the contributing expert for the article."@en ;
    schema1:identifier "https://substack.com/@veronahe" ;
    schema1:name "Veronika Heimsbakk"@en ;
    schema1:url <https://substack.com/@veronahe> ;
    rdfs:comment "Knowledge graph specialist, semantic technologies expert, author, and speaker cited as the contributing expert for the article."@en ;
    owl:sameAs <https://www.linkedin.com/in/vheimsbakk/#this> .

sm:bronzeLayer a schema1:CreativeWork,
        sm:MedallionLayer ;
    rdfs:label "Bronze"@en ;
    schema1:description "Raw harvested data from APIs, databases, file shares, and registries."@en ;
    schema1:isPartOf sm:architectureSection ;
    schema1:name "Bronze"@en ;
    rdfs:comment "Raw harvested data from APIs, databases, file shares, and registries."@en .

sm:goldGraphConcept a schema1:DefinedTerm ;
    rdfs:label "Gold Graph"@en ;
    schema1:description "The RDF publication layer that replaces isolated Gold tables with connected knowledge."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "Gold Graph"@en ;
    rdfs:comment "The RDF publication layer that replaces isolated Gold tables with connected knowledge."@en .

sm:knowledgeGraphCatalogConcept a schema1:DefinedTerm ;
    rdfs:label "Knowledge graph-powered data catalog"@en ;
    schema1:description "A catalog that describes data semantically and exposes relationships directly in RDF."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "Knowledge graph-powered data catalog"@en ;
    rdfs:comment "A catalog that describes data semantically and exposes relationships directly in RDF."@en .

sm:silverLayer a schema1:CreativeWork,
        sm:MedallionLayer ;
    rdfs:label "Silver"@en ;
    schema1:description "Structured DataFrames with stable entity IRIs and source identifiers."@en ;
    schema1:isPartOf sm:architectureSection ;
    schema1:name "Silver"@en ;
    rdfs:comment "Structured DataFrames with stable entity IRIs and source identifiers."@en ;
    sm:dependsOn sm:bronzeLayer .

sm:semanticMedallionConcept a schema1:DefinedTerm ;
    rdfs:label "Semantic Medallion"@en ;
    schema1:description "A medallion architecture variant where the Gold layer is an RDF knowledge graph."@en ;
    schema1:inDefinedTermSet sm:glossary ;
    schema1:name "Semantic Medallion"@en ;
    rdfs:comment "A medallion architecture variant where the Gold layer is an RDF knowledge graph."@en .

sm:architectureSection a schema1:ArticleSection ;
    rdfs:label "Architecture"@en ;
    schema1:about sm:goldGraphConcept ;
    schema1:description "Bronze, Silver, and Gold layers reinterpreted as semantic enrichment layers."@en ;
    schema1:hasPart sm:bronzeLayer,
        sm:goldGraphLayer,
        sm:silverLayer ;
    schema1:isPartOf sm:article ;
    schema1:name "Architecture"@en ;
    rdfs:comment "Bronze, Silver, and Gold layers reinterpreted as semantic enrichment layers."@en .

sm:overviewSection a schema1:ArticleSection ;
    rdfs:label "Semantic medallion overview"@en ;
    schema1:about sm:semanticMedallionConcept ;
    schema1:description "Summary of the shift from clean Gold tables to connected Gold RDF."@en ;
    schema1:hasPart sm:billingSystem,
        sm:crmSystem,
        sm:externalRegistry ;
    schema1:isPartOf sm:article ;
    schema1:name "Semantic medallion overview"@en ;
    rdfs:comment "Summary of the shift from clean Gold tables to connected Gold RDF."@en .

sm:uriBurnerSparqlEndpoint a schema1:WebAPI ;
    rdfs:label "URIBurner SPARQL endpoint"@en ;
    schema1:description "Default live endpoint for the generated executable query links."@en ;
    schema1:name "URIBurner SPARQL endpoint"@en ;
    schema1:url <https://linkeddata.uriburner.com/sparql> ;
    rdfs:comment "Default live endpoint for the generated executable query links."@en .

sm:article a schema1:Article,
        schema1:TechArticle ;
    rdfs:label "The Semantic Medallion: Building a Knowledge Graph-Powered Data Catalog"@en ;
    schema1:about <http://dbpedia.org/resource/Data_Catalog_Vocabulary>,
        <http://dbpedia.org/resource/Resource_Description_Framework>,
        <http://dbpedia.org/resource/SPARQL>,
        sm:knowledgeGraphCatalogConcept,
        sm:semanticMedallionConcept ;
    schema1:abstract "The article reframes the Gold medallion layer as a semantic knowledge graph built from Silver DataFrames with stable IRIs, ontology mappings, RDF, DCAT, and SPARQL."@en ;
    schema1:articleSection "Expert's Desk"@en ;
    schema1:author <https://substack.com/@veronahe#this> ;
    schema1:datePublished "2026-05-14T12:26:38+00:00"^^xsd:dateTime ;
    schema1:description "An article explaining how a medallion architecture can publish its Gold layer as an RDF knowledge graph-backed data catalog."@en ;
    schema1:hasPart sm:architectureSection,
        sm:capabilitiesSection,
        sm:dcatSection,
        sm:faq,
        sm:glossary,
        sm:howto,
        sm:overviewSection,
        sm:queryExamplesSection ;
    schema1:headline "The Semantic Medallion: Building a Knowledge Graph-Powered Data Catalog"@en ;
    schema1:name "The Semantic Medallion: Building a Knowledge Graph-Powered Data Catalog"@en ;
    schema1:publisher sm:modernData101 ;
    schema1:url <https://moderndata101.substack.com/p/the-semantic-medallion> ;
    rdfs:comment "An article explaining how a medallion architecture can publish its Gold layer as an RDF knowledge graph-backed data catalog."@en ;
    prov:wasGeneratedBy sm:codexDesktopEnvironment,
        sm:gpt5ChatInterface,
        sm:kgGeneratorSkill,
        sm:rdfInfographicSkill,
        sm:uriBurnerResolver,
        sm:virtuosoServer .

sm:queryExamplesSection a schema1:ArticleSection ;
    rdfs:label "Executable SPARQL examples"@en ;
    schema1:about <http://dbpedia.org/resource/SPARQL> ;
    schema1:description "SPARQL examples from the article adapted to the generated ontology and instance data."@en ;
    schema1:hasPart sm:customer-C-001,
        sm:customer-C-002,
        sm:customer-C-003,
        sm:query-active-contract-billing-issues,
        sm:query-customer-datasets,
        sm:query-customer-properties,
        sm:query-source-counts ;
    schema1:isPartOf sm:article ;
    schema1:name "Executable SPARQL examples"@en ;
    rdfs:comment "SPARQL examples from the article adapted to the generated ontology and instance data."@en .

sm:glossary a schema1:DefinedTermSet ;
    rdfs:label "Semantic Medallion glossary"@en ;
    schema1:description "Defined terms used by the article and generated ontology."@en ;
    schema1:hasDefinedTerm sm:dcatConcept,
        sm:goldGraphConcept,
        sm:iriMintingConcept,
        sm:knowledgeGraphCatalogConcept,
        sm:maplibConcept,
        sm:ottrConcept,
        sm:provConcept,
        sm:semanticMedallionConcept ;
    schema1:name "Semantic Medallion glossary"@en ;
    rdfs:comment "Defined terms used by the article and generated ontology."@en .

sm: a owl:Ontology ;
    rdfs:label "Semantic Medallion executable catalog ontology"@en ;
    schema1:description "A lightweight ontology and representative data model for the Semantic Medallion article's DataFrame-to-RDF catalog pattern."@en ;
    schema1:identifier <https://moderndata101.substack.com/p/the-semantic-medallion> ;
    schema1:name "Semantic Medallion executable catalog ontology"@en ;
    schema1:url <https://moderndata101.substack.com/p/the-semantic-medallion> ;
    rdfs:comment "A lightweight ontology and representative data model for the Semantic Medallion article's DataFrame-to-RDF catalog pattern."@en .

