RDF and RDF Schema Raúl García-Castro, Óscar Corcho, Daniel Vila-Suero

Slides:



Advertisements
Similar presentations
Ontology-Based Computing Kenneth Baclawski Northeastern University and Jarg.
Advertisements

Natural Language Systems, Department of Informatics, University of Hamburg NATS IR in WWW Dozentin: C. Vertan Autor: M. Hoffmann RDF Resource Description.
Improving Human-Semantic Web Interaction: The Rhizomer Experience Roberto García and Rosa Gil GRIHO - Human Computer Interaction Research Group Universitat.
Dr. Leo Obrst MITRE Information Semantics Information Discovery & Understanding Command & Control Center February 6, 2014February 6, 2014February 6, 2014.
XML Schema Heewon Lee. Contents 1. Introduction 2. Concepts 3. Example 4. Conclusion.
SPARQL Dimitar Kazakov, with references to material by Noureddin Sadawi ARIN, 2014.
CH-4 Ontologies, Querying and Data Integration. Introduction to RDF(S) RDF stands for Resource Description Framework. RDF is a standard for describing.
Creating Linked Data Juan F. Sequeda Semantic Technology Conference June 2011.
Method for developing the benchmark suites. October 10th © Raúl García-Castro Method for developing the benchmark suites Raúl García-Castro October.
Language (Formalisms) For Ontology Building Neda Alipanah 22 October 2012.
Querying the RDF: Small Case Study in the Bicycle Sale Domain Ondřej Šváb, Vojtěch Svátek, Martin Kavalec, Martin Labský VŠE, University of Economics,
RDF Schemata (with apologies to the W3C, the plural is not ‘schemas’) CSCI 7818 – Web Technologies 14 November 2001 Van Lepthien.
The Semantic Web – WEEK 4: RDF
Introduction to RDF Based on tutorial at
An Introduction to RDF(S) and a Quick Tour of OWL
Semantic Web Andrejs Lesovskis 4/11/2017 6:03 PM
1 RDF Tutorial. C. Abela RDF Tutorial2 What is RDF? RDF stands for Resource Description Framework It is used for describing resources on the web Makes.
인터넷기술 강혜원 Java 를 이용한 RDF Process 인터넷기술 012ITI01 강혜원.
An Introduction to Semantic Web Portal
27 January Semantically Coordinated E-Market Semantic Web Term Project Prepared by Melike Şah 27 January 2005.
E © 2002 Dario Aganovic Resource Description Framework Schema (RDFS) Dario Aganovic Industrial PhD-student NPI Production Kista, Ericsson AB and Production.
CS570 Artificial Intelligence Semantic Web & Ontology 2
CSE 428 Semantic Web Topics RDF Jeff Heflin Lehigh University.
RDFa: Embedding RDF Knowledge in HTML Some content from a presentation by Ivan Herman of the W3c, Introduction to RDFa, given at the 2011 Semantic Technologies.
Introduction to RDF and RDFS Editor: MR 3 Susumu Tamagawa OSM 2011, Lecture and Exercise, Web Intelligence.
The Vision and Basic Technologies of the Semantic Web.
Shelley Powers, O’Reilly SNU IDB Lab. Hyewon Kim
Jena a introduction Semantic Web Tools. Originally devised by HP Labs in Bristol, it was developed by Brian McBride of Hewlett-Packard and was derived.
ESDSWG2011 – Semantic Web session Semantic Web Sub-group Session ESDSWG 2011 Meeting – Semantic Web sub-group session Wednesday, November 2, 2011 Norfolk,
Master Informatique 1 Semantic Technologies Part 4Jena Werner Nutt.
RDF Tutorial.
Semantic Web Introduction
JENA –A SEMANTIC WEB TOOL by Ranjani Sankaran & krishna Priyanka Chebrolu.
© Copyright IBM Corporation 2014 Getting started with Rational Engineering Lifecycle Manager queries Andy Lapping – Technical sales and solutions Joanne.
Quratulain Rajput Faculty of Computer Science, IBA Spring2013
ICE0534 – Web-based Software Development ICE1338 – Programming for WWW Lecture #12 Lecture #12 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information.
Jena Sparql 4/11/2017.
 Copyright 2004 Digital Enterprise Research Institute. All rights reserved. SPARQL Query Language for RDF presented by Cristina Feier.
1 Semantic Web Technologies: The foundation for future enterprise systems Okech Odhiambo Knowledge Systems Research Group Strathmore University.
Chapter 3 RDF Syntax 1. Topics Basic concepts of RDF resources, properties, values, statements, triples URIs and URIrefs RDF graphs Literals and Qnames.
RDF(S) Tools Adrian Pop, Programming Environments Laboratory Linköping University.
Dr. Alexandra I. Cristea RDF.
COMP 6703 eScience Project Semantic Web for Museums Student : Lei Junran Client/Technical Supervisor : Tom Worthington Academic Supervisor : Peter Strazdins.
RDF Kitty Turner. Current Situation there is hardly any metadata on the Web search engine sites do the equivalent of going through a library, reading.
From SHIQ and RDF to OWL: The Making of a Web Ontology Language
Triple Stores.
Practical RDF Chapter 1. RDF: An Introduction
Logics for Data and Knowledge Representation
Semantic Web Exam 1 Review.
RDF & RDF Schema Machine Understandable Metadata for the Web Semantic Web - Spring 2006 Computer Engineering Department Sharif University of Technology.
Practical RDF Chapter 10. Querying RDF: RDF as Data Shelley Powers, O’Reilly SNU IDB Lab. Hyewon Lim.
Introduction to the Semantic Web and Linked Data Module 1 - Unit 2 The Semantic Web and Linked Data Concepts 1-1 Library of Congress BIBFRAME Pilot Training.
User Profiling using Semantic Web Group members: Ashwin Somaiah Asha Stephen Charlie Sudharshan Reddy.
Practical RDF Ch.10 Querying RDF: RDF as Data Taewhi Lee SNU OOPSLA Lab. Shelley Powers, O’Reilly August 27, 2004.
Problems with XML & XML Schemas XML falls apart on the Scalability design goal. 1.The order in which elements appear in an XML document is significant.
Dr. Bhavani Thuraisingham September 24, 2008 Building Trustworthy Semantic Webs Lecture #9: RDF and RDF Security.
Triple Stores. What is a triple store? A specialized database for RDF triples Can ingest RDF in a variety of formats Supports a query language – SPARQL.
Doc.: IEEE /0169r0 Submission Joe Kwak (InterDigital) Slide 1 November 2010 Slide 1 Overview of Resource Description Framework (RFD/XML) Date:
Semantic web course – Computer Engineering Department – Sharif Univ. of Technology – Fall RDF & RDF Schema Machine Understandable Metadata for the.
Linked Data & Semantic Web Technology The Semantic Web Part 5. Resource Description Framework (2) Dr. Myungjin Lee.
Semantic Web In Depth Resource Description Framework Dr Nicholas Gibbins –
Introduction to Persistent Identifiers
Chapter 2 RDF Syntax 1.
Triple Stores.
Jena 6/8/2018.
Resource Description Framework
RDF For Semantic Web Dhaval Patel 2nd Year Student School of IT
Triple Stores.
Semantic Web Basics (cont.)
Triple Stores.
Presentation transcript:

RDF and RDF Schema Raúl García-Castro, Óscar Corcho, Daniel Vila-Suero Ontology Engineering Group Universidad Politécnica de Madrid, Spain

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

RDF and RDF Schema RDF: Resource Description Framework Goal To describe the semantics of information in a machine- processable way W3C recommendations Model Syntax Semantics Database XML RDF(S) Schema RDF Schema Data RDF

RDF(S) in the Semantic Web

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

RDF statements Also known as “triples” [Subject, Predicate, Object] “Raúl is a member of the Ontology Engineering Group” [Raúl, is member of, Ontology Engineering Group] “Raúl’s full name is Raúl García Castro” [Raúl, has full name, Raúl García Castro] “Raúl was born on 26 December 1975” [Raúl, was born, 26 December 1975] “The Ontology Engineering Group web page is http://www.oeg-upm.net/” [Ontology Engineering Group, has web page, http://www.oeg-upm.net/] is member of Ontology Engineering Group Raúl Raúl Ontology Engineering Group has full name Raúl Raúl García Castro has birth date Raúl 26 December 1975 has web page Ontology Engineering Group http://www.oeg-upm.net/

Ontology Engineering Group RDF graphs RDF graphs are sets of triples has full name Raúl García Castro Raúl has birth date 26 December 1975 is member of has web page Ontology Engineering Group http://www.oeg-upm.net/

Ontology Engineering Group RDF literals Triple objects can be literals (character strings) Subject and predicates are always resources Literals can be typed Usually using XML Schema datatypes RDF provides the rdf:XMLLiteral datatype has full name “Raúl García Castro” Raúl has birth date “1975-12-26”^^xsd:date is member of has web page Ontology Engineering Group http://www.oeg-upm.net/

URIs in RDF URI component parts (RFC3986) URIs in RDF: http://www.oeg-upm.net:8080/Info/People?position=current#Raul URIs in RDF: Are URI references: URI + Fragment Can contain Unicode characters Identify resources and values (e.g., mailto:rgarcia@fi.upm.es) Scheme Authority Path Query Fragment http://www.oeg-upm.net/Properties#hasFullName “Raúl García Castro” http://www.oeg-upm.net/People#Raul “1975-12-26”^^xsd:date http://www.oeg-upm.net/Properties#hasBirthDate http://www.oeg-upm.net/Properties#isMemberOf http://www.oeg-upm.net/Properties#hasWebPage http://www.oeg-upm.net/Organization#OEG http://www.oeg-upm.net/

Namespaces in RDF Namespaces defined using XML qualified names URIs under a namespace are called vocabularies Prefix URI people http://www.oeg-upm.net/People# organization http://www.oeg-upm.net/Organization# properties http://www.oeg-upm.net/Properties# rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs http://www.w3.org/2000/01/rdf-schema# xsd http://www.w3.org/2001/XMLSchema# properties:hasFullName “Raúl García Castro” people:Raul “1975-12-26”^^xsd:date properties:hasBirthDate properties:isMemberOf properties:hasWebPage organization:OEG http://www.oeg-upm.net/

RDF is a URI-based vocabulary RDF resources are identified using URIs (blank nodes are an exception) Advantages: Flexibility Self-reference Reification Disadvantages: Complexity Validation Tool support meta:created meta:Triple1 “2012-02-26”^^xsd:date meta:subject meta:object meta:creationDate meta:predicate meta:equivalentTo properties:hasFullName people:Raul “Raúl García Castro”

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

Classifying resources The rdf:type property is used to classify resources in categories/classes The rdf:Property class is the class of all properties category:Person category:Animal Classes rdf:type rdf:type rdf:type rdf:type people:Raul people:Oscar people:Missy people:Fantasma Instances rdf:Property rdf:type rdf:type properties:hasFullName rdf:type

Blank nodes: structured property values Most real-world data involves structures that are more complicated than sets of RDF triple statements This intermediate URI does not need to have a name properties:hasFullName people:Raul properties:firstName properties:lastName “Raúl” “García Castro”

properties:hasEmailAddress RDF Containers Describe groups of things A book was created by several authors A lesson is taught by several persons etc. RDF provides a container vocabulary rdf:Bag. Group of resources or literals, including duplicates, where order is not significant rdf:Seq. Group of resources or literals, including duplicates, where order is significant rdf:Alt. Group of resources or literals that are alternatives (typically for a single value of a property) properties:hasEmailAddress rdf:type people:Raul rdf:Seq rdf:_1 rdf:_2 “rgarcia@fi.upm.es” “r.garcia@upm.es”

university:hasTeacher RDF Collections Groups of things represented as a list structure “A container with limits” Constructed using rdf:List, rdf:first, rdf:rest, and rdf:nil rdf:List rdf:type university:hasTeacher rdf:first university:Course1 people:Raul rdf:next rdf:first people:Oscar rdf:next rdf:nil

RDF Reification RDF statements about other RDF statements “Raúl believes that Oscar’s birthdate is on Feb 2nd, 1976 and that his e-mail address is ocorcho@fi.upm.es” Expressed using rdf:Statement, rdf:subject, rdf:predicate, and rdf:object, or using rdf:ID RDF Reification Allows expressing beliefs (and other modalities) Allows expressing trust models, digital signatures, etc. Allows expressing metadata about metadata people:Oscar modal:believes properties:hasEmailAddress properties:hasBirthDate people:Raul “ocorcho@fi.upm.es” “1976-02-02”^^xsd:date Reification using rdf:ID: http://www.w3.org/TR/rdf-primer/#example20

Main value of a structured value Sometimes one of the values of a structured value is the main one The weight of an item is 2.4 kilograms The main value is 2.4, which is expressed with rdf:value Scarcely used product:hasWeight product:Item1 rdf:value units:hasWeightUnit “2.4”^^xsd:float units:Kilogram

RDF vocabulary summary Classes Properties Individuals Classification rdf:Property rdf:type Containers rdf:Bag rdf:_1, rdf:_2, rdf:_3… rdf:Seq rdf:Alt Collections rdf:List rdf:first rdf:nil rdf:rest Reification rdf:Statement rdf:subject rdf:predicate rdf:object Values rdf:XMLLiteral rdf:value

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

RDF Serialisations Normative RDF/XML (http://www.w3.org/TR/rdf-syntax-grammar/) RDFa (http://www.w3.org/TR/rdfa-core/) Candidate Recommendation (19 February 2013) Turtle (http://www.w3.org/TR/turtle/) Alternative (for human consumption) Notation 3 (N3) (http://www.w3.org/DesignIssues/Notation3.html) N-Triples (http://www.w3.org/TR/rdf-testcases/#ntriples) TriX (http://www.w3.org/2004/03/trix/) … Important: the RDF serializations allow different syntactic variants. E.g., the order of RDF statements has no meaning

RDF/XML: XML Declaration and Document XML declaration (<?xml … ?>) Optional but recommended Document element (<rdf:RDF> … </rdf:RDF>) Optionally includes attributes for namespace definition: xml:base. Base URI other than the base URI of the document or external entity (for relative URIs) xmlns. Default namespace xmlns:xxxx. Namespace prefix <?xml version="1.0” encoding=”UTF-8"?> <rdf:RDF     xml:base="http://www.oeg-upm.net/ontologies/people"     xmlns="http://www.oeg-upm.net/ontologies/people#"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:people="http://www.ontologies.org/ont/people#"> …    </rdf:RDF>

RDF/XML: RDF resources people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage … <rdf:Description rdf:about="http://www.ontologies.org/ont/people#hasHomePage"/> <rdf:Description rdf:about="http://www.ontologies.org/ont/people#hasColleague"/> <rdf:Description rdf:about="http://www.ontologies.org/ont/people#hasName"/> <rdf:Description rdf:about="#Raul"/> <rdf:Description rdf:about="#Asun”/> <rdf:Description rdf:about="#Oscar”/> … Using the rdf namespace Relative to the base URI

RDF/XML: RDF properties people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/ ... <rdf:Description rdf:about="#Asun"> <person:hasColleague> <rdf:Description rdf:about="#Raul" /> </person:hasColleague> <rdf:Description rdf:about="#Asun”> <person:hasHomePage rdf:resource=”http://www.fi.upm.es”/> </rdf:Description> <rdf:Description rdf:about="#Oscar"> <person:hasColleague rdf:resource="#Asun"/> <person:hasName>Oscar Corcho García</person:hasName> Grouping multiple properties Empty property element

RDF/XML: Property and language attributes people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/ Language attribute ... <rdf:Description rdf:about="#Asun"> <person:hasPosition xml:lang=“en”>Professor</person:hasPosition> <rdf:Description person:hasName=“Oscar Corcho García” rdf:about="#Oscar"> <person:hasColleague rdf:resource="#Asun"/> </rdf:Description> Property attribute

RDF/XML: Typed and XML literals Typed literal ... <rdf:Description rdf:about="#Raul"> <person:hasHeight rdf:datatype=“http://www.w3.org/2001/XMLSchema#float”> 185 </person:hasHeight> <person:hasSignature rdf:parseType=”Literal”> <signature> <name>Raul</name> <email>rgarcia@fi.upm.es</email> </signature> </person:hasSignature> </rdf:Description> XML Literal

RDF/XML: Blank nodes Blank node identified Blank node omitted ... people:hasColleague people:hasColleague people:hasColleague Blank node identified ... <rdf:Description rdf:nodeID=”abc"> <person:hasColleague> <rdf:Description rdf:nodeID=”def” /> </person:hasColleague> <person:hasColleague rdf:parseType=“Resource” > </rdf:Description> Blank node omitted

RDF/XML: URI Abbreviations and Typed Nodes Abbreviation of URI with !ENTITY <?xml version="1.0” encoding=”UTF-8"?> <!DOCTYPE rdf:RDF [ <!ENTITY people "http://www.ontologies.org/ont/people#"> ]> <rdf:RDF ... <rdf:Description rdf:about=“#Asun”> <rdf:type rdf:resource=“&people;Person” /> </rdf:Description> <person:Person rdf:ID=“Oscar”> </person:Person> Abbreviation of URI with rdf:ID Both rdf:about and rdf:ID require xml:base Equivalent to rdf:about=“#name” name can only appear once in the scope of a xml:base Abbreviation of typed node

RDF/XML: Complete example people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/ <?xml version="1.0"?> <rdf:RDF     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:people="http://www.ontologies.org/ontologies/people#"     xmlns="http://www.oeg-upm.net/ontologies/people#"     xml:base="http://www.oeg-upm.net/ontologies/people">       <rdf:Description rdf:about="http://www.ontologies.org/ontologies/people#hasHomePage"/>     <rdf:Description rdf:about="http://www.ontologies.org/ontologies/people#hasColleague"/>     <rdf:Description rdf:about="http://www.ontologies.org/ontologies/people#hasName"/>       <rdf:Description rdf:about="#Raul"/>     <rdf:Description rdf:about="#Asun">         <people:hasColleague rdf:resource="#Raul"/>         <people:hasHomePage rdf:resource=”http://www.fi.upm.es”/>     </rdf:Description>     <rdf:Description rdf:about="#Oscar">         <people:hasColleague rdf:resource="#Asun"/>         <people:hasName>Oscar Corcho García</people:hasName>     </rdf:Description>  </rdf:RDF>

RDF serializations. Turtle Terse RDF Triple Language W3C Working Draft 09 August 2011 Extends N-Triples Adding parts of Notation 3 Subset of the SPARQL grammar A Turtle triple: subject predicate object . A Turtle comment: # This is a comment

Turtle: IRIs Enclosed in '<' and '>' Absolute <http://example.org/path/> <http://example.org/path#fragment> Relative to the current base IRI </path> <#fragment> <> Abbreviated using @prefix @prefix foo: <http://example.org/ns#> . @prefix : <http://other.example.org/ns#> . foo:bar foo: : . :bar : foo:bar . Definition of base IRI @base <http://example.org/ns/> . <a2> <http://example.org/ns/b2> <c2> .

Turtle: Literals Without linebreaks With linebreaks "simple literal" With linebreaks """this is a long literal""" Can have either language suffix or datatype but not both With language suffix "La ventana"@es With datatype IRI "mylexicaldata"^^<http://example.org/my/datatype> "10"^^xsd:decimal Literals without language tag or datatype are literals with the type xsd:string "10"  "10"^^xsd:string

Turtle: Blank nodes Using _:label :a :b _:n1 . Using [] :a :b [ :c :d ] . which is the same as: :a :b _:x . _:x :c :d .

Turtle: Abbreviations a is equivalent to rdf:type @prefix doc: <http://example.org/#ns> . <http://example.org/path> a doc:Document . Decimal integers -5  "-5"^^xsd:integer Decimal floating point double/fixed precision numbers 1.3e2  "1.3e2"^^xsd:double Decimal floating point arbitrary precision numbers 0.0  "0.0"^^xsd:decimal Boolean true  "true"^^xsd:boolean

Turtle: Abbreviating groups of triples Triples that only differ in the object :subject :predicate :object1 , :object2 . which is the same as :subject :predicate :object1 . :subject :predicate :object2 . Triples that vary only in predicate and object :subject :predicate1 :obj1 ; :predicate2 :obj2 . :subject :predicate1 :obj1 . :subject :predicate2 :obj2 .

Turtle: Abbreviating RDF Collections Sequence of terms enclosed in ( ) and separated with whitespace Provides a blank node at the start of RDF Collection which may be used in further abbreviations. @prefix : <http://example.org/foo> . :subject :predicate ( :a :b :c ) . :subject :predicate2 () .

Turtle: Complete example people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/ @base <http://www.oeg-upm.net/ontologies/people#> . @prefix people: <http://www.ontologies.org/ontologies/people#> . :Asun people:hasColleague :Raul ; people:hasHomePage <http://www.fi.upm.es/> . :Oscar people:hasColleague :Asun ; people:hasName "Óscar Corcho García" .

RDF Serialisations. RDFa people:hasColleague people:hasColleague people:Oscar people:Asun people:Raul people:hasName people:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body vocab="http://www.oeg-upm.net/ontologies/people#"> <div resource="Asun"> <h2 property="hasName">Asunción Gómez Pérez</h2> <a rel="hasHomePage" href="http://www.oeg-upm.net/">Has home page.</a> <div property="hasColleague" resource="Raul”>Is friend of Raúl.</div> </div> <div resource="Oscar"> <h2 property="hasName">Óscar Corcho García</h2> <div property="hasColleague" resource="Asun">Is friend of Asun.</div> </body> </html>

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

rdfs:ContainerMembershipProperty RDF Schema Extends RDF Allows describing classes of resources and their properties Adds constraints on models rdfs:member rdfs:seeAlso rdfs:isDefinedBy rdf:value rdfs:label rdfs:comment rdfs:Resource rdf:first rdf:subject rdf:predicate rdf:object rdf:type rdf:rest rdfs:subPropertyOf rdfs:subclassOf rdf:List rdfs:Container rdf:Statement rdf:Property rdfs:Class rdfs:Literal rdfs:domain rdfs:range rdf:Bag rdf:Seq rdf:Alt rdfs:ContainerMembershipProperty rdfs:Datatype rdf:XMLLiteral rdf:nil rdfs:member rdf:_1 rdf:_2 rdf:_3

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

Describing classes RDF(S) Person Data rdfs:Class person:Person rdf:type Person person:Person rdfs:subClassOf person:Professor rdfs:subClassOf person:FullProfessor person:AssociateProfessor rdfs:subClassOf person:InterimAssociateProfessor person:hasColleague person:hasColleague Data data:Oscar data:Asun data:Raul person:hasName person:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/

Describing individuals RDF(S) rdfs:Class rdf:type Person person:Person rdfs:subClassOf person:Professor rdfs:subClassOf person:FullProfessor person:AssociateProfessor rdfs:subClassOf person:InterimAssociateProfessor rdf:type rdf:type rdf:type person:hasColleague person:hasColleague Data data:Oscar data:Asun data:Raul person:hasName person:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/

Describing properties RDF(S) rdf:Property rdfs:Class rdf:type rdf:type Person rdfs:range rdfs:domain rdfs:Literal person:hasName person:Person rdfs:domain rdfs:range rdfs:subClassOf person:hasColleague person:Professor rdfs:subClassOf rdfs:domain person:hasHomePage person:FullProfessor person:AssociateProfessor rdfs:subClassOf person:InterimAssociateProfessor rdf:type rdf:type rdf:type person:hasColleague person:hasColleague Data data:Oscar data:Asun data:Raul person:hasName person:hasHomePage “Óscar Corcho García” http://www.oeg-upm.net/

“Resource for Raúl García Castro” Annotating resources rdfs:label “Raúl García” rdfs:label “Raúl” rdfs:comment data:Raul “Resource for Raúl García Castro” rdfs:seeAlso http://delicias.dia.fi.upm.es/~rgarcia/ rdfs:isDefinedBy http://delicias.dia.fi.upm.es/~rgarcia/foaf.rdf

RDF-S vocabulary summary Classes Properties Individuals Classification rdfs:Resource rdfs:subClassOf rdfs:Class rdfs:domain rdfs:range rdfs:subPropertyOf Datatypes rdfs:Literal rdfs:Datatype Containers rdfs:Container rdfs:member rdfs:ContainerMembershipProperty Annotation rdfs:label rdfs:comment rdfs:seeAlso rdfs:isDefinedBy

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

RDF/XML syntax (1/2) <?xml version="1.0"?> <!DOCTYPE rdf:RDF [ <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > <!ENTITY person "http://www.oeg-upm.net/ontologies/person#" > ]> <rdf:RDF xmlns="http://www.oeg-upm.net/ontologies/person#" xml:base="http://www.oeg-upm.net/ontologies/person" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:person="http://www.oeg-upm.net/ontologies/person#"> <rdfs:Property rdf:about="&person;hasColleague"> <rdfs:range rdf:resource="#Person"/> <rdfs:domain rdf:resource="#Person"/> </rdfs:Property> <rdfs:Property rdf:about="&person;hasHomePage"> <rdfs:domain rdf:resource="#FullProfessor"/> </rdfs:Property> <rdfs:Property rdf:about="&person;hasName"> <rdfs:domain rdf:resource="#Person"/> <rdfs:range rdf:resource="&rdfs;Literal"/> </rdfs:Property> ...

RDF/XML syntax (2/2) ... <rdfs:Class rdf:about="#AssociateProfessor"> <rdfs:subClassOf rdf:resource="#Professor"/> </rdfs:Class> <rdfs:Class rdf:about="#FullProfessor"> <rdfs:subClassOf rdf:resource="#Professor"/> </rdfs:Class> <rdfs:Class rdf:about="#InterimAssociateProfessor"> <rdfs:subClassOf rdf:resource="#AssociateProfessor"/> </rdfs:Class> <rdfs:Class rdf:about="#Person"/> <rdfs:Class rdf:about="#Professor"> <rdfs:subClassOf rdf:resource="#Person"/> </rdfs:Class> <FullProfessor rdf:about="#Asun"> <person:hasHomePage>http://www.fi.upm.es</person:hasHomePage> <person:hasColleague rdf:resource="#Raul"/> </FullProfessor> <AssociateProfessor rdf:about="#Oscar"> <person:hasName>Oscar Corcho García</person:hasName> <person:hasColleague rdf:resource="#Asun"/> </AssociateProfessor> <InterimAssociateProfessor rdf:about="#Raul"/> </rdf:RDF>

a is equivalent to rdf:type Turtle syntax (1/2) @base <http://www.oeg-upm.net/ontologies/person> . @prefix : <http://www.oeg-upm.net/ontologies/person#> . @prefix person: <http://www.oeg-upm.net/ontologies/person#> . :hasColleague a rdfs:Property . rdfs:domain :Person . rdfs:range :Person ; :hasHomePage a rdfs:Property . rdfs:domain :FullProfessor . :hasName a rdfs:Property . rdfs:domain :Person ; rdfs:range rdfs:Literal . … a is equivalent to rdf:type

a is equivalent to rdf:type Turtle syntax (2/2) … :Person a rdfs:Class . :Professor a rdfs:Class ; rdfs:subClassOf :Person . :FullProfessor a rdfs:Class ; rdfs:subClassOf :Professor . :AssociateProfessor a rdfs:Class ; :InterimAssociateProfessor a rdfs:Class ; rdfs:subClassOf :AssociateProfessor . :Asun a :FullProfessor ; :hasHomePage "http://www.fi.upm.es" ; :hasColleague :Raul . :Oscar a :AssociateProfessor ; :hasName "Oscar Corcho García" ; :hasColleague :Asun . :Raul a :InterimAssociateProfessor . a is equivalent to rdf:type

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

RDF(S) limitations RDFS too weak to describe resources in sufficient detail No localised range and domain constraints Can’t say that the range of hasChild is person when applied to persons and elephant when applied to elephants No existence/cardinality constraints Can’t say that all instances of person have a mother that is also a person, or that persons have exactly 2 parents No boolean operators Can’t say or, not, etc. No transitive, inverse or symmetrical properties Can’t say that isPartOf is a transitive property, that hasPart is the inverse of isPartOf or that touches is symmetrical Difficult to provide reasoning support No “native” reasoners for non-standard semantics May be possible to reason via FOL axiomatisation 53

Index Overview RDF RDF Schema Reasoning RDF(S) management APIs Introduction RDF components Serializing RDF RDF Schema Main RDF-S components Serializing RDF-S RDF(S) Limitations Reasoning Reasoning with RDF Reasoning with RDF-S RDF(S) management APIs

Sample RDF APIs Usually related to a RDF repository RDF libraries for different languages: Java, Python, C, C++, C#, .Net, Javascript, Tcl/Tk, PHP, Lisp, Obj-C, Prolog, Perl, Ruby, Haskell List in http://esw.w3.org/topic/SemanticWebTools Multilanguage: Redland RDF Application Framework (C, Perl, PHP, Python and Ruby): http://www.redland.opensource.ac.uk/ Java: Jena: http://jena.sourceforge.net/ Sesame: http://www.openrdf.org/ PHP: RAP - RDF API for PHP: http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/ Python: RDFLib: http://rdflib.net/ Pyrple: http://infomesh.net/pyrple/

Jena Java framework for building Semantic Web applications Open source Apache project Created by HP Labs The Jena framework includes: A RDF API An OWL API Reading and writing RDF in RDF/XML, N3 and N-Triples In-memory and persistent storage A rule based inference engine SPARQL query engine

Sesame A framework for storage, querying and inferencing of RDF and RDF Schema Java Library for handling RDF Database Server for (remote) access to repositories of RDF data Highly expressive query and transformation languages SeRQL, SPARQL Various back-ends Native Store RDBMS (MySQL, Oracle 10, DB2, PostgreSQL) Main memory Reasoning support RDF Schema reasoner OWL DLP (OWLIM) Domain reasoning (custom rule engine)

Jena example. Graph creation http://.../JohnSmith vcard:FN vcard:N John Smith vcard:Given vcard:Family John Smith // some definitions String personURI = "http://somewhere/JohnSmith"; String givenName = "John"; String familyName = "Smith"; String fullName = givenName + " " + familyName; // create an empty Model Model model = ModelFactory.createDefaultModel(); // create the resource // and add the properties cascading style Resource johnSmith = model.createResource(personURI) .addProperty(VCARD.FN, fullName) .addProperty(VCARD.N, model.createResource() .addProperty(VCARD.Given, givenName) .addProperty(VCARD.Family, familyName)); http://jena.sourceforge.net/tutorial/RDF_API/

Jena example. Read and write // create an empty model Model model = ModelFactory.createDefaultModel(); // use the FileManager to find the input file InputStream in = FileManager.get().open( inputFileName ); if (in == null) { throw new IllegalArgumentException("File not found"); } // read the RDF/XML file model.read(in, ""); // write it to standard out model.write(System.out); <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:vcard='http://www.w3.org/2001/vcard-rdf/3.0#' > <rdf:Description rdf:nodeID="A0"> <vcard:Family>Smith</vcard:Family> <vcard:Given>John</vcard:Given> </rdf:Description> <rdf:Description rdf:about='http://somewhere/JohnSmith/'> <vcard:FN>John Smith</vcard:FN> <vcard:N rdf:nodeID="A0"/> ... </rdf:RDF> http://jena.sourceforge.net/tutorial/RDF_API/

Some RDF editors Command line Online Ontology engineering environments Standalone Ganesha (http://event-horizon.kicks-ass.net/uni/ganesha/) IsaViz (http://www.w3.org/2001/11/IsaViz/) Morla (http://www.morlardf.net/) RDFAuthor (http://rdfweb.org/people/damian/RDFAuthor/) rdfEditor (http://www.dotnetrdf.org/content.asp?pageID=rdfEditor) RDF Editor in Java (http://sourceforge.net/projects/rdfeditor/) RdfGravity (http://semweb.salzburgresearch.at/apps/rdf-gravity/index.html) Rej (http://infinitesque.net/projects/Legere/components/Rej/) Rhodonite (http://rhodonite.angelite.nl/) Command line RDFe (http://infomesh.net/pyrple/rdfe/) Online RDF Editor (http://tesis-e.googlecode.com/svn/trunk/rdf-editor/index.html) Turtled (http://turtled.net/) Ontology engineering environments Protégé (http://protege.stanford.edu/) Altova SemanticWorks (http://www.altova.com/semanticworks/rdf-editor.html) TopBraid Composer (http://www.topquadrant.com/products/TB_Composer.html)

Main References Brickley D, Guha RV (2004) RDF Vocabulary Description Language 1.0: RDF Schema. W3C Recommendation 10 February 2004 http://www.w3.org/TR/PR-rdf-schema/ Beckett D (2004) RDF/XML Syntax Specification (Revised) W3C Recommendation 10 February 2004 http://www.w3.org/TR/REC-rdf-syntax/ Beckett D, Berners-Lee T, Prud'hommeaux E, Carothers G (Turtle: Terse RDF Triple Language. W3C Candidate Recommendation 19 February 2013) http://www.w3.org/TR/turtle/ Hayes P (2004) RDF Semantics W3C Recommendation 10 February 2004 http://www.w3.org/TR/rdf-mt/ RDF validators: http://www.w3.org/RDF/Validator/ http://www.rdfabout.com/demo/validator/ RDF resources: http://planetrdf.com/guide/

Thank you for your attention!