Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datafile suggested citation doesn't include file DOI #4777

Closed
qqmyers opened this issue Jun 23, 2018 · 25 comments
Closed

Datafile suggested citation doesn't include file DOI #4777

qqmyers opened this issue Jun 23, 2018 · 25 comments
Assignees

Comments

@qqmyers
Copy link
Member

qqmyers commented Jun 23, 2018

The suggested citation that appears on a 4.9 datafile page is currently just the suggested citation for the dataset with the file name and the text'[filename]' postpended. With file DOIs now being generated, it seems like the suggested citation should be updated, e.g. to postpend the file name and file DOI for example. An alternative would be to change the whole citation to just reference the file (which would require changing the text 'This file is part of "". If you use this file, please cite the data project:' that is directly above the citation block). I personally think that keeping the citation focused on the dataset and just adding the filename and DOI is a good approach, but I don't know if that would work for everyone/if this needs to be a config option, etc.

@qqmyers
Copy link
Member Author

qqmyers commented Jun 24, 2018

Per discussion in #2438 and on the community group (https://groups.google.com/forum/#!msg/dataverse-community/ZY53hidy-MU/MaU2YtJUBwAJ), it sounds like the idea of including both the dataset and file DOI in the citation was not a desired solution.

It may still be an open question whether a direct data file citation is desirable as an alternative to citing the dataset and mentioning the file...

@djbrooke
Copy link
Contributor

@scolapasta you mentioned yesterday in backlog grooming that there were a few options for moving forward here. Assigning to you for the specifics.

@qqmyers - do you have any availability to pick this up once we get feedback from the Community + @mercecrosas and others about what we want to do here?

@qqmyers
Copy link
Member Author

qqmyers commented Jun 28, 2018

@djbrooke - I think so. Looks like the latest discussion is along the lines of the image below. In testing how to do this, I realized that the code for the endnote, ris, and bibtex downloads has to be modified as well... (and the help link to data citation practices might need to move so it is not repeated.)

image

@pdurbin
Copy link
Member

pdurbin commented Jul 3, 2018

@qqmyers thanks for making pull request #4802! I just dragged this issue to code review at https://waffle.io/IQSS/dataverse

@qqmyers
Copy link
Member Author

qqmyers commented Jul 3, 2018

Copying/expanding some notes from the discussion forum w.r.t. the screenshot above:
A couple notes:

The text outside the blue citation boxes is in Bundle.properties and since the screen capture, the initial PR simplifies the default to:

This file is part of "QDR-982 testing".
Cite the whole Data Project:

Cite this Data File directly:

QDR also uses '. ' instead of ', ' as a separator - the PR uses a String set to ', ' which makes customizing for QDR easier, but doesn't pull this out as a Bundle option or key.
QDR uses 'Data Project' instead of 'Dataset' - the PR uses 'Dataset'.
QDR has added a publisher name (e.g. 'Qualitative Data Repository') before the DOI, which in QDR's case, is different than the root collection name that follows the DOI. The PR removes the separate publisher name before the DOI to match the existing Dataverse default.

With these changes the citations above would look like:

Myers, Jim, 2018, "QDR-982 testing", https://doi.org/10.5072/FK2DQKOMA. QDR Main Collection. V1; court dare.jpg [fileName]

Myers, Jim, 2018, "court dare.jpg", QDR-982 testing, https://doi.org/10.5072/FK2DQKOMA/48ZYBJ, QDR Main Collection, V1

Note - my example file doesn't have a UNF - a file with one would have it appended in both citation forms as it is in the 4.9.q release.

@pdurbin pdurbin self-assigned this Jul 9, 2018
pdurbin added a commit to QualitativeDataRepository/dataverse that referenced this issue Jul 9, 2018
@pdurbin
Copy link
Member

pdurbin commented Jul 9, 2018

It was driving me crazy that DataCitation.java had zero code coverage among it's 623 lines so I pushed a test in 4c67e61 to increase it to 24%. I don't want to hold up QA but in the future I hope we can add more tests.

Before

screen shot 2018-07-09 at 3 12 41 pm

After

screen shot 2018-07-09 at 3 14 17 pm

@scolapasta
Copy link
Contributor

@qqmyers can you make a small change to the text?

I ran this by Merce to check on on the citation formats / labels, and since the first citation includes the file details, it's better to say:
For the first citation: Cite dataset and file
For the second citation: Cite file directly

@adam3smith
Copy link
Contributor

Thinking more about this, I'm not convinced what we're doing with this is optimal. As of now we have three different citations:

  1. Dataset citation
  2. Dataset with file citation (equivalent of current data file citation)
  3. Data file citation.

with 1 on the dataset landing page, 2 and 3 on the data file landing page.

Logically these also correspond to three different sets of metadata. I think that's very confusing. With two different versions of a file citation on the file landing page, it's also unclear which of them should be encoded in schema.org metadata on that page.

I would suggest, instead, to make 1. and 2. identical, so we have

  1. Dataset citation
  2. Data file citation

In other words, get rid of the [file name] at the end of the dataset citation on file landing pages.

If people want to cite a specific file, they should just use 2. In the more common case, where they're looking at a file but really mean to cite the whole dataset, we should have 1. available on the file landing page (as per the discussion in the community group). Thoughts?

To illustrate:

Currently implemented
image

Suggested change:
image

(recall that QDR uses "data project" instead of "dataset")

@scolapasta
Copy link
Contributor

@mercecrosas thoughts on @adam3smith's comment? (this is related to one of our recent discussions)

@mercecrosas
Copy link
Member

mercecrosas commented Jul 19, 2018 via email

@adam3smith
Copy link
Contributor

adam3smith commented Jul 19, 2018

No, I haven't yet -- happy to check.
Edit: Sent an e-mail with Merce CCd

@adam3smith
Copy link
Contributor

@mercecrosas -- haven't heard back from Martin. Do you have any other thoughts on who to ask? My view would be to just go ahead with this change. I tried to look for standards and practices on file citations when I made the original proposal and didn't find anything at all.

@mercecrosas
Copy link
Member

mercecrosas commented Jul 26, 2018 via email

@adam3smith
Copy link
Contributor

Yes, that makes sense to me, too.

qqmyers added a commit to QualitativeDataRepository/dataverse that referenced this issue Jul 26, 2018
qqmyers added a commit to QualitativeDataRepository/dataverse that referenced this issue Jul 26, 2018
depending on whether the file has a DOi or not, per
IQSS#4777 (comment)

Conflicts:
	src/main/java/edu/harvard/iq/dataverse/DataCitation.java
@pdurbin
Copy link
Member

pdurbin commented Aug 17, 2018

The status of this issue wasn't immediately clear to me so here's a screenshot of the conversation from #4971 (review)

screen shot 2018-08-17 at 3 48 08 pm

I put it back into code review because that seems to be the right spot.

@kcondon
Copy link
Contributor

kcondon commented Aug 24, 2018

@qqmyers
Noticed a couple things:

  1. Dataset title in file citation block is italicized. Is this intentional? Saw it in your mockups but not in Mike's.
  2. Downloading RIS from citation throws exception, works in /develop:

[2018-08-24T18:47:30.003-0400] [glassfish 4.1] [WARNING] [AS-EJB-00056] [javax.enterprise.ejb.container] [tid: _ThreadID=50 _ThreadName=jk-connector(1)] [timeMillis: 1535150850003] [levelValue: 900] [[
A system exception occurred during an invocation on EJB FileDownloadServiceBean, method: public void edu.harvard.iq.dataverse.FileDownloadServiceBean.downloadDatasetCitationRIS(edu.harvard.iq.dataverse.Dataset)]]

[2018-08-24T18:47:30.003-0400] [glassfish 4.1] [WARNING] [] [javax.enterprise.ejb.container] [tid: _ThreadID=50 _ThreadName=jk-connector(1)] [timeMillis: 1535150850003] [levelValue: 900] [[

javax.ejb.EJBException
at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748)
at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698)
at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at com.sun.proxy.$Proxy629.downloadDatasetCitationRIS(Unknown Source)
at edu.harvard.iq.dataverse.EJB31_Generated__FileDownloadServiceBean__Intf____Bean.downloadDatasetCitationRIS(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:332)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:537)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
at com.sun.el.parser.AstValue.invoke(AstValue.java:283)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:295)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:226)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:412)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at edu.harvard.iq.dataverse.DataCitation.flattenHtml(DataCitation.java:634)
at edu.harvard.iq.dataverse.DataCitation.writeAsRISCitation(DataCitation.java:314)
at edu.harvard.iq.dataverse.FileDownloadServiceBean.downloadCitationRIS(FileDownloadServiceBean.java:318)
at edu.harvard.iq.dataverse.FileDownloadServiceBean.downloadDatasetCitationRIS(FileDownloadServiceBean.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64)
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
at sun.reflect.GeneratedMethodAccessor2448.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140)
at sun.reflect.GeneratedMethodAccessor2449.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369)
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
... 63 more
]]

@adam3smith
Copy link
Contributor

  1. Is intentional on our end. It mirrors the use of italics for book titles in book chapter citations, on which we modelled the data file citation. I'd recommend keeping them.

@qqmyers
Copy link
Member Author

qqmyers commented Aug 26, 2018

  1. Fix in a PR 4999

@djbrooke
Copy link
Contributor

Thanks @adam3smith and @qqmyers for the information and the fix!

@kcondon
Copy link
Contributor

kcondon commented Aug 27, 2018

@qqmyers OK, confirmed RIS download is working, thanks. Noticed italicized title is now normal text in file citation. Was that changed? We are taking @adam3smith advice on this and are fine with italicized.

Nevermind, it becomes italicized upon publishing. My bad!

@qqmyers
Copy link
Member Author

qqmyers commented Aug 27, 2018

@kcondon - I didn't change the italics. It does only apply to published files where the citation includes the file title then the dataset title in italics versus the file title being appended for unpublished ones.

@jggautier
Copy link
Contributor

jggautier commented Aug 28, 2018

Spoke with @adam3smith about the citation styles for files versus datasets. Bit of a puzzle. He pointed out that for most citation styles, when the citation includes two objects, like a chapter and the book that the chapter is in, the secondary object (like the book) is never in quotes (see some examples). In other words, when the object being referenced (like a file) is part of a larger work (a dataset), the larger work is never in quotes; if the work being referenced (like the file) is.

So keeping the dataset title in quotes when it's in the file citation would break that rule and may confuse users (and might make it more difficult for software to create citations?). He used italics for the dataset title instead so that the secondary object is styled differently, so that there's another distinction between the file title and dataset title.

But because the dataset title of the dataset citation IS in quotes, this means that the dataset title won't be styled the same when it's in a file citation. One solution is to use something other than quotes for the dataset title in the dataset citation, but this would change Dataverse's dataset citation style.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests