The Semantic Web meets Resource Management · Terena EuroCAMP, 2006-04-03 RDF 101 The Semantic Web...
Transcript of The Semantic Web meets Resource Management · Terena EuroCAMP, 2006-04-03 RDF 101 The Semantic Web...
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 standard2
Metadata
A metadata record consists of a set of attributes, or elements, necessary to describe the resource in question.
3
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
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 propertyDon’t forget the ‘.’
5
Directed graph
<http://www.terena.nl/friend#roland>
<http://www.openmetadir.org/om/0.1/element#knows>
<http://www.terena.nl/friend#diego>
6
RDF serializationsRDF101 has an author who is Roland HedbergN-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
Sharing conceptsProperties 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
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
friend:roland om:knows friend:diego; foaf:topic_interest “Skiing”@en .
friend:roland
friend:DIEGO"Skiing"
om:knowsfoaf:topic_interest
10
friend:roland om:knows friend:diego; foaf:topic_interest “Skiing”@en ; foaf:currentproject “Spocp”,”OpenMetaDir”,”HLS”,”Swami/MD” .
friend:roland
"Skiing"
om:knowsfoaf:topic_interest
foaf:currentProject
"Openmetadir"
"HLS"
"SWAMI/MD"
"Spocp"
friend:DIEGO
11
friend:roland
"Ton"
"Skiing"@en
om:knowsfoaf:topic_interest
"Openmetadir"
"HLS"
"SWAMI/MD"
"Spocp"
"Verschuren"
FOAF:FirstnameFOAF:FamilyName
"Holländare"@se
om:citizenship
foaf:currentProject
friend:roland om:knows [ foaf:firstname “Ton”; foaf:familyname “Verschuren”; om:citizenship “Holländare”@se ];
foaf:topic_interest “Skiing”@en ; foaf:currentproject “Spocp”,”OpenMetaDir”,”HLS”,”Swami/MD” .
12
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
The Web Ontology Language (OWL)
supports
Sharing information and knowledge (for interoperability)Defining the relationships between different resourcesUnderstanding of the domainRepresentation of conceptualization
14
!!!
An ontology differs from an XML schema in that it is a knowledge representation, not a message format
15
An oncology encompasses four concepts
ClassesRelationship between classesProperties of classesConstrains on relationship between the classes and properties of the classes
16
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
So What Might a OWL ontology
look like !?
18
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
Simple properties
A property is a binary relation. Two types of properties are distinguished:datatype properties, relations between instances of classes and RDF literals and XML Schema datatypes.object properties, relations between instances of two classes.
20
Simple Property Restrictions
DomainRange
21
Property Characteristics
TransitivePropertySymmetricPropertyFunctionalPropertyInverseOfInverseFunctionalProperty
22
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
restrictions
allValuesFrom, someValuesFromcardinality, minCardinality, maxCardinalityhasValue
24
Ontology Mapping
equivalentClass, equivalentPropertysameAsdifferentFrom,AllDifferent
intersectionOf,unionOf,oneOfdisjointWith
25
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
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, owl: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
Class description (foaf)
<http://xmlns.com/foaf/0.1/Person> a :Class, owl: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>; owl: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
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
There is a more to OWL but we’ll take that another time
30
RDF and Identity/Resource
ManagementMiddleware is a lot about managing objects/resources more specifically metadata about those.Identity management just one partIf you want to future-proof your investment don’t chose a limiting frameworkAnd for godness sake describe your knowledge representation !
31
Resource Management
Lots of sources and sinks with their view of the worldHarmonised view is essentialRelationship between metadata from different places should be possible to expressVersion handling
32
We are writing ontologies for:
PersonOrganisation
RoleGroup
CourseCourseInstance
...
33
Not just ontologies
Ontologies for sources and sinks as well as for the metadirectory/registryThe ontology relationsship between sources/sinks and the metadirectory/registry
34
The picture of an ontology
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» affi l iation: 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..*]
- primaryAffi l iation: Affi l iation
- affi l iation: Affi liation [0..*]
- «Not Null» primaryLanguage: String = SV
- «Not Null» state: ProvisioningState = created
- «type» exportLevel: MultiLanguageType = {protected, wor...
- personHistory: PersonHistory [1..*]
- affi l iationHistory: Affil iationHistory [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
Affi l iation
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
- affi liation: Affi liation
- «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
- orgnr: 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
- orgnr: 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..11
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
Done !
36
N3 @prefix : <http://www.openmetadir.org/om/1.0/attr#> . @prefix om: <http://www.openmetadir.org/om/1.0/om#> . om:add om:data [ :associatedDomain "umu.se"; :uid "umun0001"; :formalName "Umea University"@en, "Umeå universitet"; :lin "UMUID:1920187510089495044"; :name "umu", "umu"@en ]; om:eid "1"; om:objecttype "org"; om:oid "UMUID:1920187510089495044"; om:src "kdb" .
37