- From: Jesse Weaver <weavej3@rpi.edu>
- Date: Tue, 11 Oct 2011 17:35:14 -0400
- To: "semantic-web@w3.org Web" <semantic-web@w3.org>, public-lod@w3.org
APOLOGIES FOR CROSS-POSTING In this email, I would like to reveal a bit more about the Linked Data provided through Facebook's Graph API. AUTHENTICATION Before I get started, I have been asked about how to get an access token. Information regarding authentication can be found at https://developers.facebook.com/docs/authentication/ . If you just want a quick way to obtain a security token, just go to https://developers.facebook.com/docs/reference/api/ and click on one of the example "connections" URLs and it will automatically generate a temporary access token (in the URL) for you (if you're logged in to your Facebook account). MORE THAN JUST USERS The main thing I want to point out is that the Graph API is much more than just basic information about users. See https://developers.facebook.com/docs/reference/api/ for details. The Facebook graph includes things like pages, checkins, and links; it also includes "connections" (edges between things in the graph). Anything you can get from the Graph API can be obtained in Turtle via HTTP content negotiation. Simply include text/ turtle in the Accept header (with a higher q preference than more typical mime types if necessary). One of the most interesting features of the Graph API is the search mechanism: https://graph.facebook.com/search?until=yesterday&q=semantic+web&access_token= <ACCESS_TOKEN> This will include information about a variety of things such as statuses, links, photos, and videos. (At this point, I feel like I should point out the obvious, that is, that the information you see is only whatever is accessible given the access token provided.) Another cool feature is the ability to ask for information about any number of IDs, where an ID could even be the URL of something included in the Open Graph. For example: http://graph.facebook.com/?ids=http://www.cs.rpi.edu/~weavej3/index.xhtml,jesserweaver This includes information about my RPI website (which is in the Open Graph) and myself (jesserweaver). LINKED DATA URIs All of the HTTP(S) URIs in the RDF are dereferenceable. Most of the URIs are hash-URIs (that is, strip off the fragment and fetch the document, returning 200 OK), but there are some slash-URIs (for example, http://graph.facebook.com/schema/~/data ) which 303 redirect. There are also information resources. It's quite varied. SCHEMA This leads me to discuss the schema (or ontology, or whatever you want to call it). Even the URIs representing properties and classes are dereferenceable. For example, http://graph.facebook.com/schema/link#type is the URI identifying the link class, and http://graph.facebook.com/schema/link will return information (with 200 OK) about the link class. Information includes relevant properties, possibly specifying whether a relevant property is a owl:DatatypeProperty, owl:ObjectProperty, and/ or owl:InverseFunctionalProperty. There may also be rdfs:domain and/ or rdfs:range specified where appropriate. There are also properties that are not associated with a specific class, and these (generally) use the http://graph.facebook.com/schema/ ~/ namespace URI. Properties using this namespace have very vague semantics. For example, the property identified by URI http://graph.facebook.com/schema/ ~/data (which 303 redirects to http://graph.facebook.com/schema? tag=data ) has the following description: "A tag having no semantics beyond the conventional semantics of the JSON key \"data\" as used in the Facebook Graph API." So if never_used_as_a_key is never used as a key in the Graph API JSON, then the property http://graph.facebook.com/schema/~/ never_used_as_a_key is essentially meaningless. There are two special cases, however. One is http://graph.facebook.com/schema/~/id which is a owl:InverseFunctionalProperty with rdfs:range xsd:string. The other exception is any URI beginning with http://graph.facebook.com/schema/ ~/ followed by an optional underscore and then a non-negative integer. These properties are an attempt at more practical container membership properties. As an example, check out http://graph.facebook.com/schema/~/_14 http://graph.facebook.com/schema/~/_14 is a rdfs:subPropertyOf tag:graph.facebook.com,2011:/has (the invented, generic, container membership property) and has an explicitly defined integer index as the value of the tag:graph.facebook.com,2011:/index property (something missing from the RDF container membership properties). @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix api: <tag:graph.facebook.com,2011:/> . @prefix og: <http://ogp.me/ns#> . @prefix fb: <http://ogp.me/ns/fb#> . @prefix : <http://graph.facebook.com/schema/~/> . :_14 a rdf:Property ; rdfs:label "_14" ; rdfs:comment "A tag having no semantics beyond the conventional semantics of the JSON key \"14\" as used in the Facebook Graph API." ; rdfs:subPropertyOf api:has ; api:index 14 . OPEN GRAPH URIs used as properties in the Open Graph (except for those in the http://ogp.me/ns# and http://ogp.me/ns/fb# namespaces; those URIs go elsewhere) also redirect to the Graph API schema feature. For example, http://ogp.me/ns/book#author is a property, and http://ogp.me/ns/book 302-redirects to http://graph.facebook.com/schema/og/book (302 instead of 303 because they are hash URIs). For information about Open Graph, see http://ogp.me and https://developers.facebook.com/docs/beta/opengraph/ . Please understand that the Graph API and the Open Graph are NOT the same thing. STATUS OF FB LINKED DATA These are just some of the features of the Facebook Graph API Linked Data. I have been told that Facebook Linked Data is considered experimental and that continued support depends on the degree of use by developers. I hope this was helpful, and I am happy to attempt to answer any questions. Please understand, though, that I am not a Facebook employee; I only recently finished an internship there. Regards, Jesse Weaver Ph.D. Student, Patroon Fellow Tetherless World Constellation Rensselaer Polytechnic Institute http://www.cs.rpi.edu/~weavej3/index.xhtml
Received on Tuesday, 11 October 2011 21:35:53 UTC