RDF 101 The Semantic Web meets Resource Management Terena - - PowerPoint PPT Presentation

rdf 101
SMART_READER_LITE
LIVE PREVIEW

RDF 101 The Semantic Web meets Resource Management Terena - - PowerPoint PPT Presentation

RDF 101 The Semantic Web meets Resource Management Terena EuroCAMP, 2006-04-03 <roland.hedberg@adm.umu.se> 1 The Resource Description Framework The Resource Description Framework (RDF) is a language for representing information about


slide-1
SLIDE 1

Terena EuroCAMP, 2006-04-03 <roland.hedberg@adm.umu.se>

RDF 101

The Semantic Web meets Resource Management

1

slide-2
SLIDE 2

The Resource Description Framework

The Resource Description Framework (RDF) is a language for representing information about things (metadata) that can be identified on the Web, even when they cannot be directly retrieved on the Web.

A W3C standard

2

slide-3
SLIDE 3

Metadata

A metadata record consists of a set of attributes, or elements, necessary to describe the resource in question.

3

slide-4
SLIDE 4

RDF basics

Information is a collection of statements, each with a subject,verb and object - and nothing else. Everything, be it subject,verb or object, is identified with a Uniform Resource Identifier. One exception; a object can be a literal (string, integer,..)

4

slide-5
SLIDE 5

subject,verb and object

S: <http://www.terena.nl/friend#roland> V: <http://www.openmetadir.org/om/0.1/element#knows> O: <http://www.terena.nl/friend#diego> . Everything is identified by a URI The verb is also known as a predicate and what you use as a predicate is a property Don’t forget the ‘.’

5

slide-6
SLIDE 6

Directed graph

<http://www.terena.nl/friend#roland> <http://www.openmetadir.org/om/0.1/element#knows> <http://www.terena.nl/friend#diego>

6

slide-7
SLIDE 7

RDF serializations

RDF101 has an author who is Roland Hedberg

N-Triples <http://www.terena.nl/events/eurocamp2006#rdf101> <http://purl.org/dc/elements/ 1.1#author> “Roland Hedberg” . N3 @prefix dc: <http://purl.org/dc/elements/1.1#> . @prefix ec06: <http://www.terena.nl/events/eurocamp2006#> . ec06:rdf101 dc:author “Roland Hedberg” . RDF/XML

<rdf:RDF xmlns="http://purl.org/dc/elements/1,1#" xmlns:dc="http://purl.org/dc/elements/1,1#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="http://www.terena.nl/events/eurocamp2006#rdf101"> <author>Roland Hedberg</author> </rdf:Description>

</rdf:RDF>

7

slide-8
SLIDE 8

Sharing concepts

Properties are defined in contexts Are these the same ? title = title Are these ? http://purl.org/dc/elements/1.1/title = http://openmetadir.org/om/0.1/title

8

slide-9
SLIDE 9

From here on we’ll use this:

@prefix foaf: <http://xmlns.com/foaf/0.1/> @prefix dc: <http://purl.org/dc/elements/1.1/> @prefix om: <http://www.openmetadir.org/om/0.1/> @prefix friend: <http://www.terena.nl/friend#>

9

slide-10
SLIDE 10

friend:roland om:knows friend:diego; foaf:topic_interest “Skiing”@en .

friend:roland friend:DIEGO "Skiing"

  • m:knows

foaf:topic_interest 10

slide-11
SLIDE 11

friend:roland om:knows friend:diego; foaf:topic_interest “Skiing”@en ; foaf:currentproject “Spocp”,”OpenMetaDir”,”HLS”,”Swami/MD” .

friend:roland "Skiing"

  • m:knows

foaf:topic_interest foaf:currentProject "Openmetadir" "HLS" "SWAMI/MD" "Spocp" friend:DIEGO 11

slide-12
SLIDE 12

friend:roland "Ton" "Skiing"@en

  • m:knows

foaf:topic_interest "Openmetadir" "HLS" "SWAMI/MD" "Spocp" "Verschuren" FOAF:Firstname FOAF:FamilyName "Holländare"@se

  • m:citizenship

foaf:currentProject

friend:roland om:knows [ foaf:firstname “Ton”; foaf:familyname “Verschuren”;

  • m:citizenship “Holländare”@se ];

foaf:topic_interest “Skiing”@en ; foaf:currentproject “Spocp”,”OpenMetaDir”,”HLS”,”Swami/MD” .

12

slide-13
SLIDE 13

OWL

The OWL Web Ontology Language is intended to provide a language that can be used to describe the classes and relations between them that are inherent in Web documents and applications.

13

slide-14
SLIDE 14

The Web Ontology Language (OWL) supports

Sharing information and knowledge (for interoperability) Defining the relationships between different resources Understanding of the domain Representation of conceptualization

14

slide-15
SLIDE 15

!!!

An ontology differs from an XML schema in that it is a knowledge representation, not a message format

15

slide-16
SLIDE 16

An oncology encompasses four concepts

Classes Relationship between classes Properties of classes Constrains on relationship between the classes and properties of the classes

16

slide-17
SLIDE 17

OWL types

OWL Lite; Supports simple classifications, allowing only cardinalities of 0 and 1 and only minimal constrains. OWL DL; Supports more complex ontologies, but with some guarantees, such as processing finishing in finite time. OWL Full; maximum freedom of RDF, with no computational guarantees.

17

slide-18
SLIDE 18

So What Might a OWL ontology look like !?

18

slide-19
SLIDE 19

Basic Elements

The most basic concepts in a domain should correspond to classes that are the roots of various taxonomic trees. Properties let us assert general facts about the members of classes and specific facts about individuals. An individual is minimally introduced by declaring it to be a member of a class

19

slide-20
SLIDE 20

Simple properties

A property is a binary relation. Two types

  • f properties are distinguished:

datatype properties, relations between instances of classes and RDF literals and XML Schema datatypes.

  • bject properties, relations between instances
  • f two classes.

20

slide-21
SLIDE 21

Simple Property Restrictions

Domain Range

21

slide-22
SLIDE 22

Property Characteristics

TransitiveProperty SymmetricProperty FunctionalProperty InverseOf InverseFunctionalProperty

22

slide-23
SLIDE 23

Property restrictions

In addition to designating property characteristics, it is possible to further constrain the range of a property in specific contexts in a variety of ways.

23

slide-24
SLIDE 24

restrictions

allValuesFrom, someValuesFrom cardinality, minCardinality, maxCardinality hasValue

24

slide-25
SLIDE 25

Ontology Mapping

equivalentClass, equivalentProperty sameAs differentFrom,AllDifferent intersectionOf,unionOf,

  • neOf

disjointWith

25

slide-26
SLIDE 26

Property description (dc)

@prefix dcns: <http://purl.org/dc/elements/1.1/> @prefix dctermsns: <http://purl.org/dc/terms/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix : <http://www.w3.org/2000/01/rdf-schema#> . dcns:title a rdf:Property; dcns:description "Typically, a Title will be a name by which the resource is formally known."@en-US; dcns:type <http://dublincore.org/usage/documents/principles/#element>; dctermsns:hasVersion <http://dublincore.org/usage/terms/history/#title-004>; dctermsns:issued "1999-07-02"; dctermsns:modified "2002-10-04"; :comment "A name given to the resource."@en-US; :isDefinedBy <http://purl.org/dc/elements/1.1/>; :label "Title"@en-US .

26

slide-27
SLIDE 27

property definition (foaf)

@prefix : <http://www.w3.org/2000/01/rdf-schema#> . @prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> . <http://xmlns.com/foaf/0.1/family_name> a rdf:Property,

  • wl:DatatypeProperty;

:comment "The family_name of some person."; :domain <http://xmlns.com/foaf/0.1/Person>; :isDefinedBy <http://xmlns.com/foaf/0.1/>; :label "family_name"; :range :Literal; vs:term_status "testing" .

27

slide-28
SLIDE 28

Class description (foaf)

<http://xmlns.com/foaf/0.1/Person> a :Class,

  • wl:Class;

:comment "A person."; :isDefinedBy <http://xmlns.com/foaf/0.1/>; :label "Person"; :subClassOf con:Person, wgs:SpatialThing, <http://xmlns.com/foaf/0.1/Agent>, <http://xmlns.com/wordnet/1.6/Agent>, <http://xmlns.com/wordnet/1.6/Person>;

  • wl:disjointWith <http://xmlns.com/foaf/0.1/Document>,

<http://xmlns.com/foaf/0.1/Organization>, <http://xmlns.com/foaf/0.1/Project>; vs:term_status "stable" .

28

slide-29
SLIDE 29

super classes

<http://www.w3.org/2000/10/swap/pim/contact#Person> a :Class; :comment "A person in the normal sense of the word."; :subClassOf :SocialEntity . <http://www.w3.org/2000/10/swap/pim/contact#SocialEntity> a rdfs:Class; :comment "The sort of thing which can have a phone number." . <http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing> a :Class; :comment "Anything with spatial extent, i.e. size, shape, or position. e.g. people, places, bowling balls, as well as abstract areas like cubes."; :label "SpatialThing" . <http://xmlns.com/wordnet/1.6/Agent> a :Class; :comment "an active and efficient cause; capable of producing a certain effect; \"their research uncovered new disease agents\""; :label "Agent [ 1 ]"; :subClassOf <http://xmlns.com/wordnet/1.6/Causal_agent> . <http://xmlns.com/wordnet/1.6/Person> a :Class; :comment "a human being; \"there was too much for one person to do\""; :label "Person [ 1 ]"; :subClassOf <http://xmlns.com/wordnet/1.6/Organism> . <http://xmlns.com/wordnet/1.6/Organism> a :Class; :comment "a living thing that has (or can develop) the ability to act or function independently"; :label "Organism [ 1 ]"; :subClassOf <http://xmlns.com/wordnet/1.6/Living_thing> .

29

slide-30
SLIDE 30

There is a more to OWL but we’ll take that another time

30

slide-31
SLIDE 31

RDF and Identity/ Resource Management

Middleware is a lot about managing objects/ resources more specifically metadata about those. Identity management just one part If you want to future-proof your investment don’t chose a limiting framework And for godness sake describe your knowledge representation !

31

slide-32
SLIDE 32

Resource Management

Lots of sources and sinks with their view of the world Harmonised view is essential Relationship between metadata from different places should be possible to express Version handling

32

slide-33
SLIDE 33

We are writing

  • ntologies for:

Person Organisation Role Group Course CourseInstance ...

33

slide-34
SLIDE 34

Not just

  • ntologies

Ontologies for sources and sinks as well as for the metadirectory/registry The ontology relationsship between sources/ sinks and the metadirectory/registry

34

slide-35
SLIDE 35

The picture of an

  • ntology
cd Omnia {xor} Employee
  • «type» type: MultiLanguageType = {RegularEmploym...
  • «type» position: MultiLanguageType = {primulapositions}
Function
  • «type» type: MultiLanguageType = {KIMKAT, Admini...
  • «type» function: MultiLanguageType = {President, Vic...
  • «Not Null» affiliation: Member
  • «Not Null» organization: Organization
  • phone: Phone [0..*]
  • address: Address [0..*]
  • «Not Null» fromDate: date = current_date
  • toDate: date
Person
  • «Not Null» LIN: int
  • uid: String
  • password: String
  • clientCertificates: X509Certificate[]
  • KIMKATEmail: String
  • email: String [0..*] {ordered}
  • identifier: PersonalIdentifier [1..*]
  • name: Name [1..*]
  • title: Title [0..*]
  • address: Address [0..*]
  • phone: Phone [0..*]
  • «type» sex: MultiLanguageType = {M,F,Unknown} d...
  • birth: Date
  • homepage: String
  • contactInfo: ContactInfo [0..*]
  • primaryAffiliation: Affiliation
  • affiliation: Affiliation [0..*]
  • «Not Null» primaryLanguage: String = SV
  • «Not Null» state: ProvisioningState = created
  • «type» exportLevel: MultiLanguageType = {protected, wor...
  • personHistory: PersonHistory [1..*]
  • affiliationHistory: AffiliationHistory [1..*]
Student
  • «type» type: MultiLanguageType = {programmeStude...
  • «type» position: MultiLanguageType = {ladokpositions}
Name
  • firstName: String [1..*] {ordered}
  • «Not Null» givenNameIndex: int = 0
  • middleName: String
  • surName: String
  • «Not Null» displayName: String
Affiliation
  • phone: Phone [0..*]
  • address: Address [0..*]
  • contract: Contract
  • «Not Null» fromDate: date = current_date
  • toDate: date
  • «Not Null» organization: OfficialOrganization
  • «Not Null» state: ProvisioningState
Address
  • «type» type: MultiLanguageType = {visitingAddres...
  • addressLines: String [0..*] {ordered}
  • province: String
  • postalCode: String
  • city: String
  • «Not Null» country: Country
  • «Not Null» fromDate: date = current_date
  • toDate: date
  • «Not Null» isTemporary: boolean = false
Phone
  • «type» type: MultiLanguageType = {regular phone,...
  • «Not Null» countryCode: Country = SE
  • «Not Null» number: String
Affiliate
  • «type» type: MultiLanguageType = {Worker, Consul...
  • employedBy: ExternalContact
  • «Not Null» KIMKATValidTo: date
Affiliation Member
  • function: Function [0..*]
  • «Not Null» percentage: int = 0
Alumn
  • «type» type: MultiLanguageType = {studAlumn, emp...
Organization
  • name: OrgName [1..*]
  • parent: Organization
  • phone: Phone [0..*]
  • address: Address [0..*]
  • homePage: String
  • contactInfo: String
  • «Not Null» fromDate: date = current_date
  • toDate: date
  • relationship: OrganizationRelationship [0..*]
  • function: Function [0..*]
SupportOrganization
  • «type» type: MultiLanguageType = {Board, Committ...
PersonalIdentifier
  • «type» type: MultiLanguageType = {SSNPersonalIde...
  • «Not Null» value: String
Title
  • «type» type: MultiLanguageType = {additional, ac...
  • «type» title: MultiLanguageType = {Professor, Lec...
Other
  • «type» type: MultiLanguageType
  • «type» position: MultiLanguageType = {kaffpositions}
  • employedBy: ExternalContact
  • «Not Null» KIMKATValidTo: date
Prov isioningState
  • «type» state: MultiLanguageType = {catalogueonly,...
  • attributes: StateAttribute [0..*]
OrgName
  • «Not Null» name: String
  • shortName: String
  • displayName: String
  • «Not Null» language: String = SV
  • description: String
StateAttribute
  • «Not Null» attribute: String
  • value: String
AffiliationHistory
  • affiliation: Affiliation
  • «type» state: MultiLanguageType = {catalogueonly,...
  • «type» reason: Reason
  • «Not Null» timestamp: date = current_timestamp
ExternalContact
  • «Not Null» company: ExternalCompany
  • contactPerson: String
  • phone: String
  • email: String
ExternalCompany
  • rgnr: String
  • «type» type: MultiLanguageType = {SSL, Company/O...
  • «Not Null» name: String
  • address: String
  • homepage: String
CooperationOrganization
  • «type» type: MultiLanguageType = {Centre of Rese...
OfficialOrganization
  • «type» type: MultiLanguageType = {Institution, K...
Country
  • «Not Null» countryCode: String
  • «type» countryName: MultiLanguageType
  • «Not Null» phoneCode: String = 46
ExtraOrganization
  • rgnr: String
ContactInfo
  • name: String
  • «Not Null» phone: String
  • relation: String
  • «Not Null» prio: int = 0
OrganizationRelationship
  • «type» type: MultiLanguageType
  • «Not Null» fromDate: date = current_date
  • toDate: date
  • «Not Null» orgA: Organization
  • «Not Null» orgB: Organization
Name: Omnia Author: Helena Larsson Version: 1.0 Created: 2001-07-01 00:00:00 Updated: 2006-01-18 00:00:00 PersonHistory
  • person: Person
  • «type» state: MultiLanguageType = {catalogueonly,...
  • «type» reason: Reason
  • «Not Null» timestamp: date = current_timestamp
MultiLanguageType
  • id: int
  • values: Map<String, String>
Contract
  • «type» contractReason: MultiLanguageType [1..*]
CooperationOrganization::CollectionNode
  • name: CollNodeName [1..*]
  • parent: CollectionNode
  • leaf: Organization [0..1]
CollNodeName
  • «Not Null» name: String
  • description: String
  • language: String = sv
1 1..* 1 0..* 0..1 0..* 1 0..* 1 1..* 0..* 1 1 1..* 1 1 1 0..* 1..* 1 0..* 1 1 1 1 0..* 0..1 0..* 0..* 1 0..* 1 0..* 0..1 0..* 0..1 1 0..* 0..1 0..* 1 1..* 1 0..* 1 0..* 1 +orgB 0..* 1 +orgA 0..* 1 1..* 0..* 1 0..1 0..* 0..1 1 0..* 0..1 1..* 1 Name: Package: Version: Author: Omnia Omnia 1.0 Helena Larsson

35

slide-36
SLIDE 36

Done !

36

slide-37
SLIDE 37

N3

@prefix : <http://www.openmetadir.org/om/1.0/attr#> . @prefix om: <http://www.openmetadir.org/om/1.0/om#> .

  • m:add om:data [

:associatedDomain "umu.se"; :uid "umun0001"; :formalName "Umea University"@en, "Umeå universitet"; :lin "UMUID:1920187510089495044"; :name "umu", "umu"@en ];

  • m:eid "1";
  • m:objecttype "org";
  • m:oid "UMUID:1920187510089495044";
  • m:src "kdb" .

37