queries.h

Go to the documentation of this file.
00001 /* --------------------------------------------------------------------------
00002 
00003    MusicBrainz -- The Internet music metadatabase
00004 
00005    Copyright (C) 2000 Robert Kaye
00006    
00007    This library is free software; you can redistribute it and/or
00008    modify it under the terms of the GNU Lesser General Public
00009    License as published by the Free Software Foundation; either
00010    version 2.1 of the License, or (at your option) any later version.
00011    
00012    This library is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015    Lesser General Public License for more details.
00016    
00017    You should have received a copy of the GNU Lesser General Public
00018    License along with this library; if not, write to the Free Software
00019    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 
00021      $Id: queries.h,v 1.60 2005/11/05 00:55:46 robert Exp $
00022 
00023 ----------------------------------------------------------------------------*/
00024 #ifndef _QUERIES_H_
00025 #define _QUERIES_H_
00026 
00027 /* -------------------------------------------------------------------------
00028  * Select queries -- these whitespace seperated list macros are a list of
00029  * rdf predicates and/or ordinals (specified as []). These predicate lists
00030  * specify a path to traverse through an RDF graph (comprised of statements,
00031  * aka triples). Each select query starts at the top level resource and
00032  * 'selects' another node in the rdf graph by moving through the graph
00033  * as specified by the predicate list. The URI of the new node, will be
00034  * saved as the 'selected context'. Once a context has been selected,
00035  * you can use the MBE_ queries below to extract metadata out of a context.
00036  * -------------------------------------------------------------------------
00037  */
00038 
00043 #define MBI_VARIOUS_ARTIST_ID \
00044         "89ad4ac3-39f7-470e-963a-56509c546377"
00045 
00050 #define MBS_Rewind           \
00051         "[REWIND]"
00052 
00056 #define MBS_Back           \
00057         "[BACK]"
00058 
00066 #define MBS_SelectArtist           \
00067         "http://musicbrainz.org/mm/mm-2.1#artistList []"
00068 
00076 #define MBS_SelectAlbum            \
00077         "http://musicbrainz.org/mm/mm-2.1#albumList []"
00078 
00086 #define MBS_SelectTrack            \
00087         "http://musicbrainz.org/mm/mm-2.1#trackList []"
00088 
00094 #define MBS_SelectTrackArtist      \
00095         "http://purl.org/dc/elements/1.1/creator"
00096 
00102 #define MBS_SelectTrackAlbum      \
00103         "http://musicbrainz.org/mm/mq-1.1#album"
00104 
00109 #define MBS_SelectTrmid           \
00110         "http://musicbrainz.org/mm/mm-2.1#trmidList []"
00111 
00116 #define MBS_SelectCdindexid           \
00117         "http://musicbrainz.org/mm/mm-2.1#cdindexidList []"
00118 
00123 #define MBS_SelectReleaseDate           \
00124         "http://musicbrainz.org/mm/mm-2.1#releaseDateList []"
00125 
00131 #define MBS_SelectLookupResult            \
00132         "http://musicbrainz.org/mm/mq-1.1#lookupResultList []"
00133 
00138 #define MBS_SelectLookupResultArtist            \
00139         "http://musicbrainz.org/mm/mq-1.1#artist"
00140 
00145 #define MBS_SelectLookupResultAlbum            \
00146         "http://musicbrainz.org/mm/mq-1.1#album"
00147 
00152 #define MBS_SelectLookupResultTrack            \
00153         "http://musicbrainz.org/mm/mq-1.1#track"
00154 
00160 #define MBS_SelectRelationship           \
00161         "http://musicbrainz.org/ar/ar-1.0#relationshipList []"
00162 
00163 /* -------------------------------------------------------------------------
00164  * General top level queries -- Internal use only.
00165  * -------------------------------------------------------------------------
00166  */
00170 #define MBE_QuerySubject           \
00171         "http://musicbrainz.org/mm/mq-1.1#Result"
00172 
00175 #define MBE_GetError               \
00176         "http://musicbrainz.org/mm/mq-1.1#error"
00177 
00178 
00179 /* -------------------------------------------------------------------------
00180  * Top level queries used with MBQ_FileInfoLookup 
00181  * -------------------------------------------------------------------------
00182  */
00183 
00189 #define MBE_GetStatus              \
00190         "http://musicbrainz.org/mm/mq-1.1#status"
00191 
00192 /* -------------------------------------------------------------------------
00193  * Queries used to determine the number of items returned
00194  * by a query.
00195  * -------------------------------------------------------------------------
00196  */
00200 #define MBE_GetNumArtists     \
00201         "http://musicbrainz.org/mm/mm-2.1#artistList [COUNT]"
00202 
00206 #define MBE_GetNumAlbums      \
00207         "http://musicbrainz.org/mm/mm-2.1#albumList [COUNT]"
00208 
00212 #define MBE_GetNumTracks      \
00213         "http://musicbrainz.org/mm/mm-2.1#trackList [COUNT]"
00214 
00218 #define MBE_GetNumTrmids      \
00219         "http://musicbrainz.org/mm/mm-2.1#trmidList [COUNT]"
00220 
00224 #define MBE_GetNumLookupResults      \
00225         "http://musicbrainz.org/mm/mq-1.1#lookupResultList [COUNT]"
00226 
00227 /* -------------------------------------------------------------------------
00228  * artistList queries
00229  * -------------------------------------------------------------------------
00230  */
00231 
00235 #define MBE_ArtistGetArtistName      \
00236         "http://purl.org/dc/elements/1.1/title"
00237 
00241 #define MBE_ArtistGetArtistSortName      \
00242         "http://musicbrainz.org/mm/mm-2.1#sortName"
00243 
00248 #define MBE_ArtistGetArtistId        \
00249         "" /* yes, empty! */
00250 
00256 #define MBE_ArtistGetAlbumName      \
00257         "http://musicbrainz.org/mm/mm-2.1#albumList [] http://purl.org/dc/elements/1.1/title"
00258 
00264 #define MBE_ArtistGetAlbumId      \
00265         "http://musicbrainz.org/mm/mm-2.1#albumList []"
00266 
00267 /* -------------------------------------------------------------------------
00268  * albumList queries
00269  * -------------------------------------------------------------------------
00270  */
00271 
00275 #define MBE_AlbumGetAlbumName      \
00276         "http://purl.org/dc/elements/1.1/title"
00277 
00282 #define MBE_AlbumGetAlbumId        \
00283         "" /* yes, empty!  */
00284 
00288 #define MBE_AlbumGetAlbumStatus        \
00289         "http://musicbrainz.org/mm/mm-2.1#releaseStatus"
00290 
00294 #define MBE_AlbumGetAlbumType        \
00295         "http://musicbrainz.org/mm/mm-2.1#releaseType"
00296 
00300 #define MBE_AlbumGetAmazonAsin        \
00301         "http://www.amazon.com/gp/aws/landing.html#Asin"
00302 
00306 #define MBE_AlbumGetNumCdindexIds    \
00307         "http://musicbrainz.org/mm/mm-2.1#cdindexidList [COUNT]"
00308 
00312 #define MBE_AlbumGetNumReleaseDates    \
00313         "http://musicbrainz.org/mm/mm-2.1#releaseDateList [COUNT]"
00314 
00321 #define MBE_AlbumGetAlbumArtistId        \
00322         "http://purl.org/dc/elements/1.1/creator"
00323 
00327 #define MBE_AlbumGetNumTracks      \
00328         "http://musicbrainz.org/mm/mm-2.1#trackList [COUNT]"
00329 
00335 #define MBE_AlbumGetTrackId        \
00336         "http://musicbrainz.org/mm/mm-2.1#trackList [] "
00337 
00343 #define MBE_AlbumGetTrackList        \
00344         "http://musicbrainz.org/mm/mm-2.1#trackList"
00345 
00351 #define MBE_AlbumGetTrackNum       \
00352         "http://musicbrainz.org/mm/mm-2.1#trackList [?] http://musicbrainz.org/mm/mm-2.1#trackNum"
00353 
00359 #define MBE_AlbumGetTrackName      \
00360         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/title"
00361 
00367 #define MBE_AlbumGetTrackDuration       \
00368         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://musicbrainz.org/mm/mm-2.1#duration"
00369 
00375 #define MBE_AlbumGetArtistName     \
00376         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator http://purl.org/dc/elements/1.1/title"
00377 
00383 #define MBE_AlbumGetArtistSortName \
00384         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator http://musicbrainz.org/mm/mm-2.1#sortName"
00385 
00391 #define MBE_AlbumGetArtistId       \
00392         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator"
00393 
00394 /* -------------------------------------------------------------------------
00395  * trackList queries
00396  * -------------------------------------------------------------------------
00397  */
00398 
00402 #define MBE_TrackGetTrackName      \
00403         "http://purl.org/dc/elements/1.1/title"
00404 
00409 #define MBE_TrackGetTrackId        \
00410         "" /* yes, empty! */
00411 
00415 #define MBE_TrackGetTrackNum      \
00416         "http://musicbrainz.org/mm/mm-2.1#trackNum"
00417 
00421 #define MBE_TrackGetTrackDuration \
00422         "http://musicbrainz.org/mm/mm-2.1#duration"
00423 
00427 #define MBE_TrackGetArtistName      \
00428         "http://purl.org/dc/elements/1.1/creator http://purl.org/dc/elements/1.1/title"
00429 
00433 #define MBE_TrackGetArtistSortName      \
00434         "http://purl.org/dc/elements/1.1/creator http://musicbrainz.org/mm/mm-2.1#sortName"
00435 
00439 #define MBE_TrackGetArtistId      \
00440         "http://purl.org/dc/elements/1.1/creator"
00441 
00442 /* -------------------------------------------------------------------------
00443  * Quick track queries
00444  * -------------------------------------------------------------------------
00445  */
00446 
00450 #define MBE_QuickGetArtistName      \
00451         "http://musicbrainz.org/mm/mq-1.1#artistName"
00452 
00456 #define MBE_QuickGetArtistSortName      \
00457         "http://musicbrainz.org/mm/mm-2.1#sortName"
00458 
00462 #define MBE_QuickGetArtistId      \
00463         "http://musicbrainz.org/mm/mm-2.1#artistid"
00464 
00468 #define MBE_QuickGetAlbumName      \
00469         "http://musicbrainz.org/mm/mq-1.1#albumName"
00470 
00474 #define MBE_QuickGetTrackName      \
00475         "http://musicbrainz.org/mm/mq-1.1#trackName"
00476 
00480 #define MBE_QuickGetTrackNum       \
00481         "http://musicbrainz.org/mm/mm-2.1#trackNum"
00482 
00486 #define MBE_QuickGetTrackId       \
00487         "http://musicbrainz.org/mm/mm-2.1#trackid"
00488 
00492 #define MBE_QuickGetTrackDuration       \
00493         "http://musicbrainz.org/mm/mm-2.1#duration"
00494 
00495 /* -------------------------------------------------------------------------
00496  * Release date / country queries
00497  * -------------------------------------------------------------------------
00498  */
00499 
00503 #define MBE_ReleaseGetDate       \
00504         "http://purl.org/dc/elements/1.1/date"
00505 
00509 #define MBE_ReleaseGetCountry       \
00510         "http://musicbrainz.org/mm/mm-2.1#country"
00511 
00512 /* -------------------------------------------------------------------------
00513  * FileLookup queries
00514  * -------------------------------------------------------------------------
00515  */
00516 
00520 #define MBE_LookupGetType      \
00521         "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
00522 
00526 #define MBE_LookupGetRelevance      \
00527         "http://musicbrainz.org/mm/mq-1.1#relevance"
00528 
00532 #define MBE_LookupGetArtistId      \
00533         "http://musicbrainz.org/mm/mq-1.1#artist"
00534 
00538 #define MBE_LookupGetAlbumId      \
00539         "http://musicbrainz.org/mm/mq-1.1#album"
00540 
00544 #define MBE_LookupGetAlbumArtistId      \
00545         "http://musicbrainz.org/mm/mq-1.1#album " \
00546         "http://purl.org/dc/elements/1.1/creator"
00547 
00551 #define MBE_LookupGetTrackId      \
00552         "http://musicbrainz.org/mm/mq-1.1#track"
00553 
00557 #define MBE_LookupGetTrackArtistId      \
00558         "http://musicbrainz.org/mm/mq-1.1#track " \
00559         "http://purl.org/dc/elements/1.1/creator"
00560 
00561 /* -------------------------------------------------------------------------
00562  * Extract queries for the MBQ_GetXXXXXRelationsById queries
00563  * -------------------------------------------------------------------------
00564  */
00565 
00570 #define MBE_GetRelationshipType \
00571         "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
00572 
00579 #define MBE_GetRelationshipDirection \
00580         "http://musicbrainz.org/ar/ar-1.0#direction"
00581 
00585 #define MBE_GetRelationshipArtistId \
00586         "http://musicbrainz.org/ar/ar-1.0#toArtist"
00587 
00591 #define MBE_GetRelationshipArtistName \
00592         "http://musicbrainz.org/ar/ar-1.0#toArtist http://purl.org/dc/elements/1.1/title"
00593 
00597 #define MBE_GetRelationshipAlbumId \
00598         "http://musicbrainz.org/ar/ar-1.0#toAlbum"
00599 
00603 #define MBE_GetRelationshipAlbumName \
00604         "http://musicbrainz.org/ar/ar-1.0#toAlbum http://purl.org/dc/elements/1.1/title"
00605 
00609 #define MBE_GetRelationshipTrackId \
00610         "http://musicbrainz.org/ar/ar-1.0#toTrack"
00611 
00615 #define MBE_GetRelationshipTrackName \
00616         "http://musicbrainz.org/ar/ar-1.0#toTrack http://purl.org/dc/elements/1.1/title"
00617 
00621 #define MBE_GetRelationshipURL \
00622         "http://musicbrainz.org/ar/ar-1.0#toUrl"
00623 
00627 #define MBE_GetRelationshipAttribute \
00628         "http://musicbrainz.org/ar/ar-1.0#attributeList []"
00629 
00630 /* -------------------------------------------------------------------------
00631  * Extract queries for the MBQ_GetCDTOC query
00632  * -------------------------------------------------------------------------
00633  */
00637 #define MBE_TOCGetCDIndexId           \
00638         "http://musicbrainz.org/mm/mm-2.1#cdindexid"
00639 
00642 #define MBE_TOCGetFirstTrack          \
00643         "http://musicbrainz.org/mm/mm-2.1#firstTrack"
00644 
00648 #define MBE_TOCGetLastTrack           \
00649         "http://musicbrainz.org/mm/mm-2.1#lastTrack"
00650 
00655 #define MBE_TOCGetTrackSectorOffset   \
00656         "http://musicbrainz.org/mm/mm-2.1#toc [] http://musicbrainz.org/mm/mm-2.1#sectorOffset"
00657 
00662 #define MBE_TOCGetTrackNumSectors     \
00663         "http://musicbrainz.org/mm/mm-2.1#toc [] http://musicbrainz.org/mm/mm-2.1#numSectors"
00664 
00665 /* -------------------------------------------------------------------------
00666  * Extract queries for the MBQ_AuthenticateQuery query
00667  * -------------------------------------------------------------------------
00668  */
00673 #define MBE_AuthGetSessionId  \
00674         "http://musicbrainz.org/mm/mq-1.1#sessionId"
00675 
00680 #define MBE_AuthGetChallenge  \
00681         "http://musicbrainz.org/mm/mq-1.1#authChallenge"
00682 
00683 /* -------------------------------------------------------------------------
00684  * Local queries (queries are automatically generated)
00685  * -------------------------------------------------------------------------
00686  */
00693 #define MBQ_GetCDInfo              \
00694         "@CDINFO@"
00701 #define MBQ_GetCDTOC               \
        "@LOCALCDINFO@"
00705 #define MBQ_AssociateCD            \
        "@CDINFOASSOCIATECD@"

/* -------------------------------------------------------------------------
 * Server queries (queries must have argument(s) substituted in them)
 * -------------------------------------------------------------------------
 */

00716 #define MBQ_Authenticate \
    "<mq:AuthenticateQuery>\n" \
00717     "   <mq:username>@1@</mq:username>\n" \
00718     "</mq:AuthenticateQuery>\n" 
00719 
00724 #define MBQ_GetCDInfoFromCDIndexId \
00725     "<mq:GetCDInfo>\n" \
00726     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00727     "   <mm:cdindexid>@1@</mm:cdindexid>\n" \
00728     "</mq:GetCDInfo>\n" 
00729 
00745 #define MBQ_TrackInfoFromTRMId \
00746     "<mq:TrackInfoFromTRMId>\n" \
00747     "   <mm:trmid>@1@</mm:trmid>\n" \
00748     "   <mq:artistName>@2@</mq:artistName>\n" \
00749     "   <mq:albumName>@3@</mq:albumName>\n" \
00750     "   <mq:trackName>@4@</mq:trackName>\n" \
00751     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00752     "   <mm:duration>@6@</mm:duration>\n" \
00753     "</mq:TrackInfoFromTRMId>\n" 
00754 
00760 #define MBQ_QuickTrackInfoFromTrackId \
00761     "<mq:QuickTrackInfoFromTrackId>\n" \
00762     "   <mm:trackid>@1@</mm:trackid>\n" \
00763     "   <mm:albumid>@2@</mm:albumid>\n" \
00764     "</mq:QuickTrackInfoFromTrackId>\n" 
00765 
00771 #define MBQ_FindArtistByName \
00772     "<mq:FindArtist>\n" \
00773     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00774     "   <mq:artistName>@1@</mq:artistName>\n" \
00775     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00776     "</mq:FindArtist>\n" 
00777 
00783 #define MBQ_FindAlbumByName \
00784     "<mq:FindAlbum>\n" \
00785     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00786     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00787     "   <mq:albumName>@1@</mq:albumName>\n" \
00788     "</mq:FindAlbum>\n" 
00789 
00795 #define MBQ_FindTrackByName \
00796     "<mq:FindTrack>\n" \
00797     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00798     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00799     "   <mq:trackName>@1@</mq:trackName>\n" \
00800     "</mq:FindTrack>\n" 
00801 
00808 #define MBQ_FindDistinctTRMId \
00809     "<mq:FindDistinctTRMID>\n" \
00810     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00811     "   <mq:artistName>@1@</mq:artistName>\n" \
00812     "   <mq:trackName>@2@</mq:trackName>\n" \
00813     "</mq:FindDistinctTRMID>\n" 
00814 
00818 #define MBQ_GetArtistById \
00819     "http://@URL@/mm-2.1/artist/@1@/@DEPTH@" 

00823 #define MBQ_GetAlbumById \
    "http://@URL@/mm-2.1/album/@1@/@DEPTH@" 

00827 #define MBQ_GetTrackById \
    "http://@URL@/mm-2.1/track/@1@/@DEPTH@" 

00831 #define MBQ_GetTrackByTRMId \
    "http://@URL@/mm-2.1/trmid/@1@/@DEPTH@" 

00835 #define MBQ_GetArtistRelationsById \
    "http://@URL@/mm-2.1/artistrel/@1@" 

00839 #define MBQ_GetAlbumRelationsById \
    "http://@URL@/mm-2.1/albumrel/@1@" 

00843 #define MBQ_GetTrackRelationsById \
    "http://@URL@/mm-2.1/trackrel/@1@" 

00847 #define MBQ_SubmitTrack \
    "<mq:SubmitTrack>\n" \
00848     "   <mq:artistName>@1@</mq:artistName>\n" \
00849     "   <mq:albumName>@2@</mq:albumName>\n" \
00850     "   <mq:trackName>@3@</mq:trackName>\n" \
00851     "   <mm:trmid>@4@</mm:trmid>\n" \
00852     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00853     "   <mm:duration>@6@</mm:duration>\n" \
00854     "   <mm:issued>@7@</mm:issued>\n" \
00855     "   <mm:genre>@8@</mm:genre>\n" \
00856     "   <dc:description>@9@</dc:description>\n" \
00857     "   <mm:link>@10@</mm:link>\n" \
00858     "   <mq:sessionId>@SESSID@</mq:sessionId>\n" \
00859     "   <mq:sessionKey>@SESSKEY@</mq:sessionKey>\n" \
00860     "</mq:SubmitTrack>\n" 
00861 
00871 #define MBQ_SubmitTrackTRMId \
00872     "<mq:SubmitTRMList>\n" \
00873     " <mm:trmidList>\n" \
00874     "  <rdf:Bag>\n" \
00875     "   <rdf:li>\n" \
00876     "    <mq:trmTrackPair>\n" \
00877     "     <mm:trackid>@1@</mm:trackid>\n" \
00878     "     <mm:trmid>@2@</mm:trmid>\n" \
00879     "    </mq:trmTrackPair>\n" \
00880     "   </rdf:li>\n" \
00881     "  </rdf:Bag>\n" \
00882     " </mm:trmidList>\n" \
00883     " <mq:sessionId>@SESSID@</mq:sessionId>\n" \
00884     " <mq:sessionKey>@SESSKEY@</mq:sessionKey>\n" \
00885     " <mq:clientVersion>@CLIENTVER@</mq:clientVersion>\n" \
00886     "</mq:SubmitTRMList>\n" 
00887 
00912 #define MBQ_FileInfoLookup \
00913     "<mq:FileInfoLookup>\n" \
00914     "   <mm:trmid>@1@</mm:trmid>\n" \
00915     "   <mq:artistName>@2@</mq:artistName>\n" \
00916     "   <mq:albumName>@3@</mq:albumName>\n" \
00917     "   <mq:trackName>@4@</mq:trackName>\n" \
00918     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00919     "   <mm:duration>@6@</mm:duration>\n" \
00920     "   <mq:fileName>@7@</mq:fileName>\n" \
00921     "   <mm:artistid>@8@</mm:artistid>\n" \
00922     "   <mm:albumid>@9@</mm:albumid>\n" \
00923     "   <mm:trackid>@10@</mm:trackid>\n" \
00924     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00925     "</mq:FileInfoLookup>\n" 
00926 
00927 #endif
00928 

Generated on Fri Dec 9 09:11:30 2005 for MusicBrainzClient by  doxygen 1.4.5