I want my data back.
Jon Bosak circa 1997
I've long believed that customers of any application own the data they enter into it.
Is this what Web 2.0 is all about? If so, maybe it's not such a bad thing.
Objective: making it cost-effective to record and share knowledge formally, i.e. so that computers can manipulate it.
What was the tipping point— the killer app
—for you?
Newsgroups: alt.hypertext Subject: WorldWideWeb: Summary Date: 6 Aug 91 16:00:12 GMT WorldWideWeb - Executive Summary The WWW project merges the techniques of information retrieval and hypertext to make an easy but powerful global information system. ...
To grow, start with some actual value plus lots of potential value and a downhill path for contributors:
Note: licensing and legal agreements are not little.
Architect for participation
-- Tim O'Reilly @ W3C's 10 anniversary
So what makes all that work? Much of it is a story for another day.
See Architecture of the World Wide Web, Volume One
W3C Recommendation 15 December 2004
... and the importance of test suites
The experience of the CSS working group, with the CSS1 Test Suite, and the many compliant and interoperable implementations that followed, demonstrated fairly clearly that a simple test suite is far far better than none at all.
along with CSS, of course
The bane of my existence is doing things I know the computer could do for me.
The XML Revolution, Nature Web Matters Oct 1998
But why not just spit out .ics from the nasty perl script?
iCalendar does have location/geo fields, but only one per event. Flights have a departure and an arrival.
details: bug status in .ics of Jan 2004
@prefix foaf: <http://xmlns.com/foaf/0.1/>. <people.rdf#dan> foaf:name "Dan Connolly". <people.rdf#dan> foaf:interest <http://www.w3.org/XML/>.
Note the relationship to HTML links, especially with the re-discovery of the rel attribute.
RDF Schema (RDFS) and the Web Ontology Language (OWL) correspond to UML notions such as subclass, domain, range, cardinality, ...
BEGIN:VEVENT UID:20020630T230445Z-3895-69-1-7@jammer DTSTART;VALUE=DATE:20020703 DTEND;VALUE=DATE:20020706 SUMMARY:Scooby Conference LOCATION:San Francisco END:VEVENT
<Vevent> <uid>20020630T230445Z-3895-69-1-7@jammer</uid> <dtstart>2002-07-03</dtstart> <dtend>2002-07-06</date> <summary>Scooby Conference</summary> <location>San Francisco</location> </Vevent>
For details, see RDF Calendar - an application of the Resource Description Framework to iCalendar Data, Connolly and Miller September 2005
Comparing .ics files is tricky, so...
At least the issues in the 1998 spec have all been resolved, complete with test cases. There are plenty of interoperable parsers. And it works great with Relax-NG and nxml-mode :)
I believe that one of the best ways to transition into RDF, if not a long-term deployment strategy for RDF, is to manage the information in human-consumable form (XHTML) annotated with just enough info to extract the RDF statements that the human info is intended to convey. In other words: using a relational database or some sort of native RDF data store, and spitting out HTML dynamically, is a lot of infrastructure to operate and probably not worth it for lots of interesting cases.
We all know that we have to produce a human-readable version of the thing... why not use that as the primary source?
XSLT for screen-scraping RDF out of real-world data
Dan Connolly to www-rdf-interest March 2000
Site Summaries in XHTML is a cost-effective way to formalize our news metadata.
A person (or a machine) can "follow your nose" from the document to the transformation algorithm, to the data, to the definitions of the terms used in the data.
<html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://www.w3.org/2003/g/data-view"> <link rel="transformation" href="http://www.w3.org/2000/08/w3c-synd/home2rss.xsl" /> ... </head> <body> ... <div id="x200501110b" class="item"> <h3><img alt="" width="17" height="11" src="/Icons/right" />Policy for Authorized W3C Translations Announced</h3> <p><span class="date">2005-11-10:</span> W3C is pleased to announce...
... <item rdf:about="http://www.w3.org/News/2005#item158"> <title>Policy for Authorized W3C Translations Announced</title> <description>2005-11-10: W3C is pleased to announce ...
For details, see Gleaning Resource Descriptions from Dialects of Languages (GRDDL), Hazaël-Massieux and Connolly May 2005
<java version="1.5.0_04" class="java.beans.XMLDecoder" xmlns:grddl="http://www.w3.org/2003/g/data-view#" grddl:transformation="grokVioletUML.xsl"> <object class="com.horstmann.violet.ClassDiagramGraph"> <void method="addNode"> ...
Borrowing from Microformats: Evolving the Web by Tantek Çelik Sep 2005
<ol class="vcalendar">
<li class="vevent">
<a href="http://tantek.com/presentations/..."
class="url">
<span class="summary">Microformats: Evolving the Web</span
<abbr class="dtstart" title="20050930T1530+1000">
September 30th, 2005
</abbr>
</a>
</li>
</ol>
@prefix : <http://www.w3.org/2002/12/cal/icaltzd#> . @prefix XML: <http://www.w3.org/2001/XMLSchema#> . [ a :Vevent; :attendee [ :cn "Hoopy Frood"; :calAddress <mailto:frood@example> ]; :dtend "2005-10-07"^^XML:date; :dtstart "2005-10-05"^^XML:date; :geo (37.0625 -95.677068 ); :location "Argent Hotel, San Francisco, CA"; :summary "Web 2.0 Conference"; :url <http://www.web2con.com/> ].
From Tantek's Thoughts:
- 10/5-7 Web 2.0 - at The Argent, San Francisco
- 10/17-19 W3C CSS Working Group f2f at San Francisco
Mix with glean-hcal.xsl and we get:
<r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:c="http://www .w3.org/2002/12/cal/icaltzd#"> ... <c:Vevent> <c:summary xml:lang="en-us">Web 2.0 </c:summary> <c:dtstart r:datatype="http://www.w3.org/2001/XMLSchema#date">2005-10-05</c:dtstart> <c:dtend r:datatype="http://www.w3.org/2001/XMLSchema#date">2005-10-08</c:dtend> <c:url r:resource="http://web2con.com/"/> <c:location xml:lang="en-us">The Argent, San Francisco </c:location> </c:Vevent>
Use GRDDL to aggregate data from friends etc, then...
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX c: <http://www.w3.org/2002/12/cal/icaltzd#> SELECT ?name, ?summary, ?when FROM <myFriendsBlogsData> WHERE { ?somebody foaf:name ?name; foaf:mbox ?mbox. ?event c:summary ?summary; c:dtstart ?ymd; c:attendee [ c:calAddress ?mbox ] }.
?name | ?summary | ?when |
---|---|---|
Tantek Çelik | Web 2.0 | 2005-10-05 |
Norm Walsh | XML 2005 | 2005-11-13 |
Dan Connolly | W3C tech plenary | 2006-02-27 |
See SPARQL Query Language for RDF W3C Working Draft 21 July 2005, plus Norm's travel this year
Mix with some logical rules:
{ ?E c:geo (?LAT ?LONG) } => { ?E k:eventOccursAt [ geo:lat ?LAT; geo:long ?LONG] }. { ?E c:location ?PLACENAME; k:eventOccursAt ?WHERE } => { ?WHERE k:nameOfAgent ?PLACENAME; s:label ?PLACENAME; k:inRegion [ a k:City ]. # Assume each event is in some city }.
{ ?C1 a k:City; is k:inRegion of [geo:lat ?X1; geo:long ?Y1 ]. ?C2 a k:City; is k:inRegion of [geo:lat ?X2; geo:long ?Y2 ]. # DSQ = (X1-X2)^2 + (Y1-Y2)^2 (((?X2 ?X1).m:difference 2).m:exponentiation ((?Y2 ?Y1).m:difference 2).m:exponentiation) m:sum ?DSQ. ?DSQ m:greaterThan 0.2. } => { ?C1 owl:differentFrom ?C2 }.
Full details: calendar background rules
Can we do this event too?
RDF statements* are independent. RDF semantics are monotonic.
RDF | XML | |
---|---|---|
Premise |
<Book rdf:ID="book1"> <dc:title>The Grapes of Wrath</title> <dc:creator>Steinbeck</author> </Book> |
<xsd:simpleType name="myInteger"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="10000"/> <xsd:maxInclusive value="99999"/> </xsd:restriction> </xsd:simpleType> |
Conclusion |
<Book rdf:ID="book1"> <dc:title>The Grapes of Wrath</title> </Book> |
<!-- no, this does not follow --> <xsd:simpleType name="myInteger"> <xsd:restriction base="xsd:integer"> <xsd:maxInclusive value="99999"/> </xsd:restriction> </xsd:simpleType> |
*RDF/XML does have a rdf:parseType="Collection" syntax, which expands to a lisp style binary tree in the abstract syntax. This erasure property works not on XML elements, but on RDF statements.
Premise |
# one-to-many foaf:mbox a owl:InverseFunctionalProperty. :dan foaf:mbox <mailto:connolly@w3.org>. :dan foaf:name "Dan Connolly". :daniel foaf:mbox <mailto:connolly@w3.org>. :daniel foaf:name "Daniel W. Connolly". |
|
---|---|---|
Conclusion: |
:daniel owl:sameAs :dan. :daniel foaf:name "Dan Connolly". :daniel foaf:name "Daniel W. Connolly". |
PersonDay a owl:Class; s:subClassOf k:Entity; s:subClassOf [ owl:onProperty _city; owl:maxCardinality 1 ].
java -jar pellet.jar -inputFile ,mash.rdf -unsat Input file: ,mash.rdf OWL Species: Full DL Expressivity: ALCHIF(D) Consistent: No Reason: There is an anonymous individual X, identified by this path (file:...cal/mash/calbg#oct6 http://www.cyc.com/2004/06/04/cyc#temporallyIntersects X), which has more than 1 values for property file:...cal/mash/calbg#_city violating the cardinality restriction Time: 8784 ms (Loading: 6485 Preprocessing: 0 Species Validation: 2202 Consistency: 96 )
These slides: http://www.w3.org/2002/12/cal/mash/slides