Identificatore dell'oggetto digitale a ricerca retromarcia data la tabella delle citazioni?
-
14-12-2019 - |
Domanda
Ho una tabella di citazioni che include il cognome del primo autore, il titolo, il diario, l'anno e i numeri di pagina per ogni citazione.
Ho pubblicato le prime linee del tavolo su Google Docs o il Versione CSV (non tutti i record hanno un DOI) .
Vorrei essere in grado di interrogare l'identificativo dell'oggetto digitale per ciascuna di queste citazioni.Per i titoli, sarebbe meglio se la query possa gestire " corrispondenza fuzzy ".
Come posso fare questo?
La tabella è attualmente in MySQL, ma sarebbe sufficiente iniziare e terminare con un file .csv (apprezzerei una risposta che passa dall'inizio alla fine) (o, dal momento che lo scopo di utilizzare per lo più R, un frame di dati R).
Soluzione 3
Ecco due opzioni
Carica CSV
Ho trovato un'altra soluzione promettente che non funziona anche in pratica come in
Crossref consente di caricare direttamente il CSV collegato, quindi esegue una query di testo qui: http:// www.crossref.org/stqupload/
Tuttavia, solo 18 delle 250 query (~ 7%) restituirono un doi.
query xml
Sulla base della risposta di Brian Diggs, qui un tentativo che fa il 95% del lavoro - per scrivere la query basata su XML, ha ancora alcuni bug che richiedono una certa eliminazione utilizzando sed
. Ma il più grande problema che la mia "sessione è scaduta" quando la query è stata presentata.
La sintassi XML include un'opzione per utilizzare la corrispondenza fuzzy.
The Dhiquery.xml contiene il testo del modello in @brians Risposta; Le citazioni.csv è collegata sopra.
library(XML)
doiquery.xml <- xmlTreeParse('doiquery.xml')
query <- doiquery.xml$doc$children$query_batch[["body"]]
citations <- read.csv("citations.csv")
new.query <- function(citation, query = query){
xmlValue(query[["author"]]) <- as.character(citation$author)
xmlValue(query[["year"]]) <- as.character(citation$year)
xmlValue(query[["article_title"]][["text"]]) <- citation$title
xmlValue(query[["journal_title"]]) <- citation$journal
return(query)
}
for (i in 1:nrow(citations)){
q <- addChildren(q, add.query(citations[i,]))
}
axml <- addChildren(doiquery.xml$doc$children$query_batch, q )
saveXML(axml, file = 'foo.xml')
.
Convertitore CSV a XML
Creativyst Software fornisce un Web CSV a XML convertitore.
Altri suggerimenti
Non conosco pacchetti o funzioni completi che lo fanno già, ma questo è l'approccio generale che userei. Crossref.org offre un approccio basato sul web per determinare un DOI dai dati bibliografici su http://www.crossref.org/ Guesttery /
In quella pagina sono diversi modi per cercare, incluso l'ultimo che prende una ricerca formattata XML. La pagina include informazioni su come creare l'XML appropriato. Avresti bisogno di inviare l'XML su HTTP (determinare i dettagli prelevando a parte la pagina per capire le destinazioni del modulo e eventuali informazioni aggiuntive che devono essere incluse) e analizza la risposta.
Inoltre, è necessario verificare che farlo in modo automatico non violi i termini del servizio del sito web in alcun modo.
.
Di seguito è riportato il modulo XML per The CrossRef QuestQuery, i termini ricercabili includono: articolo_title, autore, anno, journal_title, volume e prima pagina:
<?xml version = "1.0" encoding="UTF-8"?>
<query_batch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xmlns="http://www.crossref.org/qschema/2.0"
xsi:schemaLocation="http://www.crossref.org/qschema/2.0 http://www.crossref.org/qschema/crossref_query_input2.0.xsd">
<head>
<email_address>test@crossref.org</email_address>
<doi_batch_id>test</doi_batch_id>
</head>
<body>
<query enable-multiple-hits="false|exact|multi_hit_per_rule|one_hit_per_rule|true"
list-components="false"
expanded-results="false" key="key">
<article_title match="fuzzy"></article_title>
<author search-all-authors="false"></author>
<component_number></component_number>
<edition_number></edition_number>
<institution_name></institution_name>
<isbn></isbn>
<issn></issn>
<volume></volume>
<issue></issue>
<year></year>
<first_page></first_page>
<journal_title></journal_title>
<proceedings_title></proceedings_title>
<series_title></series_title>
<volume_title></volume_title>
<unstructured_citation></unstructured_citation>
</query>
</body>
</query_batch>
. Questo è un problema aperto.Ci sono modi migliori e peggiori per attaccarlo ma, iniziando leggendo Riassunto di Karen Coyle di questo problema.La bibliografia ha attaccato che all'articolo pure è
In breve, il problema della quantificazione della compensazione tra due record bibliografici è dura e una sostanziale ricerca della macchina di apprendimento della macchina che ha centrato attorno a questo argomento.