Giter VIP home page Giter VIP logo

webprotege's Introduction

WebProtégé

PLEASE NOTE

This repository is in the process of being superceded with a collection of other, more fine-grained, repositories. We are moving WebProtégé to a microservice architecture and each microservice and each common library now has its own repository. While this repository still serves as the repository for the current WebProtégé release, all active development is now taking place in these repositories. You can read more about this on the WebProtégé Next Gen Wiki.

What is WebProtégé?

WebProtégé is a free, open source collaborative ontology development environment.

It provides the following features:

  • Support for editing OWL 2 ontologies
  • A default simple editing interface, which provides access to commonly used OWL constructs
  • Full change tracking and revision history
  • Collaboration tools such as, sharing and permissions, threaded notes and discussions, watches and email notifications
  • Customizable user interface
  • Support for editing OBO ontologies
  • Multiple file formats for upload and download of ontologies (supported formats: RDF/XML, Turtle, OWL/XML, OBO, and others)

WebProtégé runs as a Web application. End users access it through their Web browsers. They do not need to download or install any software. We encourage end-users to use

https://webprotege.stanford.edu

If you have downloaded the webprotege war file from GitHub, and would like to deploy it on your own server, please follow the instructions at:

https://github.com/protegeproject/webprotege/wiki/WebProtégé-4.0.0-beta-x-Installation

Building

To build WebProtégé from source

  1. Clone the github repository
    git clone https://github.com/protegeproject/webprotege.git
    
  2. Open a terminal in the directory where you clone the repository to
  3. Use maven to package WebProtégé
    mvn clean package
    
  4. The WebProtege .war file will be built into the webprotege-server directory

Running from Maven

To run WebProtégé in SuperDev Mode using maven

  1. Start the GWT code server in one terminal window
    mvn gwt:codeserver
    
  2. In a different terminal window start the tomcat server
    mvn -Denv=dev tomcat7:run
    
  3. Browse to WebProtégé in a Web browser by navigating to http://localhost:8080

Running from Docker

To run WebProtégé using Docker containers:

  1. Enter this following command in the Terminal to start the docker container in the background

    docker-compose up -d
  2. Create the admin user (follow the questions prompted to provider username, email and password)

    docker exec -it webprotege java -jar /webprotege-cli.jar create-admin-account
  3. Browse to WebProtégé Settings page in a Web browser by navigating to http://localhost:5000/#application/settings

    1. Define the System notification email address and application host URL
    2. Enable User creation, Project creation and Project import

To stop WebProtégé and MongoDB:

docker-compose down

Sharing the volumes used by the WebProtégé app and MongoDB allow to keep persistent data, even when the containers stop. Default shared data storage:

  • WebProtégé will store its data in the source code folder at ./.protegedata/protege where you run docker-compose
  • MongoDB will store its data in the source code folder at ./.protegedata/mongodb where you run docker-compose

Path to the shared volumes can be changed in the docker-compose.yml file.

webprotege's People

Contributors

alexskr avatar azolo avatar csnyulas avatar dependabot[bot] avatar gandharvm avatar johardi avatar jvendetti avatar kmax avatar matthewhorridge avatar mever avatar rsgoncalves avatar tudorache avatar vemonet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webprotege's Issues

Class hierarchy does not always refresh when deleting classes

It seems that if I delete a class by pressing the delete button, there are some UI issues. The node doesn't automatically disappear. If I press the refresh button (in the UI, not the browser), in at least some cases, ALL classes disappear from the UI, which is rather scary. Pressing refresh again seems to bring them back as expected.

NullPointer exception thrown in NotesManager

Caused by: java.lang.NullPointerException at edu.stanford.bmir.protege.web.server.notes.OWLAPINotesManagerNotesAPIImpl.setNoteStatus(OWLAPINotesManagerNotesAPIImpl.java:243) at edu.stanford.bmir.protege.web.server.notes.SetNoteStatusActionHandler.execute(SetNoteStatusActionHandler.java:28) at edu.stanford.bmir.protege.web.server.notes.SetNoteStatusActionHandler.execute(SetNoteStatusActionHandler.java:18) at edu.stanford.bmir.protege.web.server.dispatch.AbstractHasProjectActionHandler.execute(AbstractHasProjectActionHandler.java:47) at edu.stanford.bmir.protege.web.server.dispatch.impl.DefaultDispatchServiceExecutor.execute(DefaultDispatchServiceExecutor.java:34) at edu.stanford.bmir.protege.web.server.dispatch.impl.DispatchServiceImpl.executeAction(DispatchServiceImpl.java:34) at sun.reflect.GeneratedMethodAccessor298.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561) ... 22 more

Allow email addresses to be reused over multiple accounts

At the moment the relationship between account name and email address is one-to-one. It should be possible to specify the same email address for multiple accounts. Some consideration is needed, because there is some code which looks up user accounts by email address!

edu.stanford.bmir.protege.web.shared.user.UserEmailAlreadyExistsException: User email address already exists: [email protected] at edu.stanford.bmir.protege.web.server.LocalMetaProjectManager.registerUser(LocalMetaProjectManager.java:100) at edu.stanford.bmir.protege.web.server.AccessPolicyManager.createTemporaryAccountForInvitation(AccessPolicyManager.java:666) at edu.stanford.bmir.protege.web.server.SharingSettingsServiceImplP3Delegate.sendEmailInvitation(SharingSettingsServiceImplP3Delegate.java:206) at edu.stanford.bmir.protege.web.server.SharingSettingsServiceImplP3Delegate.createUsersBySharingSettingMap(SharingSettingsServiceImplP3Delegate.java:186) at edu.stanford.bmir.protege.web.server.SharingSettingsServiceImplP3Delegate.updateSharingSettings(SharingSettingsServiceImplP3Delegate.java:146) at edu.stanford.bmir.protege.web.server.SharingSettingsManager.updateSharingSettings(SharingSettingsManager.java:52) at edu.stanford.bmir.protege.web.server.SharingSettingsServiceImpl.updateSharingSettings(SharingSettingsServiceImpl.java:21)

Provide a mechanism for permanently deleting projects

At the moment projects cannot be deleted - they can only be moved to the trash. Some people have asked for the possibility to permanently delete projects. Moving things to the trash ensures that projects can be recovered - we need to decide if permanent delete is really necessary.

Clicking to autocomplete in primitive data editor can cause the field to go blank

If I'm creating a Property, and start typing in the Annotations Property Name box, then select an item (e.g., rdfs:comment) with the mouse, then the partial property name disappears and I seemingly create an annotation of name empty-string, which is not so good. I get a little yellow popup box saying "! is a new property name". I'd expect that the field should properly autocomplete here. Thanks.

Drag and Drop is not available in the property hierarchy

Hi. I mistakenly created a Property in the wrong place in the property hierarchy. It doesn't seem like the UI lets me move that property to the right place. It does look like I can move Classes elsewhere in that hierarchy, so I was a bit surprised to see this. As it is, I think the only thing I can do is to delete the property and recreate it in the right place. Would love to see drag-and-drop functionality work here.

Add option to prevent UI reconfiguration

One can disable closing a tab with the param:

closable
false

Portlets however do not expose this parameter.
It would be more consistent if this option is also enabled for indivual portlets, so one can truely disable (client side) interface modifications .

Unloadable Imports prevent project upload

When creating a project by uploading an ontology, if an import cannot be loaded the UnloadableImportException gets thrown and halts loading. It might be best to have silent missing import handling turned on.

Focus lost after entering a property value

Currently, tabbing out of the Annotations Name field properly goes to the Description text box, but tabbing out of the Description text box fails to go to the language text box. It appears as if control is getting captured by some code -- perhaps the Project Feed?

Download project downloads an empty zip file

download project (from new created project) results in empty zip-file.
download from uploaded project works fine.

(running: local webprotege build 105, debian wheezy, tomcat 6, firefox 23.0.1)

Support the configuration of multiple classes for the Individuals List portlet through the showOnlyClass property

Changed the label to enhancement based on detailed comment.

Currently, showOnlyClass works only for a particular class: the instance list portlet will display only the instances of that particular class.

The request is to support the display of instances of multiple classes, meaning that showOnlyClass should be able to take a list of classes as a value (it should be probably renamed to showOnlyClasses). The portlet would then show the union of the instances of all classes, which are values of the showOnlyClass property.

Download project fails

Hello,

I have installed webprotege_2013.07.24-105 in windows 7. I am not able to download projects. When I click the download icon I got the following error message.

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
edu.stanford.bmir.protege.web.server.owlapi.change.OWLOntologyChangeRecordList.iterator(OWLOntologyChangeRecordList.java:95)
edu.stanford.bmir.protege.web.server.owlapi.change.Revision.iterator(Revision.java:216)
edu.stanford.bmir.protege.web.server.owlapi.change.OWLAPIChangeManager.getOntologyManagerForRevision(OWLAPIChangeManager.java:403)
edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.getOntologyManagerForRevision(OWLAPIProjectDocumentStore.java:452)
edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.exportProjectRevision(OWLAPIProjectDocumentStore.java:178)
edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.createDownloadCacheIfNecessary(OWLAPIProjectDocumentStore.java:431)
edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.exportProject(OWLAPIProjectDocumentStore.java:154)
edu.stanford.bmir.protege.web.server.filedownload.OWLAPIProjectDownloader.writeProject(OWLAPIProjectDownloader.java:51)
edu.stanford.bmir.protege.web.server.filedownload.FileDownloadServlet.doGet(FileDownloadServlet.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
edu.stanford.bmir.protege.web.server.filter.WebProtegeWebAppFilter.doFilter(WebProtegeWebAppFilter.java:65)

I appreciate your help.

Updating the language tag for a property duplicates property

When editing a language attribute for a property, the property gets duplicated (one without language attribute, one with new value). Correct behaviour would be only one property with new entered language value.

(running: local webprotege build 105, debian wheezy, tomcat 6, firefox 23.0.1)

NullPointer exception when retrieving "related property values"

The exception below appeared in the logs.

Caused by: java.lang.NullPointerException at edu.stanford.bmir.protege.web.server.owlapi.GetRelatedPropertiesStrategy.execute(GetRelatedPropertiesStrategy.java:36) at edu.stanford.bmir.protege.web.server.owlapi.OntologyServiceOWLAPIImpl.getRelatedProperties(OntologyServiceOWLAPIImpl.java:771) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561) ... 22 more

Make OAI and ORE builtin vocabularies

Currently dublin core (dc) and simple knowledge organisation system (skos) are default supported. Similar extension for oai ore would be great. (or in case this is not opportune provide possibility to integrate)

Trying to download an empty, unopened project causes an error

Related to issue #33

Steps to reproduce:

  1. Create an empty project. Do not open it.
  2. Try to download the project. Observer that the download fails.

An exception is thrown on the server:

java.lang.NullPointerException: revisionRootOntology must not be null at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:208) at edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.applyRevisionMetadataAnnotationsToOntology(OWLAPIProjectDocumentStore.java:449) at edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.exportProjectRevision(OWLAPIProjectDocumentStore.java:188) at edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.createDownloadCacheIfNecessary(OWLAPIProjectDocumentStore.java:437) at edu.stanford.bmir.protege.web.server.owlapi.OWLAPIProjectDocumentStore.exportProject(OWLAPIProjectDocumentStore.java:160) at edu.stanford.bmir.protege.web.server.filedownload.OWLAPIProjectDownloader.writeProject(OWLAPIProjectDownloader.java:51) at edu.stanford.bmir.protege.web.server.filedownload.FileDownloadServlet.doGet(FileDownloadServlet.java:34) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097) at edu.stanford.bmir.protege.web.server.filter.WebProtegeWebAppFilter.doFilter(WebProtegeWebAppFilter.java:65) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

WebProtege sometimes generates IRIs that require custom prefix generation when saving to RDF/XML

Consider the following IRI as a property IRI

http://webprotege.stanford.edu/8gQAvsFVAjAj7tQR77pJGi

If this IRI is used in a property assertion then an RDF/XML serializer has to generate a QName from it (so it's possible to have an XML element name that gets expanded to the IRI on parsing). Because this IRI contains a number directly after the last forward slash a render will have to generate something like http://webprotege.stanford.edu/8 as a prefix (say with the prefix wp) and gQAvsFVAjAj7tQR77pJGi as a non-colonized name so that wp:gQAvsFVAjAj7tQR77pJGi can be generated as a QName. This can get quite yucky and should probably be fixed.

Some buttons look strange on webkit based browsers

The WebProtege L&F CSS needs adjusting as some of the buttons aren't rendered correctly on webkit based browsers (e.g. Safari).

buttons

Should be like this

buttons-correct

The problem is with the linear-gradient background. Webkit browsers need a -webkit- prefix.

Allow display language tag to be specified

(Was: Allow 'Display name' contents to display non-english terms)

Value from rdfs:label is used for display name. This is automatically the attribute with 'en' language attribute.
It would be an improvement if can choose a different language for defaulting the display name to. In our case this could easily be a server configuration setting (rather than a project configuration setting).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.