Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:semweb:lab-rdf1 [2019/06/27 15:50]
pl:dydaktyka:semweb:lab-rdf1 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
  
 +====== Resource Description Framework (RDF) ======
 +===== Before the lab =====
 +Reading:
 +  * [[http://​w3schools.com/​rdf/​default.asp|RDF at W3Schools]]
 +  * [[http://​dublincore.org/​documents/​dc-rdf/​|Expressing Dublin Core metadata using the Resource Description Framework (RDF)]]
 +  * [[http://​www.betaversion.org/​~stefano/​linotype/​news/​57/​|A No-Nonsense Guide to Semantic Web Specs for XML People]]
 +  * [[#​if_you_want_to_know_more|If you want to know more...]]
 +
 +Software:
 +  * [[http://​semweb.salzburgresearch.at/​apps/​rdf-gravity|RDF Gravity]]
 +
 +===== Introduction =====
 +Lecture:
 +  * {{http://​home.agh.edu.pl/​wta/​semweb/​geist-semweb-rdf.pdf|Semantic Web: 3a - RDF}}
 +  * {{http://​home.agh.edu.pl/​wta/​semweb/​geist-semweb-rdfsutils.pdf|Semantic Web: 3b - RDF/S in use}}
 +  * {{http://​home.agh.edu.pl/​wta/​semweb/​geist-semweb-rdfs.pdf|Semantic Web: 3c - RDF Schema}}
 +
 +===== Lab instructions =====
 +
 +The lab is divided into sections. You should allow aprox. 10 minutes for each section. ​
 +However, note that the tasks are increasingly difficult and latter sections may be more time-consuming than the former ones.
 +==== - RDF model ====
 +  * RDF model is a directed graph built from ''​Statements''​
 +  * Each Statement consists of: ''<​subject>'',​ ''<​predicate>''​ and ''<​object>''​
 +    * Subject can be an //URI// or an //empty node//
 +    * Predicate can be an //URI//
 +    * Object can be an //URI//, an //empty node// or a //literal//
 +
 +  - Go to [[http://​www.w3.org/​RDF/​Validator/​|W3C'​s RDF Validation Service]] ​
 +    - In section "Check by Direct Input" set **Display Result Options** to: ''​Triples and Graph''​ and click ''​Parse RDF''​. Analyze the RDF/XML code and the graphical representation. {{:​pl:​dydaktyka:​semantic_web:​rdf-validator1.png?​200|}}
 +    - In section "Check by URI" paste the following URI: ''​http://​home.agh.edu.pl/​~wta/​foaf.rdf''​. Analyze the RDF/XML code and the graphical representation. {{:​pl:​dydaktyka:​semantic_web:​rdf-validator2.png?​200|}}
 + 
 +
 +==== - RDF document: basics ====
 +RDF document is an RDF graph (describing some objects) serialized into chosen representation/​syntax.
 +Here we will use the RDF/XML syntax for RDF.
 +
 +Your task will be to create an RDF description of you multimedia library.
 +It can contain CDs, DVDs, books etc.
 +The documents created during this lab will be used in the subsequent labs.
 +
 +a) Create a text document and save it as ''​mylibrary.rdf''​.
 +<code xml>
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<rdf:RDF
 +   ​xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#">​
 +   <​!-- Body Code Omitted -->
 +</​rdf:​RDF>​
 +</​code>​
 +NB: Note the ''​ http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#''​ namespace used in the document.
 +
 +b) Add statements: Add RDF statements about items in your multimedia library, e.g.:
 +<code xml>
 +<rdf:RDF
 +   ​xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#">​
 +  ​
 +   <​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​book-semwebprimer">​
 + <!-- Statement Code Omitted -->
 +   </​rdf:​Description>​
 +   <​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​cd-opeth_damnation">​
 + <!-- Statement Code Omitted -->
 +   </​rdf:​Description>​
 +</​rdf:​RDF>​
 +</​code>​
 +
 +The ''​rdf:​Description''​ tag means you're going to describe something (a subject) and giving it a unique ID: ''​http://​example.org/​mylibrary#​your-book-id''​.
 +
 +
 +c) Add predicates: define some //​properties//​ of the items and fill in their //values//, e.g.:
 +<code xml>
 +<rdf:RDF
 + xmlns:​rdf="​http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#"​
 +        xmlns="​http://​example.org/​mylibrary#">​
 +   <​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​book-semwebprimer">​
 +     <​author>​Grigoris Antoniou</​author>​
 +     <​author>​Frank van Harmelen</​author>​
 +     <​title>​A Semantic Web Primer</​title>​
 +   </​rdf:​Description>​
 +   <​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​cd-opeth_damnation">​
 +     <​artist>​Opeth</​artist>​
 +     <​title>​Damnation</​title>​
 +   </​rdf:​Description>​
 +</​rdf:​RDF>​
 +</​code>​
 +
 +Define your namespace (see the 3. line).
 +
 +==== - RDF document: Containers and Collections ====
 +In RDF there are two ways to describe set or sequences of objects: //​Containters//​ and //​Collections//​.
 +
 +  - According to the [[http://​www.w3.org/​TR/​rdf-syntax/#​containers|W3C Recommendation]],​ "A container is a resource that contains things. The contained things are called members. The members of a container may be resources (including blank nodes) or literals. RDF defines three types of containers:
 +    * ''​rdf:​Bag''​
 +    * ''​rdf:​Seq''​
 +    * ''​rdf:​Alt''"​
 +  - Create a container called ''​MyFavouriteBooks''​ and fill it with the URIs of the books you like the most. (see [[http://​www.w3.org/​TR/​rdf-syntax/#​containers|here]] for hints and examples)
 +  - While "a container only says that certain identified resources are members; it does not say that other members do not exist."​ with a //​Collection//​ we can describe groups containing __only__ the specified members. "An RDF collection is a group of things represented as a list structure in the RDF graph."​
 +  - In your RDF file describe a book/CD/DVD which has multiple authors or actors playing in it. Use the //RDF Collection//​. For hint and examples see the [[http://​www.w3.org/​TR/​rdf-syntax/#​collections|recommendation]].
 +
 +==== - RDF document: Datatypes ====
 +Add the references to [[http://​www.w3.org/​TR/​xmlschema-2/​|XML Schema datatypes]] to chosen information in your RDF file, e.g.:
 +<code xml>
 +<​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​book-semwebprimer">​
 +  <​author>​Grigoris Antoniou</​author>​
 +  <​author>​Frank van Harmelen</​author>​
 +  <title rdf:​datatype="​http://​www.w3.org/​2001/​XMLSchema#​string">​A Semantic Web Primer</​title>​
 +  <​publicationDate rdf:​datatype="​http://​www.w3.org/​2001/​XMLSchema#​date">​2008-10-09</​publicationDate>​
 +</​rdf:​Description>​
 +</​code>​
 +==== - RDF Triples Validation and Visualization ====
 +
 +  - Validate your example on the page [[http://​www.w3.org/​RDF/​Validator//​| RDF Validator from w3.org]] and analyze generated graph. Correct the errors, if you made any.
 +  - Open your file in [[http://​semweb.salzburgresearch.at/​apps/​rdf-gravity|RDF Gravity]] tool. Browse your multimedia library using different filters.
 +
 +==== - RDFSchema ====
 +RDF Schema allows to organize objects into classes, define simple taxonomies, as well as classes'​ domains and ranges.
 +
 +  - Define classes of items in you multimedia library, e.g.
 +<code xml>
 +<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://​example.org/​mylibrary#">​
 +  ​
 +  <​rdfs:​Class rdf:​ID="​MultimediaItem"​ />
 +  <​rdfs:​Class rdf:​ID="​MusicCD">​
 +    <​rdfs:​subClassOf rdf:​resource="#​MultimediaItem"/>​
 +    <​rdfs:​label>​Music Compact Discs class</​rdfs:​label>​
 +    <​rdfs:​comment>​Class of all the CDs in my library.</​rdfs:​comment>​
 +  </​rdfs:​Class>​
 +  <​rdfs:​Class rdf:​ID="​Book">​
 +    <​rdfs:​subClassOf rdf:​resource="#​MultimediaItem"/>​
 +  </​rdfs:​Class>​
 +</​rdf:​RDF>​
 +</​code>​
 +
 +Add the ''​rdf:​type''​ statements to your RDF file, e.g.:
 +<code xml>
 +<​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​cd-opeth_damnation">​
 +  <​artist>​Opeth</​artist>​
 +  <​title>​Damnation</​title>​
 +  <​rdf:​type rdf:​resource="​http://​example.org/​mylibrary#​MusicCD"/>​
 +</​rdf:​Description>​
 +</​code>​
 +==== - RDF/S vocabularies:​ Dublin Core ====
 +
 +Semantic vocabularies are sets of predefined properties for describing some domains. Examples include:
 +  * [[http://​semanticweb.org/​wiki/​Dublin_Core|Dublin Core]]
 +  * [[http://​semanticweb.org/​wiki/​FOAF|FOAF]]
 +  * [[http://​semanticweb.org/​wiki/​RSS_1.0|RSS 1.0]]
 +  * [[http://​semanticweb.org/​wiki/​SIOC|SIOC]]
 +  * etc.
 +
 +  - Have a look at [[http://​www.w3schools.com/​rdf/​rdf_dublin.asp|Dublin Core basics at W3Schools]].
 +  - Modify your RDF/S file to use the properties from DublinCore vocabulary, e.g.:
 +<code xml>
 +<​rdf:​Description rdf:​about="​http://​example.org/​mylibrary#​book-semwebprimer">​
 +  <​author>​Grigoris Antoniou</​author>​
 +  <​author>​Frank van Harmelen</​author>​
 +  <​dc:​title rdf:​datatype="​http://​www.w3.org/​2001/​XMLSchema#​string">​A Semantic Web Primer</​dc:​title>​
 +  <dc:date rdf:​datatype="​http://​www.w3.org/​2001/​XMLSchema#​date">​2008-10-09</​dc:​date>​
 +  <​dc:​publisher>​The MIT Press</​dc:​publisher>​
 +  <​dc:​language>​en</​dc:​language>​
 +</​rdf:​Description>  ​
 +</​code>​
 +    * Hint: use the explanation and examples from [[http://​dublincore.org/​documents/​dcmes-xml/​|the basic (superseeded) version of DC]] or, if you are more ambitious, read the latest, enhanced [[http://​dublincore.org/​documents/​dc-rdf/​|version]].
 +
 +==== - RDF/S vocabularies:​ FOAF ====
 +[[http://​www.foaf-project.org/​|FOAF]] (Friend-of-a-friend) is a semantic vocabulary for describing people and their connections.
 +  - Create your FOAF file with: [[http://​www.ldodds.com/​foaf/​foaf-a-matic|foaf-o-matic]].
 +  - Save you FOAF file.
 +  - Put the file on a server (e.g. ''​student.agh.edu.pl''​) so that it can be referenced with URL.
 +  - Put the link to your FOAF file [[#​foaf_files_of_piw_2011|here]] (log in with username ''​piw2011'',​ for password ask the teacher):
 +  - Visualize it with: [[http://​xml.mfd-consult.dk/​foaf/​explorer/​|FOAF explorer]]
 +  - Add more friends using their FOAF URIs in the ''<​foaf:​knows>''​ section. Visualize again. Navigate to your friends'​ FOAF files.
 +  * (example) Weronika T. Adrian: http://​home.agh.edu.pl/​~wta/​foaf.rdf
 +
 +===== Control questions =====
 +   * What are:
 +       * resources, ​
 +       * properties, ​
 +       * statemets.
 +   * What does RDF use to identify resources?
 +   * What are the required elements of RDF file?
 +   * What are namespaces, how are they defined and what are they used for?
 +   * What the following tags are used for:
 +       * ''<​rdf:​Description>''​
 +       * ''<​rdf:​about>''​
 +       * ''<​rdf:​resource>'' ​
 +       * ''<​rdf:​type>''​
 +   * What container elements are available in RDF?
 +   * What is RDF Schema?
 +   * What are core RDFS Classes and properties?
 +   * How constraints on domain and range of properties are added?
 +===== If you want to know more =====
 +Reading:
 +  * RDF Primer, W3C Recommendation 10-02-2004: http://​www.w3.org/​TR/​rdf-primer/​
 +  * http://​www.w3.org/​DesignIssues/​RDFnot.html
 +  * RDF interfaces, Working Draft 11-05-2011: http://​www.w3.org/​TR/​rdf-interfaces/​
 +
 +Slides:
 +  * [[ http://​www.inf.unibz.it/​~debruijn/​teaching/​swt/​lecture-1-handouts.pdf|RDF ]] and [[http://​www.inf.unibz.it/​~debruijn/​teaching/​swt/​lecture-2-handouts.pdf|RDFS]]
 +  * [[http://​www.cs.rpi.edu/​~puninj/​XMLJ/​classes/​class8/​all.html| RDF and RDFS summary]]
 +
 +Tools:
 +  * http://​jena.sourceforge.net/​tutorial/​RDF_API/​
pl/dydaktyka/semweb/lab-rdf1.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0