JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.2/q.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.10/rx.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.2.10/rx.binding.js"></script>
<script src="https://rawgithub.com/stample/rdflib-pg-extension/master/releases/0.1.0/rdflib-stample-0.1.0.js"></script>
<script src="https://rawgithub.com/stample/rdflib-pg-extension/master/releases/0.1.0/rdflib-stample-pg-extension-0.1.0.js"></script>
<div>
<h3>Nb friends = <span id="counter">0</span><span id="end"/></h3>
<ul id="friendList"/>
</div>
JavaScript
var FOAF = $rdf.Namespace("http://xmlns.com/foaf/0.1/");
$rdf.Fetcher.fetcherWithPromiseCrossSiteProxyTemplate = "https://www.stample.io/srv/cors?url=";
//$rdf.Fetcher.fetcherWithPromiseCrossSiteProxyTemplate = "http://data.fm/proxy?uri=";
var fetcherTimeout = 3000;
var store = $rdf.PG.createNewStore(fetcherTimeout);
var henryFoafProfileUrl = "http://bblfish.net/people/henry/card#me";
var friendCounter = 0;
store.fetcher.fetch(henryFoafProfileUrl)
.then(function(henryPg) {
printFriendFriendName(henryPg);
})
.fail(function(fetchError) {
console.warn("Can't fetch the pointed graph at",henryFoafProfileUrl,fetchError);
});
function printFriendFriendName(personPg) {
console.log(personPg);
var personFriendFriendNameStream = personPg.followPath( [FOAF("knows"), FOAF("knows"), FOAF("name") ]);
handleNameStream(personFriendFriendNameStream);
}
function handleNameStream(nameStream) {
nameStream.subscribe(
function(namePg) {
var friendFriendName = namePg.pointer.toString();
$("#friendList").append("<li>"+friendFriendName+" ("+namePg.getCurrentDocumentUrl()+")</li>")
friendCounter++;
$("#counter").html(friendCounter);
},
function(error) {
console.error("Unexpected end of stream",error, error.stack);
},
function() {
$("#end").html(" -> End");
}
);
}