assemblee-virtuelle / pair

Ontologie PAIR: Projets, Acteurs, Idées, Ressources
http://www.virtual-assembly.org/
GNU Affero General Public License v3.0
23 stars 6 forks source link

Proposer un fichier de contexte JSON-LD #86

Open srosset81 opened 4 years ago

srosset81 commented 4 years ago

Cela permet de faciliter l'usage de l'ontologie PAIR pour les données JSON-LD.

https://www.w3.org/TR/2014/REC-json-ld-20140116/#advanced-context-usage

Voilà par exemple le fichier de contexte pour l'ontologie ActivityStreams (visible sur https://www.w3.org/ns/activitystreams en utilisant un header application/json):

{
  "@context": {
    "@vocab": "_:",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "as": "https://www.w3.org/ns/activitystreams#",
    "ldp": "http://www.w3.org/ns/ldp#",
    "id": "@id",
    "type": "@type",
    "Accept": "as:Accept",
    "Activity": "as:Activity",
    "IntransitiveActivity": "as:IntransitiveActivity",
    "Add": "as:Add",
    "Announce": "as:Announce",
    "Application": "as:Application",
    "Arrive": "as:Arrive",
    "Article": "as:Article",
    "Audio": "as:Audio",
    "Block": "as:Block",
    "Collection": "as:Collection",
    "CollectionPage": "as:CollectionPage",
    "Relationship": "as:Relationship",
    "Create": "as:Create",
    "Delete": "as:Delete",
    "Dislike": "as:Dislike",
    "Document": "as:Document",
    "Event": "as:Event",
    "Follow": "as:Follow",
    "Flag": "as:Flag",
    "Group": "as:Group",
    "Ignore": "as:Ignore",
    "Image": "as:Image",
    "Invite": "as:Invite",
    "Join": "as:Join",
    "Leave": "as:Leave",
    "Like": "as:Like",
    "Link": "as:Link",
    "Mention": "as:Mention",
    "Note": "as:Note",
    "Object": "as:Object",
    "Offer": "as:Offer",
    "OrderedCollection": "as:OrderedCollection",
    "OrderedCollectionPage": "as:OrderedCollectionPage",
    "Organization": "as:Organization",
    "Page": "as:Page",
    "Person": "as:Person",
    "Place": "as:Place",
    "Profile": "as:Profile",
    "Question": "as:Question",
    "Reject": "as:Reject",
    "Remove": "as:Remove",
    "Service": "as:Service",
    "TentativeAccept": "as:TentativeAccept",
    "TentativeReject": "as:TentativeReject",
    "Tombstone": "as:Tombstone",
    "Undo": "as:Undo",
    "Update": "as:Update",
    "Video": "as:Video",
    "View": "as:View",
    "Listen": "as:Listen",
    "Read": "as:Read",
    "Move": "as:Move",
    "Travel": "as:Travel",
    "IsFollowing": "as:IsFollowing",
    "IsFollowedBy": "as:IsFollowedBy",
    "IsContact": "as:IsContact",
    "IsMember": "as:IsMember",
    "subject": {
      "@id": "as:subject",
      "@type": "@id"
    },
    "relationship": {
      "@id": "as:relationship",
      "@type": "@id"
    },
    "actor": {
      "@id": "as:actor",
      "@type": "@id"
    },
    "attributedTo": {
      "@id": "as:attributedTo",
      "@type": "@id"
    },
    "attachment": {
      "@id": "as:attachment",
      "@type": "@id"
    },
    "bcc": {
      "@id": "as:bcc",
      "@type": "@id"
    },
    "bto": {
      "@id": "as:bto",
      "@type": "@id"
    },
    "cc": {
      "@id": "as:cc",
      "@type": "@id"
    },
    "context": {
      "@id": "as:context",
      "@type": "@id"
    },
    "current": {
      "@id": "as:current",
      "@type": "@id"
    },
    "first": {
      "@id": "as:first",
      "@type": "@id"
    },
    "generator": {
      "@id": "as:generator",
      "@type": "@id"
    },
    "icon": {
      "@id": "as:icon",
      "@type": "@id"
    },
    "image": {
      "@id": "as:image",
      "@type": "@id"
    },
    "inReplyTo": {
      "@id": "as:inReplyTo",
      "@type": "@id"
    },
    "items": {
      "@id": "as:items",
      "@type": "@id"
    },
    "instrument": {
      "@id": "as:instrument",
      "@type": "@id"
    },
    "orderedItems": {
      "@id": "as:items",
      "@type": "@id",
      "@container": "@list"
    },
    "last": {
      "@id": "as:last",
      "@type": "@id"
    },
    "location": {
      "@id": "as:location",
      "@type": "@id"
    },
    "next": {
      "@id": "as:next",
      "@type": "@id"
    },
    "object": {
      "@id": "as:object",
      "@type": "@id"
    },
    "oneOf": {
      "@id": "as:oneOf",
      "@type": "@id"
    },
    "anyOf": {
      "@id": "as:anyOf",
      "@type": "@id"
    },
    "closed": {
      "@id": "as:closed",
      "@type": "xsd:dateTime"
    },
    "origin": {
      "@id": "as:origin",
      "@type": "@id"
    },
    "accuracy": {
      "@id": "as:accuracy",
      "@type": "xsd:float"
    },
    "prev": {
      "@id": "as:prev",
      "@type": "@id"
    },
    "preview": {
      "@id": "as:preview",
      "@type": "@id"
    },
    "replies": {
      "@id": "as:replies",
      "@type": "@id"
    },
    "result": {
      "@id": "as:result",
      "@type": "@id"
    },
    "audience": {
      "@id": "as:audience",
      "@type": "@id"
    },
    "partOf": {
      "@id": "as:partOf",
      "@type": "@id"
    },
    "tag": {
      "@id": "as:tag",
      "@type": "@id"
    },
    "target": {
      "@id": "as:target",
      "@type": "@id"
    },
    "to": {
      "@id": "as:to",
      "@type": "@id"
    },
    "url": {
      "@id": "as:url",
      "@type": "@id"
    },
    "altitude": {
      "@id": "as:altitude",
      "@type": "xsd:float"
    },
    "content": "as:content",
    "contentMap": {
      "@id": "as:content",
      "@container": "@language"
    },
    "name": "as:name",
    "nameMap": {
      "@id": "as:name",
      "@container": "@language"
    },
    "duration": {
      "@id": "as:duration",
      "@type": "xsd:duration"
    },
    "endTime": {
      "@id": "as:endTime",
      "@type": "xsd:dateTime"
    },
    "height": {
      "@id": "as:height",
      "@type": "xsd:nonNegativeInteger"
    },
    "href": {
      "@id": "as:href",
      "@type": "@id"
    },
    "hreflang": "as:hreflang",
    "latitude": {
      "@id": "as:latitude",
      "@type": "xsd:float"
    },
    "longitude": {
      "@id": "as:longitude",
      "@type": "xsd:float"
    },
    "mediaType": "as:mediaType",
    "published": {
      "@id": "as:published",
      "@type": "xsd:dateTime"
    },
    "radius": {
      "@id": "as:radius",
      "@type": "xsd:float"
    },
    "rel": "as:rel",
    "startIndex": {
      "@id": "as:startIndex",
      "@type": "xsd:nonNegativeInteger"
    },
    "startTime": {
      "@id": "as:startTime",
      "@type": "xsd:dateTime"
    },
    "summary": "as:summary",
    "summaryMap": {
      "@id": "as:summary",
      "@container": "@language"
    },
    "totalItems": {
      "@id": "as:totalItems",
      "@type": "xsd:nonNegativeInteger"
    },
    "units": "as:units",
    "updated": {
      "@id": "as:updated",
      "@type": "xsd:dateTime"
    },
    "width": {
      "@id": "as:width",
      "@type": "xsd:nonNegativeInteger"
    },
    "describes": {
      "@id": "as:describes",
      "@type": "@id"
    },
    "formerType": {
      "@id": "as:formerType",
      "@type": "@id"
    },
    "deleted": {
      "@id": "as:deleted",
      "@type": "xsd:dateTime"
    },
    "inbox": {
      "@id": "ldp:inbox",
      "@type": "@id"
    },
    "outbox": {
      "@id": "as:outbox",
      "@type": "@id"
    },
    "following": {
      "@id": "as:following",
      "@type": "@id"
    },
    "followers": {
      "@id": "as:followers",
      "@type": "@id"
    },
    "streams": {
      "@id": "as:streams",
      "@type": "@id"
    },
    "preferredUsername": "as:preferredUsername",
    "endpoints": {
      "@id": "as:endpoints",
      "@type": "@id"
    },
    "uploadMedia": {
      "@id": "as:uploadMedia",
      "@type": "@id"
    },
    "proxyUrl": {
      "@id": "as:proxyUrl",
      "@type": "@id"
    },
    "liked": {
      "@id": "as:liked",
      "@type": "@id"
    },
    "oauthAuthorizationEndpoint": {
      "@id": "as:oauthAuthorizationEndpoint",
      "@type": "@id"
    },
    "oauthTokenEndpoint": {
      "@id": "as:oauthTokenEndpoint",
      "@type": "@id"
    },
    "provideClientKey": {
      "@id": "as:provideClientKey",
      "@type": "@id"
    },
    "signClientKey": {
      "@id": "as:signClientKey",
      "@type": "@id"
    },
    "sharedInbox": {
      "@id": "as:sharedInbox",
      "@type": "@id"
    },
    "Public": {
      "@id": "as:Public",
      "@type": "@id"
    },
    "source": "as:source",
    "likes": {
      "@id": "as:likes",
      "@type": "@id"
    },
    "shares": {
      "@id": "as:shares",
      "@type": "@id"
    }
  }
}
srosset81 commented 4 years ago

Hello, J'ai créé le fichier pour la version actuelle de l'ontologie, j'en avais besoin pour les expérimentations avec SemApps: https://gist.github.com/srosset81/cc330b63a213e6f68eb5e52d6ded4342 Sauf erreur de ma part, il y a toutes les propriétés décrites par le fichier OWL. Je vais utiliser le fichier (brut) hébergé par Github mais s'il pouvait être hébergé par l'AV, ce serait mieux ;-) Ping @simonLouvet

simonLouvet commented 4 years ago

Ce fichier est effectivement indispensable et doit être publié en plus du owl. @GuillaumeAV : ou sont hébergé les ontologies actuelles? http://virtual-assembly.org/ontologies/pair. Qui peut ajouter des fichiers sur ce serveur. J'ai par contre un doute sur la philosophie qui a été appliquée inspiré de ce qui a été fait pour Activity stream. il ne me semble pas nécessaire de "masquer" le préfixe dans le flux json . Au contraire, je trouve que le garder permet de se rendre compte que on travaille avec du sémantique. cela donnerai par ex:

    "pair:offeredBy": {
      "@type": "@id"
    }

et non

    "offeredBy": {
      "@id": "pair:offeredBy",
      "@type": "@id"
    }
srosset81 commented 4 years ago

Bonne remarque @simonLouvet ! Autant garder le pair:, ça sera plus facile de mélanger avec d'autres ontologies, notamment l'ontologie ActivityStreams. J'ai mis à jour le fichier de contexte ici: https://gist.github.com/srosset81/cc330b63a213e6f68eb5e52d6ded4342

@GuillaumeAV Toujours partant pour qu'il soit hébergé sur le site de l'AV, par exemple avec l'URL http://virtual-assembly.org/ontologies/pair/context.json

srosset81 commented 3 years ago

J'ai mis à jour le fichier de contexte avec l'ontologie hiver 2020: https://gist.github.com/srosset81/cc1de172f77401842b904aae52a15791

srosset81 commented 3 years ago

La bonne pratique semble être de fournir un context JSON lorsqu'on fetch l'URI avec un Accept: application/ld+json, et le vocabulairy OWL lorsqu'on fetch avec Accept: text/turtle. En tout cas c'est ce qui est fait pour https://www.w3.org/ns/ldp

srosset81 commented 3 years ago

J'ai trouvé cet outil pour générer un fichier de context JSON-LD à partir d'un fichier OWL: https://github.com/stain/owl2jsonld Exemple de commande à lancer (après avoir installé OpenJDK...):

java -jar owl2jsonld-0.2.1-standalone.jar http://virtual-assembly.org/ontologies/pair --prefix pair --properties --output pair-context.json

Il y a un peu de nettoyage à faire, mais ça évite de tout faire à la main.

GuillaumeAV commented 3 years ago

C'est bon du coup ? On ferme cette issue @srosset81 @simonLouvet ?

srosset81 commented 3 years ago

Aucun fichier de contexte n'a encore été publié pour l'ontologie PAIR.

GuillaumeAV commented 3 years ago

Du coup je le mets pour la release ? @srosset81 @tfrancart vous y voyez clair ? Qui s'en occupe ?