Publication des données

Publication des données

Resolution et services web

Résolution HTTP

SOAP, WSDL, REST

Linked Data et redirection

LSID Resolution

Publication des données

Services

Données

Métadonnées

Autres (générer des ID)

Résolution HTTP

http://data.examplecollection.org/specimen/12921
http://www.example.org/specimen/10FC9784-B30F-48ED-8DB5-FF65A2A9934E.rdf
http://www.example.org/specimen/10FC9784-B30F-48ED-8DB5-FF65A2A9934E
...

SOAP, WDSL

Simple Object Acccess Protocol

XML

Appels "fonctionnels" sur HTTP

WDSL (Web Service Description Language) pour décrire l'interface

SOAP

Avantages

Ouvert (protocoles de transport)

Indépendant de la plate-forme

Indépendant du langage

Extensible

Inconvénients

Lourd et verbeux

Couplage fort entre le serveur et ses clients

Exemple de fichier WDSL livré avec la sécification LSID

     1 <?xml version="1.0"?>
     2 
     3 <definitions xmlns:tns="http://www.omg.org/LSID/2003/Standard/WSDL"
     4         targetNamespace="http://www.omg.org/LSID/2003/Standard/WSDL"
     5         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     6         xmlns="http://schemas.xmlsoap.org/wsdl/">
     7 
     8     <message name="getAvailableServicesRequest">
     9         <part name="lsid" type="xsd:anyURI" />
    10     </message>
    11     <message name="getAvailableServicesResponse">
    12         <part name="wsdl" type="xsd:base64Binary" />
    13     </message>
    14 
    15     <message name="getDataRequest">
    16         <part name="lsid" type="xsd:anyURI" />
    17     </message>
    18     <message name="getDataResponse">
    19         <part name="data-attachment" type="xsd:base64Binary" />
    20     </message>
    21 
    22     <message name="getMetadataRequest">
    23         <part name="lsid" type="xsd:anyURI" />
    24         <part name="acceptedFormats" type="xsd:string" />
    25     </message>
    26     <message name="getMetadataResponse">
    27         <part name="format" type="xsd:string" />
    28         <part name="metadata-attachment" type="xsd:base64Binary" />
    29         <part name="expiration" type="xsd:dateTime" />
    30     </message>
    31 
    32     <portType name="LSIDAuthorityServicePortType">
    33         <operation name="getAvailableServices">
    34             <input message="tns:getAvailableServicesRequest" />
    35             <output message="tns:getAvailableServicesResponse" />
    36         </operation>
    37     </portType>
    38 
    39     <portType name="LSIDDataServicePortType">
    40         <operation name="getData">
    41             <input message="tns:getDataRequest" />
    42             <output message="tns:getDataResponse" />
    43         </operation>
    44     </portType>
    45 
    46     <portType name="LSIDMetadataServicePortType">
    47         <operation name="getMetadata">
    48             <input message="tns:getMetadataRequest" />
    49             <output message="tns:getMetadataResponse" />
    50         </operation>
    51     </portType>
    52 
    53 </definitions>
    

REST

Style d'architecture

  • Principes

    L'identification d'une ressource se fait via l'URI

    Utilise les methodes HTTP: GET, POST, PUT et DELETE, essentiellement

    Sans état

    HTML, XML, JSON, ...

  • Linked Data et redirection

    Chaque ressource est de-référençable en utilisant les protocoles Internet standard (HTTP)

    Chaque ressource pointe vers d'autres ressources autant que possible

    URIs et RDF

    Redirections HTTP (303) -> Apache mod_rewrite, etc

    Exemple: "John Smith" est identifié par "http://example.org/person/johnSmith"

    Résolution = redirection

    Resolution LSID

    La résolution se fait en 3 étapes:

    1. Interrogation du DNS de l'autorité -> SRV record
    2. Interrogation du service de résolution -> WDSL (interface publique)
    3. Données/métadonnées/...

    Exemple:

    urn:lsid:ubio.org:namebank:5598458
    
    % host -t SRV _lsid._tcp.ubio.org
    _lsid._tcp.ubio.org has SRV record 1 0 80 ANIMALIA.ubio.org.
        

    Resolution LSID

    http://animalia.ubio.org/authority/?lsid=urn:lsid:ubio.org:namebank:5598458

     1 <?xml version="1.0"?>
     2 <definitions xmlns:tns="http://www.example.org/SampleDataServices"
     3         targetNamespace="http://www.example.org/SampleDataServices"
     4         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     5         xmlns="http://schemas.xmlsoap.org/wsdl/"
     6         xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
     7         xmlns:httpsns="http://www.omg.org/LSID/2003/DataServiceHTTPBindings">
     8 
     9     <import namespace="http://www.omg.org/LSID/2003/DataServiceHTTPBindings" location="LSIDDataServiceHTTPBindings.wsdl" />
    10 
    11     <!-- Example HTTP GET Services (urlEncoding) -->
    12     <service name="MyDataHTTPService">
    13         <port name="MyDataServiceHTTPPort" binding="httpsns:LSIDDataHTTPBinding">
    14             <http:address location="http://animalia.ubio.org/authority/data.php" />
    15         </port>
    16     </service>
    17     <service name="MyMetadataHTTPService">
    18         <port name="MyMetadataServiceHTTPPort" binding="httpsns:LSIDMetadataHTTPBinding">
    19             <http:address location="http://animalia.ubio.org/authority/metadata.php" />
    20         </port>
    21     </service>
    22 
    23 </definitions>
    

    Resolution LSID

    http://animalia.ubio.org/authority/metadata.php?lsid=urn:lsid:ubio.org:namebank:5598458

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
     3     xmlns:dcterms="http://purl.org/dc/terms/"
     4     xmlns:ubio="urn:lsid:ubio.org:predicates:"
     5     xmlns:gla="urn:lsid:lsid.zoology.gla.ac.uk:predicates:"
     6     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
     7 
     8     <rdf:Description rdf:about="urn:lsid:ubio.org:namebank:5598458">
     9         <dc:identifier>urn:lsid:ubio.org:namebank:5598458</dc:identifier>
    10         <dc:creator rdf:resource="http://www.ubio.org"/>
    11         <dc:subject>Mus musculus albinus</dc:subject>
    12         <ubio:taxonomicGroup>Muridae</ubio:taxonomicGroup>
    13         <ubio:recordVersion>0</ubio:recordVersion>
    14         <ubio:canonicalName>Mus musculus albinus</ubio:canonicalName>
    15         <dc:title>Mus musculus albinus</dc:title>
    16         <dc:type>Scientific Name</dc:type>
    17         <ubio:lexicalStatus>Canonical form</ubio:lexicalStatus>
    18         <gla:rank>Trinomial</gla:rank>
    19     </rdf:Description>
    20 </rdf:RDF>
    

    LSID Resolution Service

    LSID Resolution Discovery Service

    LSID Assigning Service

    Vocabulaires

    Utiliser du vocabulaire déjà existant (ne pas réinventer la roue)

    -> Vocabulaire générique

    -> Vocabulaire spécialisé

    Vocabulaire générique: Dublin Core

    Permet de décrire des ressources numériques ou physiques et d’établir des relations avec d'autres ressources.

    Utilisé pour décrire les métadonnées

     1 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     2          xmlns:dc="http://purl.org/dc/elements/1.1/">
     3 
     4    <rdf:Description rdf:about="http://projects.biodiversity.be/africanrodentia/fda925e9-bf7f-11e1-8463-001e8c1e04ca">
     5 
     6       <dc:creator>Alax Cox</dc:creator>
     7       <dc:title>A Guide on Mus Musculus</dc:title>
     8       <dc:description>Describes the species Mus Musculus and blablabla.</dc:description>
     9       <dc:date>2001-01-20</dc:date>
    10 
    11    </rdf:Description>
    12 </rdf:RDF>
        
    http://dublincore.org
    http://wiki.dublincore.org/index.php/User_Guide
    

    Vocabulaire générique: FOAF

    Permet de décrire des personnes et les relations qu’elles entretiennent entre elles

     1 <?xml version="1.0"?>
     2 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     3          xmlns:foaf="http://xmlns.com/foaf/0.1/"
     4          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
     5 
     6 <foaf:Person rdf:nodeID="harry">
     7     <foaf:name>Harry Osborn</foaf:name>
     8     <foaf:gender>Male</foaf:gender>
     9     <foaf:title>Mr</foaf:title>
    10     <foaf:givenname>Harry</foaf:givenname>
    11     <rdfs:seeAlso rdf:resource="http://www.osborn.com/harry.rdf"/>
    12 </foaf:Person>
    13 
    14 <foaf:Person>
    15     <foaf:name>Peter Parker</foaf:name>
    16 
    17     <foaf:knows rdf:nodeID="harry" />
    18 
    19     <foaf:knows>
    20         <foaf:Person>
    21             <foaf:name>Aunt May</foaf:name>
    22         </foaf:Person>
    23     </foaf:knows>
    24 </foaf:Person>
    25 
    26 </rdf:RDF>
    
    http://www.foaf-project.org/
    

    Vocabulaire spécialisé: Darwin Core & ABCD

    Darwin Core

    Ensemble de termes pour faciliter le partage de l'information sur la diversité biologique.

    Standard TDWG très utilisé dans le domaine de la biodiversité (GBIF, ...)

    Taxons, observations, specimens, échantillons, ...

    Léger et extensible (dans sa nouvelle édition)

    IPT

    http://www.tdwg.org/standards/450
    

    Vocabulaire spécialisé: Darwin Core & ABCD

    ABCD

    Schéma très structuré qui permet de décrire des spécimens et des données d'observation.

    ABCD contient près de 700 elements

    Lourd, mais très complet

    Biocase

    http://www.tdwg.org/standards/115
    

    Note: le Darwin Core de base peut généralement être mappé en ABCD.

    Exemple: Darwin Core & Dublin Core

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     3          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     4          xmlns:dwc="http://rs.tdwg.org/dwc/terms/"
     5          xmlns:dc="http://purl.org/dc/elements/1.1/">
     6     <rdf:Description rdf:about=" http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66">
     7         <rdfs:type rdf:resource="http://rs.tdwg.org/dwc/terms/Taxon"/>
     8         <dwc:basisOfRecord rdf:resource="http://rs.tdwg.org/dwc/dwctype/Taxon"/>
     9         <dc:modified>2007-05-04T18:13:51.0Z</dc:modified>
    10         <dc:language>en</dc:language>
    11         <dwc:scientificNameID rdf:resource="http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66"/>
    12         <dwc:acceptedNameUsageID rdf:resource="http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66"/>
    13         <dwc:originalNameUsageID rdf:resource="http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66"/>
    14         <dwc:scientificName>Amanita alba Lam.</dwc:scientificName>
    15         <dwc:acceptedNameUsage>Amanita alba Lam.</dwc:acceptedNameUsage>
    16         <dwc:parentNameUsage>Amanita alba Lam.</dwc:parentNameUsage>
    17         <dwc:originalNameUsage>Amanita alba Lam.</dwc:originalNameUsage>
    18         <dwc:nameAccordingTo>Smith, T. Fungi of Earth</dwc:nameAccordingTo>
    19         <dwc:namePublishedIn>Encycl. Méth. Bot .1(1): 107 (1783)</dwc:namePublishedIn>
    20         <dwc:higherClassification>Fungi, Basidiomycota, Agaricomycetes, Agaricomycetidae, Agaricales, Amanitaceae</dwc:higherClassification>
    21         <dwc:kingdom>Fungi</dwc:kingdom>
    22         <dwc:phylum>Basidiomycota</dwc:phylum>
    23         <dwc:class>Agaricomycetes</dwc:class>
    24         <dwc:order>Agaricales</dwc:order>
    25         <dwc:family>Amanitaceae</dwc:family>
    26         <dwc:genus>Amanita</dwc:genus>
    27         <dwc:specificEpithet>alba</dwc:specificEpithet>
    28         <dwc:scientificNameAuthorship>Lam.</dwc:scientificNameAuthorship>
    29         <dwc:taxonRank>species</dwc:taxonRank>
    30         <dwc:nomenclaturalCode>ICBN</dwc:nomenclaturalCode>
    31         <dwc:taxonomicStatus>accepted</dwc:taxonomicStatus>
    32     </rdf:Description>
    33 </rdf:RDF>
    

    Attention si l'on a plusieurs identifiants pour la même ressource

    Exemple:

    Solution: rdf:seeAlso ou dc:source

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     3     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     4     xmlns:dwc="http://rs.tdwg.org/dwc/terms/"
     5     xmlns:dc="http://purl.org/dc/elements/1.1/"
     6     xmlns:owl="http://www.w3.org/2002/07/owl#">
     7     <rdf:Description rdf:about=" http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66">
     8         <dc:modified>2007-05-04T18:13:51.0Z</dc:modified>
     9         <dc:language>en</dc:language>
    10         <dwc:basisOfRecord>Taxon</dwc:basisOfRecord>
    11         <dwc:scientificNameID rdf:resource="http://www.example.org/taxon/7217D220-836A-11DF-8395-0800200C9A66"/>
    12         <rdf:seeAlso rdf:resource="urn:lsid:blabla.org:names:123456"/>
    13         <dc:source rdf:resource="urn:lsid:blabla.org:names:123456"/>
    14     </rdf:Description>
    15 </rdf:RDF>
    

    Vocabulaire spécialisé: OGC (KML, GML, ...)

    Vocabulaire utilisé pour les données géographiques

    Permet de représenter des points, polygones, lignes, ...

     1 <gml:Point gml:id="p21" srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
     2     <gml:coordinates>45.67, 88.56</gml:coordinates>
     3 </gml:Point>
     4 
     5 <gml:Polygon>
     6     <gml:outerBoundaryIs>
     7     <gml:LinearRing>
     8     <gml:posList>0,0 100,0 100,100 0,100 0,0</gml:posList>
     9     </gml:LinearRing>
    10     </gml:outerBoundaryIs>
    11 </gml:Polygon>
    12 
    13 <gml:LineString>
    14     <gml:posList>100,200 150,300</gml:posList>
    15 </gml:LineString>
    

    Mapserver, Geoserver, WFS, WMS

    http://www.opengeospatial.org/
    

    Vocabulaire spécialisé: autres ...

    Audubon Core

    Permet de décrire les métadonnées associées aux ressources multimedia

    http://species-id.net/wiki/Audubon_Core

    Natural Collections Descriptions (NCD)

    Permet d'échanger des données pour des collections (herbarium, ...).

    http://www.tdwg.org/standards/312/

    ...

    http://www.tdwg.org/standards/
    http://vocabularies.gbif.org/

    Introduction à RDF

    Ressource Description Framework

    Modèle de graphe destiné à décrire de façon formelle les ressources Web et leurs métadonnées

    Web sémantique

    Introduction à RDF: RDFS

    RDF Schema

    Fournit les éléments de base pour la définition d'ontologies

    Structurer des ressources RDF

    fin (:

    /

    #