Universal Drag And Drop

As the world becomes completely interconnected, we need to drag and drop anything over computers, between operating systems and across continents. There is one easy way to do this, which we have been using for a long time without perhaps realizing it: by using URLs to send people web pages we like. Now we can generalize this to drag and drop anything.

In RDF we can use URLs to name anything we want. We can name people for example. My foaf name is http://bblfish.net/people/henry/card#me. If you GET its meaning by clicking on the above link, the resource http://bblfish.net/people/henry/card will return a representation in rdf/xml describing me and people I know. Using this feature I will be able to drag and drop my foaf name onto the AddressBook I am writing. It will be able to ask for its preferred representation from the resource and from the returned rdf, deduce that the given url points to a foaf:Person, and so display those connections it understands in the associated graph.

But we could go one further with this mechanism. The operating system could easily be adapted to use this information to change the picture of the mouse cursor when the drag event occurs, by fetching a cached representation (REST is designed for caching) or by querying the cached graph, to find what the type of the resource is ( a foaf:Person ) and so display a stick person or if a relationship to a logo is available the logo of the person, with perhaps their initials printed below.

All one needs for drag and drop are URLs - metadata is just one GET away.


Indeed, one of the first things I thought about when I started reasoning about the possibilities of semantifying the Web (several) years ago was drag and drop between (web) applications. Why not drag that Ebay auction from a list and drop it in your calendar application? I wonder why this has not been done yet.

Posted by Matt on December 18, 2006 at 03:37 AM CET #

I think the time is coming. It just requires a good demo for the thing to catch fire.

I suppose this is just partly the bootstrapping problem. Publishers of this information currently need to have faith in Metcalf's law. People publishing foaf files have this faith, and so there are now millions of these files available. This makes it easy to write a useful semantic address book.

It would just take a little faith for ebay people to put this data online, and I could write a simple semantic calendar app. Perhaps I can do it anyway to give them some initial reason to do something.

Btw, as you know, we don't even need all info to be rdf. With GRDDL any xml format can be treated as RDF.

Posted by Henry Story on December 18, 2006 at 11:22 AM CET #

The reason that you cannot drag any X onto any Y is that there is no way to do it. A naive guess might be that you could say "have a list of standardised attributes in every drag/dropped object that fit into a list of desired attributes in the recipient: so the calendar would take startdate and enddate, the addressbook would take the contact info of the person who started the auction, etc". But then someone drags a car's details onto an addressbook or something, and things go horribly wrong, with the car registered as a person. Or onto a calendar, and the car is registered as an event. If you drag an org tree onto an address book, does it add the person at the top of the org tree, or the entire tree, or does it search through to find the organisation's generic contact info, and add that? We're not yet able to have any app parse any file, let alone have any app parse any draggable entity. Though things like standardised metadata can give standards, they can never give context, and for drag/drop, that's as critical as it is in language.

Posted by Dewi Morgan on June 23, 2007 at 02:33 PM CEST #

The reason that you cannot drag any X onto any Y is that there is no way to do it.

Universal Drag and Drop is not here to make dragging and dropping anything onto anything possible. If you drag (the URL referring to) a car onto my Semantic Address Book in a field that only permits the dropping of a Person, then things will happen as they do now when you try to drop a picture on your local drive into your local text editor. The OS could show a little fun animation to make it clear that this was not possible.

Universal Drag and Drop is not about dropping anything onto anything. It's about being able to drop things around the Web (and so in the universe of information), identified with URL (Universal Resource Identifiers) onto any container (that accepts that action). URLs are Universal Indentifiers. They give us a way to refer to things around the world with ease. Before URLs we were limited to manipulate documents on our hard drive. The Web allowed us to view documents around the Web. With the semantic web we are getting to be able to manipulate any object in the world...

I need to get the semantic address book to work nicely. When it gets out of prototype stage it will be a lot more obvious...

Posted by Henry Story on June 23, 2007 at 03:40 PM CEST #

How will it recognise that the information being dragged is not appropriate? I see three possible ways of not-working-perfectly. 1) Require specific fields at the destination of the URI, with a standardised list of agreed fields ["title", "date"] and scope to add new custom fields ["install path", "number of cousins"]. If the required are not given, fail it. This is very versatile but allows car URIs to be dropped onto calendars, giving events like "Date: 1/1/1976. Title: Chevy Convertible". This means that if your app is looking for basic standard fields, you will almost never reject the drop. 2) Require a standard "type" field with standard values "contact", "address", "event", each type having a predefined set of standard fields. Permit custom type settings ("vehicle", "auction"). This has the problem that non-matching custom types are not compatible: you can't drag a "car" type onto a list of "vehicle" types, or a "colour" type onto a "color" list. 3) Like option 2, but have applications present a dialog like: === The 'vehicle' list doesn't recognise 'car' resources. The following is a 'best guess' at how to map the fields. Make: Chevrolet Model: - Date: 1/1/1976 Use this data? [x]Remember my choice for all conversions from 'car' to 'vehicle' [Include][Discard][Manually Remap] === Downside with that is that people hate popup dialogs. Hate being asked questions. Stuff should "just work"!

Posted by Dewi Morgan on June 25, 2007 at 01:46 PM CEST #

Post a Comment:
Comments are closed for this entry.



« July 2016