view jamendo/sparql-archived/jamendo_match.pl @ 27:d95e683fbd35 tip

Enable CORS on urispace redirects as well
author Chris Cannam
date Tue, 20 Feb 2018 14:52:02 +0000
parents df9685986338
children
line wrap: on
line source
:- module(jamendo_match,[]).

:- consult(library('semweb/rdf_db')).

:- use_module(match).

:- consult(jamendo_ns).


/**
 * Class mappings
 */
match:
	(jamendo:artist(Id))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),rdf:type,mo:'MusicArtist')
	].

match:
	(jamendo:album(Id))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),rdf:type,mo:'Record')
	].


match:
	(jamendo:track(Id))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/track/',Id]),rdf:type,mo:'Track')
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/signal/',Id]),mo:publishedAs,pattern(['http://dbtune.org/jamendo/resource/track/',Id]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/signal/',Id]),rdf:type,mo:'Signal')
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/signal/',Id]),mo:signalTime,pattern(['http://dbtune.org/jamendo/resource/interval/',Id]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/interval/',Id]),rdf:type,time:'Interval')
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/interval/',Id]),tl:onTimeLine,pattern(['http://dbtune.org/jamendo/resource/timeline/',Id]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/performance/',Id]),mo:recordedAs,pattern(['http://dbtune.org/jamendo/resource/signal/',Id]))
	].

/**
 * Property mappings
 */

/**
 * Artists
 */
match:
	(jamendo:artist_dispname(Id,Name))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),foaf:name,literal(type('http://www.w3.org/2001/XMLSchema#string',Name)))
	].

match:
	(jamendo:artist_description(Id,Desc))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),mo:biography,literal(type('http://www.w3.org/2001/XMLSchema#string',Desc)))
	].

%make use of tabled equivalence here
match:
	(jamendo:artist_geo(Id,Geo),jamendo_match:geonames(Geo,URI)) 
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),foaf:based_near,URI)
	].

match:
	(jamendo:artist_homepage(Id,HomePage)) 
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),foaf:homepage,HomePage)
	].

match:
	(jamendo:artist_image(Id,Image))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',Id]),foaf:img,Image)
	].

/**
 * Albums
 */
match:
	(jamendo:album_name(Id,Name))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),dc:title,literal(type('http://www.w3.org/2001/XMLSchema#string',Name)))
	].

match:
	(jamendo:album_description(Id,Desc))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),dc:description,literal(type('http://www.w3.org/2001/XMLSchema#string',Desc)))
	].

match:
	(jamendo:album_artist(Id,ArtistId))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),foaf:maker,pattern(['http://dbtune.org/jamendo/resource/artist/',ArtistId]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/artist/',ArtistId]),foaf:made,pattern(['http://dbtune.org/jamendo/resource/record/',Id]))
	].

match:
	(jamendo:album_releasedate(Id,Date))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),dc:date,literal(Date))
	].

match:
	(jamendo:album_cover(Id,_,_,Cover))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),mo:image,Cover)
	].
match:
	(jamendo:album_p2p(Id,ogg3,ed2k,Link))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),mo:availableAs,pattern(['http://dbtune.org/jamendo/resource/item/',Id]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/ogg3/',Id]),rdf:type,mo:'Ed2kItem')
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/ogg3/',Id]),dc:format,literal(ogg3))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/ogg3/',Id]),mo:link,Link)
	].
match:
        (jamendo:album_p2p(Id,mp32,ed2k,Link))
                eq
        [
                rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),mo:availableAs,pattern(['http://dbtune.org/jamendo/resource/item/ed2k/mp32/',Id]))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/mp32/',Id]),rdf:type,mo:'Ed2kItem')
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/mp32/',Id]),dc:format,literal(mp32))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/ed2k/mp32/',Id]),mo:link,Link)
        ].
match:
        (jamendo:album_p2p(Id,ogg3,bittorrent,Link))
                eq
        [
                rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),mo:availableAs,pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/ogg3/',Id]))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/ogg3/',Id]),rdf:type,mo:'BittorrentItem')
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/ogg3/',Id]),dc:format,literal(ogg3))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/ogg3/',Id]),mo:link,Link)
        ].
match:
        (jamendo:album_p2p(Id,mp32,bittorrent,Link))
                eq
        [
                rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),mo:availableAs,pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/mp32/',Id]))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/mp32/',Id]),rdf:type,mo:'BittorrentItem')
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/mp32/',Id]),dc:format,literal(mp32))
        ,       rdf(pattern(['http://dbtune.org/jamendo/resource/item/bittorrent/mp32/',Id]),mo:link,Link)
        ].

match:
	(jamendo:album_tag(_,Tag)) 
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/tag/',Tag]),tags:tagName,literal(type('http://www.w3.org/2001/XMLSchema#string',Tag)))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/tag/',Tag]),rdf:type,tags:'Tag')
	].
match:
	(jamendo:album_tag(Id,Tag))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',Id]),tags:taggedWithTag,pattern(['http://dbtune.org/jamendo/resource/tag/',Tag]))
	].

/**
 * Tracks
 */
match:
	(jamendo:track_album(Id,AlbumId))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/record/',AlbumId]),mo:hasTrack,pattern(['http://dbtune.org/jamendo/resource/track/',Id]))
	].

match:
	(jamendo:track_no(Id,No))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/track/',Id]),mo:trackNum,literal(type('http://www.w3.org/2001/XMLSchema#int',No)))
	].

match:
	(jamendo:track_name(Id,Name))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/track/',Id]),dc:title,literal(type('http://www.w3.org/2001/XMLSchema#string',Name)))
	].

match:
	(jamendo:track_licenseurl(Id,License))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/track/',Id]),mo:license,License)
	,	rdf(License,rdf:type,foaf:'Document')
	].
match:
	(jamendo:track_lyrics(Id,Lyrics))
		eq
	[
		rdf(pattern(['http://dbtune.org/jamendo/resource/performance/',Id]),event:hasFactor,pattern(['http://dbtune.org/jamendo/resource/lyrics/',Id]))
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/lyrics/',Id]),rdf:type,mo:'Lyrics')
	,	rdf(pattern(['http://dbtune.org/jamendo/resource/lyrics/',Id]),mo:lyricsText,literal(type('http://www.w3.org/2001/XMLSchema#string',Lyrics)))
	].



/**
 * Geo mapping
 */
:- use_module(library('http/http_open')).
geonames(JamendoLiteral,URI) :-
	clean_literal(JamendoLiteral,Query),
	concat_atom(['http://ws.geonames.org/search?q=',Query,'&fclass=A','&type=rdf','&maxRows=1'],Url),
	http_open:http_open(Url,Stream,[]),
	load_rdf(Stream,Triples),
	close(Stream),
	member(rdf(URI,'http://www.w3.org/1999/02/22-rdf-syntax-ns#type','http://www.geonames.org/ontology#Feature'),Triples).
clean_literal(Literal,Cleaned) :-
	atom_chars(Literal,Chars),
	delete(Chars,'(',T1),
	delete(T1,')',T2),
	atom_chars(T3,T2),
	www_form_encode(T3,Cleaned).