Mercurial > hg > dbtune-rdf-services
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).