XML -RDF
Voorbeeld RDF-document
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3schools.com/rdf/">
<rdf:Description rdf:about="https://www.w3schools.com">
<si:title>W3Schools</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
Wat is RDF?
- RDF staat voor R esource Description F ramework
- RDF is een raamwerk voor het beschrijven van bronnen op het web
- RDF is ontworpen om te worden gelezen en begrepen door computers
- RDF is niet ontworpen om aan mensen te worden getoond
- RDF is geschreven in XML
- RDF maakt deel uit van de semantische webactiviteit van W3C
- RDF is een W3C-aanbeveling van 10 februari 2004
RDF - Voorbeelden van gebruik
- Eigenschappen voor winkelitems beschrijven, zoals prijs en beschikbaarheid
- Tijdschema's voor webgebeurtenissen beschrijven
- Het beschrijven van informatie over webpagina's (inhoud, auteur, aanmaak- en wijzigingsdatum)
- Inhoud en beoordeling voor webafbeeldingen beschrijven
- Inhoud voor zoekmachines beschrijven
- Elektronische bibliotheken beschrijven
RDF is ontworpen om door computers te worden gelezen
RDF is ontworpen om een algemene manier te bieden om informatie te beschrijven, zodat deze kan worden gelezen en begrepen door computertoepassingen.
RDF-beschrijvingen zijn niet ontworpen om op internet te worden weergegeven.
RDF is geschreven in XML
RDF-documenten zijn geschreven in XML. De XML-taal die door RDF wordt gebruikt, wordt RDF/XML genoemd.
Door XML te gebruiken, kan RDF-informatie eenvoudig worden uitgewisseld tussen verschillende soorten computers met verschillende soorten besturingssystemen en applicatietalen.
RDF en "Het semantische web"
De RDF-taal is een onderdeel van de semantische webactiviteit van het W3C. W3C's "Semantic Web Vision" is een toekomst waarin:
- Webinformatie heeft een exacte betekenis
- Webinformatie kan door computers worden begrepen en verwerkt
- Computers kunnen informatie van internet integreren
RDF gebruikt Web identifiers (URI's) om bronnen te identificeren.
RDF beschrijft resources met eigenschappen en eigenschapswaarden.
RDF-bron, eigendom en eigendomswaarde
RDF identificeert dingen met behulp van web-ID's (URI's) en beschrijft bronnen met eigenschappen en eigenschapswaarden.
Uitleg van Resource, Property en Property waarde:
- Een bron is alles dat een URI kan hebben, zoals "https://www.w3schools.com/rdf"
- Een Property is een Resource die een naam heeft, zoals 'auteur' of 'homepage'
- Een eigendomswaarde is de waarde van een eigendom, zoals "Jan Egil Refsnes" of "https://www.w3schools.com" (merk op dat een eigendomswaarde een andere bron kan zijn)
Het volgende RDF-document zou de bron "https://www.w3schools.com/rdf" kunnen beschrijven:
<?xml version="1.0"?>
<RDF>
<Description about="https://www.w3schools.com/rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://www.w3schools.com</homepage>
</Description>
</RDF>
Het bovenstaande voorbeeld is vereenvoudigd. Naamruimten worden weggelaten.
RDF-verklaringen
De combinatie van een Resource, een Property en een Property-waarde vormt een Statement (bekend als het onderwerp, predikaat en object van een Statement).
Laten we eens kijken naar enkele voorbeelduitspraken om een beter begrip te krijgen:
Verklaring: "De auteur van https://www.w3schools.com/rdf is Jan Egil Refsnes".
- Het onderwerp van de bovenstaande verklaring is: https://www.w3schools.com/rdf
- Het predikaat is: auteur
- Het object is: Jan Egil Refsnes
Verklaring: "De homepage van https://www.w3schools.com/rdf is https://www.w3schools.com".
- Het onderwerp van de bovenstaande verklaring is: https://www.w3schools.com/rdf
- Het predikaat is: homepage
- Het doel is: https://www.w3schools.com
RDF-voorbeeld
Hier zijn twee platen van een cd-lijst:
Title | Artist | Country | Company | Price | Year |
---|---|---|---|---|---|
Empire Burlesque | Bob Dylan | USA | Columbia | 10.90 | 1985 |
Hide your heart | Bonnie Tyler | UK | CBS Records | 9.90 | 1988 |
Hieronder een paar regels uit een RDF-document:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
<cd:artist>Bonnie Tyler</cd:artist>
<cd:country>UK</cd:country>
<cd:company>CBS Records</cd:company>
<cd:price>9.90</cd:price>
<cd:year>1988</cd:year>
</rdf:Description>
.
.
.
</rdf:RDF>
De eerste regel van het RDF-document is de XML-declaratie. De XML-declaratie wordt gevolgd door het root-element van RDF-documenten: <rdf:RDF> .
De xmlns:rdf- naamruimte specificeert dat elementen met het rdf-voorvoegsel uit de naamruimte "http://www.w3.org/1999/02/22-rdf-syntax-ns#" komen.
De xmlns:cd- naamruimte specificeert dat elementen met het cd-voorvoegsel uit de naamruimte "http://www.recshop.fake/cd#" komen.
Het element <rdf:Description> bevat de beschrijving van de bron die wordt geïdentificeerd door het kenmerk rdf:about .
De elementen: <cd:artist>, <cd:country>, <cd:company>, etc. zijn eigenschappen van de resource.
RDF online validator
De RDF-validatieservice van W3C is handig bij het leren van RDF. Hier kunt u experimenteren met RDF-bestanden.
De online RDF Validator parseert uw RDF-document, controleert uw syntaxis en genereert tabel- en grafische weergaven van uw RDF-document.
Kopieer en plak het onderstaande voorbeeld in de RDF-validator van W3C:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3schools.com/rdf/">
<rdf:Description rdf:about="https://www.w3schools.com">
<si:title>W3Schools.com</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
Wanneer u het bovenstaande voorbeeld analyseert, ziet het resultaat er ongeveer zo uit .
RDF-elementen
De belangrijkste elementen van RDF zijn het root-element, <RDF>, en het <Description>-element, dat een resource identificeert.
Het <rdf:RDF>-element
<rdf:RDF> is het root-element van een RDF-document. Het definieert het XML-document als een RDF-document. Het bevat ook een verwijzing naar de RDF-naamruimte:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
...Description goes here...
</rdf:RDF>
Het <rdf:Description>-element
Het element <rdf:Description> identificeert een resource met het attribuut about.
Het element <rdf:Description> bevat elementen die de resource beschrijven:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
</rdf:RDF>
De elementen artiest, land, bedrijf, prijs en jaar worden gedefinieerd in de naamruimte http://www.recshop.fake/cd#. Deze naamruimte valt buiten RDF (en maakt geen deel uit van RDF). RDF definieert alleen het raamwerk. De elementen artiest, land, bedrijf, prijs en jaar moeten door iemand anders worden gedefinieerd (bedrijf, organisatie, persoon, enz.).
Eigenschappen als attributen
De eigenschapselementen kunnen ook worden gedefinieerd als attributen (in plaats van elementen):
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque"
cd:artist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985" />
</rdf:RDF>
Eigenschappen als bronnen
De eigenschapselementen kunnen ook als resources worden gedefinieerd:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
<cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
...
...
</rdf:Description>
</rdf:RDF>
In bovenstaand voorbeeld heeft de eigenschap artiest geen waarde, maar een verwijzing naar een bron met informatie over de artiest.
RDF-containers
RDF-containers worden gebruikt om een groep dingen te beschrijven.
De volgende RDF-elementen worden gebruikt om groepen te beschrijven: <Bag>, <Seq> en <Alt>.
Het <rdf:Bag>-element
Het element <rdf:Bag> wordt gebruikt om een lijst met waarden te beschrijven die niet in een specifieke volgorde hoeven te staan.
Het element <rdf:Bag> kan dubbele waarden bevatten.
Voorbeeld
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Bag>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>George</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Bag>
</cd:artist>
</rdf:Description>
</rdf:RDF>
Het <rdf:Seq>-element
Het element <rdf:Seq> wordt gebruikt om een geordende zoeklijst te beschrijven (bijvoorbeeld in alfabetische volgorde).
Het element <rdf:Seq> kan dubbele waarden bevatten.
Voorbeeld
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Seq>
<rdf:li>George</rdf:li>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Seq>
</cd:artist>
</rdf:Description>
</rdf:RDF>
Het <rdf:Alt>-element
Het element <rdf:Alt> wordt gebruikt om een lijst met alternatieve waarden te beschrijven (de gebruiker kan slechts één van de waarden selecteren).
Voorbeeld
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:format>
<rdf:Alt>
<rdf:li>CD</rdf:li>
<rdf:li>Record</rdf:li>
<rdf:li>Tape</rdf:li>
</rdf:Alt>
</cd:format>
</rdf:Description>
</rdf:RDF>
RDF-voorwaarden
In de bovenstaande voorbeelden hebben we het gehad over "lijst met waarden" bij het beschrijven van de containerelementen. In RDF worden deze "lijst met waarden" leden genoemd.
We hebben dus het volgende:
- Een container is een bron die dingen bevat
- De ingesloten dingen worden leden genoemd (geen lijst met waarden)
RDF-collecties
RDF-verzamelingen beschrijven groepen die ALLEEN de opgegeven leden kunnen bevatten.
Het kenmerk rdf:parseType="Collection"
Zoals te zien is in het vorige hoofdstuk, zegt een container dat de bevattende bronnen leden zijn - er staat niet dat andere leden niet zijn toegestaan.
RDF-verzamelingen worden gebruikt om groepen te beschrijven die ALLEEN de opgegeven leden kunnen bevatten.
Een collectie wordt beschreven door het attribuut rdf:parseType="Collection".
Voorbeeld
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://recshop.fake/cd#">
<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
<cd:artist rdf:parseType="Collection">
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/>
<rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/>
</cd:artist>
</rdf:Description>
</rdf:RDF>
RDF-schema en toepassingsklassen
RDF Schema (RDFS) is een uitbreiding op RDF.
RDF beschrijft bronnen met klassen, eigenschappen en waarden.
Daarnaast heeft RDF ook een manier nodig om toepassingsspecifieke klassen en eigenschappen te definiëren. Toepassingsspecifieke klassen en eigenschappen moeten worden gedefinieerd met behulp van uitbreidingen op RDF.
Een van die extensies is RDF Schema.
RDF-schema (RDFS)
RDF Schema biedt geen werkelijke toepassingsspecifieke klassen en eigenschappen.
In plaats daarvan biedt RDF Schema het raamwerk om toepassingsspecifieke klassen en eigenschappen te beschrijven.
Classes in RDF Schema are much like classes in object oriented programming languages. This allows resources to be defined as instances of classes, and subclasses of classes.
RDFS Example
The following example demonstrates some of the RDFS facilities:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdf:Description rdf:ID="animal">
<rdf:type
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
<rdf:Description rdf:ID="horse">
<rdf:type
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
<rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>
</rdf:RDF>
In the example above, the resource "horse" is a subclass of the class "animal".
Example Abbreviated
Since an RDFS class is an RDF resource we can abbreviate the example above by using rdfs:Class instead of rdf:Description, and drop the rdf:type information:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
That's it!
The Dublin Core
The Dublin Core Metadata Initiative (DCMI) has created some predefined properties for describing documents.
RDF is metadata (data about data). RDF is used to describe information resources.
The Dublin Core is a set of predefined properties for describing documents.
The first Dublin Core properties were defined at the Metadata Workshop in Dublin, Ohio in 1995 and is currently maintained by the Dublin Core Metadata Initiative.
Property | Definition |
---|---|
Contributor | An entity responsible for making contributions to the content of the resource |
Coverage | The extent or scope of the content of the resource |
Creator | An entity primarily responsible for making the content of the resource |
Format | The physical or digital manifestation of the resource |
Date | A date of an event in the lifecycle of the resource |
Description | An account of the content of the resource |
Identifier | An unambiguous reference to the resource within a given context |
Language | A language of the intellectual content of the resource |
Publisher | An entity responsible for making the resource available |
Relation | A reference to a related resource |
Rights | Information about rights held in and over the resource |
Source | A Reference to a resource from which the present resource is derived |
Subject | A topic of the content of the resource |
Title | A name given to the resource |
Type | The nature or genre of the content of the resource |
A quick look at the table above indicates that RDF is ideal for representing Dublin Core information.
RDF Example
The following example demonstrates the use of some of the Dublin Core properties in an RDF document:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc= "http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="https://www.w3schools.com">
<dc:description>W3Schools - Free tutorials</dc:description>
<dc:publisher>Refsnes Data as</dc:publisher>
<dc:date>2008-09-01</dc:date>
<dc:type>Web Development</dc:type>
<dc:format>text/html</dc:format>
<dc:language>en</dc:language>
</rdf:Description>
</rdf:RDF>
RDF Reference
The RDF namespace (xmlns:rdf) is: http://www.w3.org/1999/02/22-rdf-syntax-ns#
The RDFS namespace (xmlns:rdfs ) is: http://www.w3.org/2000/01/rdf-schema#
The recommended file extension for RDF files is .rdf. However, the extension .xml is often used to provide compatibility with old xml parsers.
The MIME type should be "application/rdf+xml".
RDFS / RDF Classes
Element | Class of | Subclass of |
---|---|---|
rdfs:Class | All classes | |
rdfs:Datatype | Data types | Class |
rdfs:Resource | All resources | Class |
rdfs:Container | Containers | Resource |
rdfs:Literal | Literal values (text and numbers) | Resource |
rdf:List | Lists | Resource |
rdf:Property | Properties | Resource |
rdf:Statement | Statements | Resource |
rdf:Alt | Containers of alternatives | Container |
rdf:Bag | Unordered containers | Container |
rdf:Seq | Ordered containers | Container |
rdfs:ContainerMembershipProperty | Container membership properties | Property |
rdf:XMLLiteral | XML literal values | Literal |
RDFS / RDF Properties
Element | Domain | Range | Description |
---|---|---|---|
rdfs:domain | Property | Class | The domain of the resource |
rdfs:range | Property | Class | The range of the resource |
rdfs:subPropertyOf | Property | Property | The property is a sub property of a property |
rdfs:subClassOf | Class | Class | The resource is a subclass of a class |
rdfs:comment | Resource | Literal | The human readable description of the resource |
rdfs:label | Resource | Literal | The human readable label (name) of the resource |
rdfs:isDefinedBy | Resource | Resource | The definition of the resource |
rdfs:seeAlso | Resource | Resource | The additional information about the resource |
rdfs:member | Resource | Resource | The member of the resource |
rdf:first | List | Resource | |
rdf:rest | List | List | |
rdf:subject | Statement | Resource | The subject of the resource in an RDF Statement |
rdf:predicate | Statement | Resource | The predicate of the resource in an RDF Statement |
rdf:object | Statement | Resource | The object of the resource in an RDF Statement |
rdf:value | Resource | Resource | The property used for values |
rdf:type | Resource | Class | The resource is an instance of a class |
RDF Attributes
Attribute | Description |
---|---|
rdf:about | Defines the resource being described |
rdf:Description | Container for the description of a resource |
rdf:resource | Defines a resource to identify a property |
rdf:datatype | Defines the data type of an element |
rdf:ID | Defines the ID of an element |
rdf:li | Defines a list |
rdf:_n | Defines a node |
rdf:nodeID | Defines the ID of an element node |
rdf:parseType | Defines how an element should be parsed |
rdf:RDF | The root of an RDF document |
xml:base | Defines the XML base |
xml:lang | Defines the language of the element content |