Main Page   Namespace List   Compound List   File List   Compound Members   File Members  

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-source.html 2542 2003-01-26 02:34:42Z robert $
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 
00124 #define MBS_SelectLookupResult            \
00125         "http://musicbrainz.org/mm/mq-1.1#lookupResultList []"
00126 
00131 #define MBS_SelectLookupResultArtist            \
00132         "http://musicbrainz.org/mm/mq-1.1#artist"
00133 
00138 #define MBS_SelectLookupResultAlbum            \
00139         "http://musicbrainz.org/mm/mq-1.1#album"
00140 
00145 #define MBS_SelectLookupResultTrack            \
00146         "http://musicbrainz.org/mm/mq-1.1#track"
00147 
00148 /* -------------------------------------------------------------------------
00149  * General top level queries -- Internal use only.
00150  * -------------------------------------------------------------------------
00151  */
00155 #define MBE_QuerySubject           \
00156         "http://musicbrainz.org/mm/mq-1.1#Result"
00157 
00160 #define MBE_GetError               \
00161         "http://musicbrainz.org/mm/mq-1.1#error"
00162 
00163 
00164 /* -------------------------------------------------------------------------
00165  * Top level queries used with MBQ_FileInfoLookup 
00166  * -------------------------------------------------------------------------
00167  */
00168 
00174 #define MBE_GetStatus              \
00175         "http://musicbrainz.org/mm/mq-1.1#status"
00176 
00177 /* -------------------------------------------------------------------------
00178  * Queries used to determine the number of items returned
00179  * by a query.
00180  * -------------------------------------------------------------------------
00181  */
00185 #define MBE_GetNumArtists     \
00186         "http://musicbrainz.org/mm/mm-2.1#artistList [COUNT]"
00187 
00191 #define MBE_GetNumAlbums      \
00192         "http://musicbrainz.org/mm/mm-2.1#albumList [COUNT]"
00193 
00197 #define MBE_GetNumTracks      \
00198         "http://musicbrainz.org/mm/mm-2.1#trackList [COUNT]"
00199 
00203 #define MBE_GetNumTrmids      \
00204         "http://musicbrainz.org/mm/mm-2.1#trmidList [COUNT]"
00205 
00209 #define MBE_GetNumLookupResults      \
00210         "http://musicbrainz.org/mm/mm-2.1#lookupResultList [COUNT]"
00211 
00212 /* -------------------------------------------------------------------------
00213  * artistList queries
00214  * -------------------------------------------------------------------------
00215  */
00216 
00220 #define MBE_ArtistGetArtistName      \
00221         "http://purl.org/dc/elements/1.1/title"
00222 
00226 #define MBE_ArtistGetArtistSortName      \
00227         "http://musicbrainz.org/mm/mm-2.1#sortName"
00228 
00233 #define MBE_ArtistGetArtistId        \
00234         "" // yes, empty! 
00235 
00241 #define MBE_ArtistGetAlbumName      \
00242         "http://musicbrainz.org/mm/mm-2.1#albumList [] http://purl.org/dc/elements/1.1/title"
00243 
00249 #define MBE_ArtistGetAlbumId      \
00250         "http://musicbrainz.org/mm/mm-2.1#albumList []"
00251 
00252 /* -------------------------------------------------------------------------
00253  * albumList queries
00254  * -------------------------------------------------------------------------
00255  */
00256 
00260 #define MBE_AlbumGetAlbumName      \
00261         "http://purl.org/dc/elements/1.1/title"
00262 
00267 #define MBE_AlbumGetAlbumId        \
00268         "" // yes, empty! 
00269 
00273 #define MBE_AlbumGetAlbumStatus        \
00274         "http://musicbrainz.org/mm/mm-2.1#releaseStatus"
00275 
00279 #define MBE_AlbumGetAlbumType        \
00280         "http://musicbrainz.org/mm/mm-2.1#releaseType"
00281 
00285 #define MBE_AlbumGetNumCdindexIds    \
00286         "http://musicbrainz.org/mm/mm-2.1#cdindexidList [COUNT]"
00287 
00294 #define MBE_AlbumGetAlbumArtistId        \
00295         "http://purl.org/dc/elements/1.1/creator"
00296 
00300 #define MBE_AlbumGetNumTracks      \
00301         "http://musicbrainz.org/mm/mm-2.1#trackList [COUNT]"
00302 
00308 #define MBE_AlbumGetTrackId        \
00309         "http://musicbrainz.org/mm/mm-2.1#trackList [] "
00310 
00316 #define MBE_AlbumGetTrackList        \
00317         "http://musicbrainz.org/mm/mm-2.1#trackList"
00318 
00324 #define MBE_AlbumGetTrackNum       \
00325         "http://musicbrainz.org/mm/mm-2.1#trackList [?] http://musicbrainz.org/mm/mm-2.1#trackNum"
00326 
00332 #define MBE_AlbumGetTrackName      \
00333         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/title"
00334 
00340 #define MBE_AlbumGetTrackDuration       \
00341         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://musicbrainz.org/mm/mm-2.1#duration"
00342 
00348 #define MBE_AlbumGetArtistName     \
00349         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator http://purl.org/dc/elements/1.1/title"
00350 
00356 #define MBE_AlbumGetArtistSortName \
00357         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator http://musicbrainz.org/mm/mm-2.1#sortName"
00358 
00364 #define MBE_AlbumGetArtistId       \
00365         "http://musicbrainz.org/mm/mm-2.1#trackList [] http://purl.org/dc/elements/1.1/creator"
00366 
00367 /* -------------------------------------------------------------------------
00368  * trackList queries
00369  * -------------------------------------------------------------------------
00370  */
00371 
00375 #define MBE_TrackGetTrackName      \
00376         "http://purl.org/dc/elements/1.1/title"
00377 
00382 #define MBE_TrackGetTrackId        \
00383         "" // yes, empty! 
00384 
00388 #define MBE_TrackGetTrackNum      \
00389         "http://musicbrainz.org/mm/mm-2.1#trackNum"
00390 
00394 #define MBE_TrackGetTrackDuration \
00395         "http://musicbrainz.org/mm/mm-2.1#duration"
00396 
00400 #define MBE_TrackGetArtistName      \
00401         "http://purl.org/dc/elements/1.1/creator http://purl.org/dc/elements/1.1/title"
00402 
00406 #define MBE_TrackGetArtistSortName      \
00407         "http://purl.org/dc/elements/1.1/creator http://musicbrainz.org/mm/mm-2.1#sortName"
00408 
00412 #define MBE_TrackGetArtistId      \
00413         "http://purl.org/dc/elements/1.1/creator"
00414 
00415 /* -------------------------------------------------------------------------
00416  * Quick track queries
00417  * -------------------------------------------------------------------------
00418  */
00419 
00423 #define MBE_QuickGetArtistName      \
00424         "http://musicbrainz.org/mm/mq-1.1#artistName"
00425 
00429 #define MBE_QuickGetAlbumName      \
00430         "http://musicbrainz.org/mm/mq-1.1#albumName"
00431 
00435 #define MBE_QuickGetTrackName      \
00436         "http://musicbrainz.org/mm/mq-1.1#trackName"
00437 
00441 #define MBE_QuickGetTrackNum       \
00442         "http://musicbrainz.org/mm/mm-2.1#trackNum"
00443 
00447 #define MBE_QuickGetTrackId       \
00448         "http://musicbrainz.org/mm/mm-2.1#trackid"
00449 
00453 #define MBE_QuickGetTrackDuration       \
00454         "http://musicbrainz.org/mm/mm-2.1#duration"
00455 
00456 /* -------------------------------------------------------------------------
00457  * FileLookup queries
00458  * -------------------------------------------------------------------------
00459  */
00460 
00464 #define MBE_LookupGetType      \
00465         "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
00466 
00470 #define MBE_LookupGetRelevance      \
00471         "http://musicbrainz.org/mm/mq-1.1#relevance"
00472 
00476 #define MBE_LookupGetArtistId      \
00477         "http://musicbrainz.org/mm/mq-1.1#artist"
00478 
00482 #define MBE_LookupGetAlbumId      \
00483         "http://musicbrainz.org/mm/mq-1.1#album"
00484 
00488 #define MBE_LookupGetTrackId      \
00489         "http://musicbrainz.org/mm/mq-1.1#track"
00490 
00491 /* -------------------------------------------------------------------------
00492  * Extract queries for the MBQ_GetCDTOC query
00493  * -------------------------------------------------------------------------
00494  */
00498 #define MBE_TOCGetCDIndexId           \
00499         "http://musicbrainz.org/mm/mm-2.1#cdindexid"
00500 
00503 #define MBE_TOCGetFirstTrack          \
00504         "http://musicbrainz.org/mm/mm-2.1#firstTrack"
00505 
00509 #define MBE_TOCGetLastTrack           \
00510         "http://musicbrainz.org/mm/mm-2.1#lastTrack"
00511 
00516 #define MBE_TOCGetTrackSectorOffset   \
00517         "http://musicbrainz.org/mm/mm-2.1#toc [] http://musicbrainz.org/mm/mm-2.1#sectorOffset"
00518 
00523 #define MBE_TOCGetTrackNumSectors     \
00524         "http://musicbrainz.org/mm/mm-2.1#toc [] http://musicbrainz.org/mm/mm-2.1#numSectors"
00525 
00526 /* -------------------------------------------------------------------------
00527  * Extract queries for the MBQ_AuthenticateQuery query
00528  * -------------------------------------------------------------------------
00529  */
00534 #define MBE_AuthGetSessionId  \
00535         "http://musicbrainz.org/mm/mq-1.1#sessionId"
00536 
00541 #define MBE_AuthGetChallenge  \
00542         "http://musicbrainz.org/mm/mq-1.1#authChallenge"
00543 
00544 /* -------------------------------------------------------------------------
00545  * Local queries (queries are automatically generated)
00546  * -------------------------------------------------------------------------
00547  */
00554 #define MBQ_GetCDInfo              \
00555         "@CDINFO@"
00556 
00562 #define MBQ_GetCDTOC               \
00563         "@LOCALCDINFO@"
00564 
00567 #define MBQ_AssociateCD            \
00568         "@CDINFOASSOCIATECD@"
00569 
00570 /* -------------------------------------------------------------------------
00571  * Server queries (queries must have argument(s) substituted in them)
00572  * -------------------------------------------------------------------------
00573  */
00574 
00585 #define MBQ_Authenticate \
00586     "<mq:AuthenticateQuery>\n" \
00587     "   <mq:username>@1@</mq:username>\n" \
00588     "</mq:AuthenticateQuery>\n" 
00589 
00594 #define MBQ_GetCDInfoFromCDIndexId \
00595     "<mq:GetCDInfo>\n" \
00596     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00597     "   <mm:cdindexid>@1@</mm:cdindexid>\n" \
00598     "</mq:GetCDInfo>\n" 
00599 
00615 #define MBQ_TrackInfoFromTRMId \
00616     "<mq:TrackInfoFromTRMId>\n" \
00617     "   <mm:trmid>@1@</mm:trmid>\n" \
00618     "   <mq:artistName>@2@</mq:artistName>\n" \
00619     "   <mq:albumName>@3@</mq:albumName>\n" \
00620     "   <mq:trackName>@4@</mq:trackName>\n" \
00621     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00622     "   <mm:duration>@6@</mm:duration>\n" \
00623     "</mq:TrackInfoFromTRMId>\n" 
00624 
00630 #define MBQ_QuickTrackInfoFromTrackId \
00631     "<mq:QuickTrackInfoFromTrackId>\n" \
00632     "   <mm:trackid>@1@</mm:trackid>\n" \
00633     "   <mm:albumid>@2@</mm:albumid>\n" \
00634     "</mq:QuickTrackInfoFromTrackId>\n" 
00635 
00641 #define MBQ_FindArtistByName \
00642     "<mq:FindArtist>\n" \
00643     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00644     "   <mq:artistName>@1@</mq:artistName>\n" \
00645     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00646     "</mq:FindArtist>\n" 
00647 
00653 #define MBQ_FindAlbumByName \
00654     "<mq:FindAlbum>\n" \
00655     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00656     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00657     "   <mq:albumName>@1@</mq:albumName>\n" \
00658     "</mq:FindAlbum>\n" 
00659 
00665 #define MBQ_FindTrackByName \
00666     "<mq:FindTrack>\n" \
00667     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00668     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00669     "   <mq:trackName>@1@</mq:trackName>\n" \
00670     "</mq:FindTrack>\n" 
00671 
00678 #define MBQ_FindDistinctTRMId \
00679     "<mq:FindDistinctTRMID>\n" \
00680     "   <mq:depth>@DEPTH@</mq:depth>\n" \
00681     "   <mq:artistName>@1@</mq:artistName>\n" \
00682     "   <mq:trackName>@2@</mq:trackName>\n" \
00683     "</mq:FindDistinctTRMID>\n" 
00684 
00688 #define MBQ_GetArtistById \
00689     "http://@URL@/mm-2.1/artist/@1@/@DEPTH@" 
00690 
00694 #define MBQ_GetAlbumById \
00695     "http://@URL@/mm-2.1/album/@1@/@DEPTH@" 
00696 
00700 #define MBQ_GetTrackById \
00701     "http://@URL@/mm-2.1/track/@1@/@DEPTH@" 
00702 
00706 #define MBQ_GetTrackByTRMId \
00707     "http://@URL@/mm-2.1/trmid/@1@/@DEPTH@" 
00708 
00712 #define MBQ_SubmitTrack \
00713     "<mq:SubmitTrack>\n" \
00714     "   <mq:artistName>@1@</mq:artistName>\n" \
00715     "   <mq:albumName>@2@</mq:albumName>\n" \
00716     "   <mq:trackName>@3@</mq:trackName>\n" \
00717     "   <mm:trmid>@4@</mm:trmid>\n" \
00718     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00719     "   <mm:duration>@6@</mm:duration>\n" \
00720     "   <mm:issued>@7@</mm:issued>\n" \
00721     "   <mm:genre>@8@</mm:genre>\n" \
00722     "   <dc:description>@9@</dc:description>\n" \
00723     "   <mm:link>@10@</mm:link>\n" \
00724     "   <mq:sessionId>@SESSID@</mq:sessionId>\n" \
00725     "   <mq:sessionKey>@SESSKEY@</mq:sessionKey>\n" \
00726     "</mq:SubmitTrack>\n" 
00727 
00737 #define MBQ_SubmitTrackTRMId \
00738     "<mq:SubmitTRMList>\n" \
00739     " <mm:trmidList>\n" \
00740     "  <rdf:Bag>\n" \
00741     "   <rdf:li>\n" \
00742     "    <mq:trmTrackPair>\n" \
00743     "     <mm:trackid>@1@</mm:trackid>\n" \
00744     "     <mm:trmid>@2@</mm:trmid>\n" \
00745     "    </mq:trmTrackPair>\n" \
00746     "   </rdf:li>\n" \
00747     "  </rdf:Bag>\n" \
00748     " </mm:trmidList>\n" \
00749     " <mq:sessionId>@SESSID@</mq:sessionId>\n" \
00750     " <mq:sessionKey>@SESSKEY@</mq:sessionKey>\n" \
00751     " <mq:clientVersion>@CLIENTVER@</mq:clientVersion>\n" \
00752     "</mq:SubmitTRMList>\n" 
00753 
00778 #define MBQ_FileInfoLookup \
00779     "<mq:FileInfoLookup>\n" \
00780     "   <mm:trmid>@1@</mm:trmid>\n" \
00781     "   <mq:artistName>@2@</mq:artistName>\n" \
00782     "   <mq:albumName>@3@</mq:albumName>\n" \
00783     "   <mq:trackName>@4@</mq:trackName>\n" \
00784     "   <mm:trackNum>@5@</mm:trackNum>\n" \
00785     "   <mm:duration>@6@</mm:duration>\n" \
00786     "   <mq:fileName>@7@</mq:fileName>\n" \
00787     "   <mm:artistid>@8@</mm:artistid>\n" \
00788     "   <mm:albumid>@9@</mm:albumid>\n" \
00789     "   <mm:trackid>@10@</mm:trackid>\n" \
00790     "   <mq:maxItems>@MAX_ITEMS@</mq:maxItems>\n" \
00791     "</mq:FileInfoLookup>\n" 
00792 
00793 #endif

Generated at Sat Jan 25 18:27:11 2003 for MusicBrainz Client Library by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001