diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..010219a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,28 @@ +name: Build + +on: + push: + branches: [protege-6] + pull_request: + +permissions: + contents: read + +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check out the source + uses: actions/checkout@v5 + - name: Set up Java and Maven + uses: actions/setup-java@v5 + with: + java-version: '11' + distribution: 'temurin' + cache: maven + - name: Build and test + run: mvn --batch-mode clean verify diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..eb0b0e8 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,47 @@ +name: Publish packages to the Maven Central Repository + +on: + release: + types: [released] + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - name: Check out the source + uses: actions/checkout@v5 + # Release versions must match the GitHub tag. Manual runs leave the + # version unchanged and are intended for publishing snapshots. + - if: github.event_name == 'release' + name: Validate release tag + env: + RELEASE_TAG: ${{ github.event.release.tag_name }} + run: | + if [[ ! "$RELEASE_TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z]+([.-][0-9A-Za-z]+)*)?$ ]]; then + echo "::error::Release tag '$RELEASE_TAG' must be a Maven version such as '5.0.0' or '5.0.0-beta-1' (without a 'v' prefix)." + exit 1 + fi + - name: Set up Java and Maven + uses: actions/setup-java@v5 + with: + java-version: '11' + distribution: 'temurin' + server-id: ossrh + server-username: OSSRH_USERNAME + server-password: OSSRH_TOKEN + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: GPG_PASSPHRASE + - if: github.event_name == 'release' + name: Set the release version + env: + RELEASE_VERSION: ${{ github.event.release.tag_name }} + run: mvn --batch-mode versions:set -DnewVersion="$RELEASE_VERSION" -DgenerateBackupPoms=false + # These OSSRH-named variables contain the Maven Central Portal token. + - name: Publish packages + run: mvn --batch-mode --activate-profiles release deploy + +env: + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b864def..0000000 --- a/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: java - -jdk: - - oraclejdk8 - -notifications: - email: - recipients: - - vendetti@stanford.edu - - matthew.horridge@stanford.edu - - tudorache@stanford.edu - - csnyulas@stanford.edu - on_success: never - on_failure: always - diff --git a/README.md b/README.md index cb1b742..d8989b5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -dlquery -======= +# DL Query -A [Protege](http://protege.stanford.edu/products.php#desktop-protege) plugin that provides an interface for querying -OWL ontologies. +A [Protégé](https://protege.stanford.edu/) plugin that provides an interface for querying OWL ontologies using the active reasoner. -User's guide is [available](http://protegewiki.stanford.edu/wiki/DLQueryTab) on the Protege Wiki. +The `5.x` development line targets Protégé 6 and OWL API 5. Build and run the tests with Java 11 or later: + +```shell +mvn --batch-mode clean verify +``` + +The [user guide](https://protegewiki.stanford.edu/wiki/DLQueryTab) is available on the Protégé Wiki. diff --git a/pom.xml b/pom.xml index 0081815..bdea538 100644 --- a/pom.xml +++ b/pom.xml @@ -2,17 +2,9 @@ 4.0.0 - - - org.sonatype.oss - oss-parent - 7 - - - edu.stanford.protege org.coode.dlquery - 4.0.2-SNAPSHOT + 5.0.0-SNAPSHOT bundle DL Query @@ -79,9 +71,9 @@ - scm:git:git@github.com:protegeproject/org.coode.dlquery.git - scm:git:git@github.com:protegeproject/org.coode.dlquery.git - https://github.com/protegeproject/org.coode.dlquery + scm:git:https://github.com/protegeproject/dlquery.git + scm:git:git@github.com:protegeproject/dlquery.git + https://github.com/protegeproject/dlquery HEAD @@ -91,10 +83,23 @@ UTF-8 - 5.0.0-beta-19 - 4.1.3 + UTF-8 + false + 6.0.0-alpha-1 + 5.5.1 + + + ossrh + https://central.sonatype.com/repository/maven-snapshots/ + + + ossrh + https://central.sonatype.com + + + @@ -124,8 +129,9 @@ org.slf4j slf4j-api - 1.7.12 + 1.7.36 + @@ -139,25 +145,57 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.1 + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + UTF-8 + + + org.apache.maven.plugins maven-compiler-plugin - 3.0 + 3.14.0 - 1.8 - 1.8 + 11 + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + + org.apache.maven.plugins + maven-install-plugin + 3.1.4 + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.4 + + org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.3.1 attach-sources - jar + jar-no-fork @@ -166,7 +204,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 3.11.2 attach-javadocs @@ -181,18 +219,16 @@ org.apache.felix maven-bundle-plugin - 3.0.0 + 5.1.9 true - org.protege.editor.owl.ProtegeOWL . ${project.artifactId};singleton:=true The Protege Development Team - org.protege.editor.core.*;version="5.0.0", - org.protege.editor.owl.*;version="5.0.0", - org.semanticweb.owlapi.*;version="[4.1.3,5.0.0)", + org.protege.editor.core.*;version="[6.0.0,7.0.0)", + org.protege.editor.owl.*;version="[6.0.0,7.0.0)", * {maven-resources} @@ -200,14 +236,6 @@ - - - maven-eclipse-plugin - 2.9 - - true - - @@ -222,7 +250,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 3.2.7 sign-artifacts @@ -233,6 +261,17 @@ + + org.sonatype.central + central-publishing-maven-plugin + 0.9.0 + true + + ossrh + true + published + + diff --git a/src/main/java/org/coode/dlquery/DLQueryResultsSection.java b/src/main/java/org/coode/dlquery/DLQueryResultsSection.java index 776ebc5..d0666a6 100644 --- a/src/main/java/org/coode/dlquery/DLQueryResultsSection.java +++ b/src/main/java/org/coode/dlquery/DLQueryResultsSection.java @@ -2,7 +2,7 @@ import org.protege.editor.core.ui.list.MListSectionHeader; -import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Objects.requireNonNull; /* * Copyright (C) 2007, University of Manchester * @@ -39,7 +39,7 @@ public class DLQueryResultsSection implements MListSectionHeader { public DLQueryResultsSection(String label) { - this.label = checkNotNull(label); + this.label = requireNonNull(label); } diff --git a/src/main/java/org/coode/dlquery/OWLClassExpressionEditorViewComponent.java b/src/main/java/org/coode/dlquery/OWLClassExpressionEditorViewComponent.java index 5cb3ad1..fbde657 100644 --- a/src/main/java/org/coode/dlquery/OWLClassExpressionEditorViewComponent.java +++ b/src/main/java/org/coode/dlquery/OWLClassExpressionEditorViewComponent.java @@ -1,21 +1,19 @@ package org.coode.dlquery; import java.awt.*; -import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.List; import java.util.function.Predicate; import javax.swing.*; +import javax.swing.border.TitledBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.protege.editor.core.prefs.Preferences; import org.protege.editor.core.prefs.PreferencesManager; +import org.protege.editor.core.ui.split.ViewSplitPane; import org.protege.editor.core.ui.util.ComponentFactory; import org.protege.editor.owl.model.cache.OWLExpressionUserCache; import org.protege.editor.owl.model.classexpression.OWLExpressionParserException; -import org.protege.editor.owl.model.entity.OWLEntityCreationSet; import org.protege.editor.owl.model.event.EventType; import org.protege.editor.owl.model.event.OWLModelManagerListener; import org.protege.editor.owl.model.inference.OWLReasonerManager; @@ -25,13 +23,9 @@ import org.protege.editor.owl.ui.clsdescriptioneditor.ExpressionEditor; import org.protege.editor.owl.ui.clsdescriptioneditor.OWLExpressionChecker; import org.protege.editor.owl.ui.view.AbstractOWLViewComponent; -import org.semanticweb.owlapi.model.AddAxiom; -import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLClassExpression; -import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLException; -import org.semanticweb.owlapi.model.OWLOntologyChange; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.Marker; @@ -87,7 +81,7 @@ public class OWLClassExpressionEditorViewComponent extends AbstractOWLViewCompon private final JButton executeButton = new JButton("Execute"); - private final JButton addButton = new JButton("Add to ontology"); + private final JButton addButton = new JButton("Add to ontology…"); private final OWLModelManagerListener listener = event -> { if (event.isType(EventType.ONTOLOGY_CLASSIFIED)) { @@ -119,7 +113,9 @@ protected void initialiseOWLView() throws Exception { optionsBoxHolder.add(optionsBox, BorderLayout.NORTH); resultsPanel.add(optionsBoxHolder, BorderLayout.EAST); - JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT, editorPanel, resultsPanel); + JSplitPane splitter = new ViewSplitPane(JSplitPane.VERTICAL_SPLIT); + splitter.setTopComponent(editorPanel); + splitter.setBottomComponent(resultsPanel); splitter.setDividerLocation(0.3); add(splitter, BorderLayout.CENTER); @@ -137,40 +133,89 @@ protected void initialiseOWLView() throws Exception { private JComponent createQueryPanel() { - JPanel editorPanel = new JPanel(new BorderLayout()); + JPanel editorPanel = new JPanel(new BorderLayout(0, 10)); final OWLExpressionChecker checker = getOWLModelManager().getOWLExpressionCheckerFactory().getOWLClassExpressionChecker(); - owlDescriptionEditor = new ExpressionEditor<>(getOWLEditorKit(), checker); + owlDescriptionEditor = createQueryEditor(checker); + executeButton.setEnabled(false); + addButton.setEnabled(false); owlDescriptionEditor.addStatusChangedListener(newState -> { - executeButton.setEnabled(newState); - addButton.setEnabled(newState); + boolean hasQuery = !owlDescriptionEditor.getText().trim().isEmpty(); + executeButton.setEnabled(newState && hasQuery); + addButton.setEnabled(newState && hasQuery && isAnonymousClassExpression()); }); owlDescriptionEditor.setPreferredSize(new Dimension(100, 50)); - editorPanel.add(ComponentFactory.createScrollPane(owlDescriptionEditor), BorderLayout.CENTER); - JPanel buttonHolder = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JPanel editorHolder = new JPanel(new BorderLayout()); + editorHolder.setBorder(BorderFactory.createEmptyBorder(7, 0, 0, 0)); + editorHolder.add(ComponentFactory.createScrollPane(owlDescriptionEditor)); + editorPanel.add(editorHolder, BorderLayout.CENTER); + JPanel buttonHolder = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); + executeButton.setToolTipText("Run the query using the active reasoner"); executeButton.addActionListener(e -> doQuery()); + addButton.setToolTipText("Create a named class equivalent to this expression"); addButton.addActionListener(e -> doAdd()); buttonHolder.add(executeButton); buttonHolder.add(addButton); editorPanel.add(buttonHolder, BorderLayout.SOUTH); + TitledBorder queryBorder = BorderFactory.createTitledBorder( + BorderFactory.createEmptyBorder(), + "Query"); + queryBorder.setTitleFont(queryBorder.getTitleFont().deriveFont(Font.BOLD)); editorPanel.setBorder(BorderFactory.createCompoundBorder( - BorderFactory.createTitledBorder( - BorderFactory.createEmptyBorder(), - "Query (class expression)"), + queryBorder, BorderFactory.createEmptyBorder(3, 3, 3, 3))); return editorPanel; } + private ExpressionEditor createQueryEditor( + OWLExpressionChecker checker) { + return new ExpressionEditor<>(getOWLEditorKit(), checker) { + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + if (getText().isEmpty()) { + Graphics placeholderGraphics = g.create(); + try { + placeholderGraphics.setColor(getDisabledTextColor()); + Font placeholderFont = getFont().deriveFont(getFont().getSize2D() + 2); + placeholderGraphics.setFont(placeholderFont); + FontMetrics fontMetrics = placeholderGraphics.getFontMetrics(placeholderFont); + Insets insets = getInsets(); + placeholderGraphics.drawString( + "Enter a class expression", + insets.left + 2, + insets.top + fontMetrics.getAscent()); + } + finally { + placeholderGraphics.dispose(); + } + } + } + }; + } + + + private boolean isAnonymousClassExpression() { + try { + return owlDescriptionEditor.createObject().isAnonymous(); + } + catch (OWLException e) { + return false; + } + } + + private JComponent createResultsPanel() { JComponent resultsPanel = new JPanel(new BorderLayout(10, 10)); - resultsPanel.setBorder(BorderFactory.createCompoundBorder( - BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), "Query results"), - BorderFactory.createEmptyBorder(3, 3, 3, 3))); + resultsPanel.setBorder(BorderFactory.createEmptyBorder(6, 3, 0, 3)); + JLabel resultsLabel = new JLabel("Query results"); + resultsLabel.setFont(resultsLabel.getFont().deriveFont(Font.BOLD)); + resultsPanel.add(resultsLabel, BorderLayout.NORTH); resultsList = new ResultsList(getOWLEditorKit()); resultsPanel.add(ComponentFactory.createScrollPane(resultsList)); return resultsPanel; @@ -345,17 +390,13 @@ private void doQuery() { private void doAdd() { try { OWLClassExpression desc = owlDescriptionEditor.createObject(); - OWLEntityCreationSet creationSet = CreateDefinedClassPanel.showDialog(desc, getOWLEditorKit()); - if (creationSet != null) { - List changes = new ArrayList<>(creationSet.getOntologyChanges()); - OWLDataFactory factory = getOWLModelManager().getOWLDataFactory(); - OWLAxiom equiv = factory.getOWLEquivalentClassesAxiom(creationSet.getOWLEntity(), desc); - changes.add(new AddAxiom(getOWLModelManager().getActiveOntology(), equiv)); - getOWLModelManager().applyChanges(changes); - if (isSynchronizing()) { - getOWLEditorKit().getOWLWorkspace().getOWLSelectionModel().setSelectedEntity(creationSet.getOWLEntity()); - } - } + CreateDefinedClassPanel.showDialogForDefinedClass(desc, getOWLEditorKit()) + .ifPresent(creationSet -> { + getOWLModelManager().applyChanges(creationSet.getOntologyChanges()); + if (isSynchronizing()) { + getOWLEditorKit().getOWLWorkspace().getOWLSelectionModel().setSelectedEntity(creationSet.getOWLEntity()); + } + }); } catch (OWLException e) { logger.error(marker, "An error occurred whilst adding the class definition: {}", e.getMessage(), e); } diff --git a/src/main/java/org/coode/dlquery/OWLClassExpressionNodeQueryVisitor.java b/src/main/java/org/coode/dlquery/OWLClassExpressionNodeQueryVisitor.java deleted file mode 100644 index 33bcb9b..0000000 --- a/src/main/java/org/coode/dlquery/OWLClassExpressionNodeQueryVisitor.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.coode.dlquery; - -import java.util.HashSet; -import java.util.Set; - -import org.protege.editor.owl.model.OWLModelManager; -import org.protege.editor.owl.model.classexpression.OWLClassExpressionLeafNode; -import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeDifference; -import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodePossibly; -import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeUnion; -import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeVisitor; -import org.semanticweb.owlapi.model.OWLClassExpression; -import org.semanticweb.owlapi.model.OWLObject; -import org.semanticweb.owlapi.reasoner.OWLReasoner; - - -/** - * Author: Matthew Horridge
- * The University Of Manchester
- * Medical Informatics Group
- * Date: 11-Oct-2006

- * - * matthew.horridge@cs.man.ac.uk
- * www.cs.man.ac.uk/~horridgm

- */ -public class OWLClassExpressionNodeQueryVisitor implements OWLClassExpressionNodeVisitor { - - private final OWLModelManager owlModelManager; - - private final OWLReasoner reasoner; - - private final ReasonerQueryInvoker queryInvoker; - - private final Set results = new HashSet<>(); - - - public OWLClassExpressionNodeQueryVisitor(OWLModelManager manager, OWLReasoner reasoner, - ReasonerQueryInvoker queryInvoker) { - this.owlModelManager = manager; - this.reasoner = reasoner; - this.queryInvoker = queryInvoker; - } - - - public void reset() { - results.clear(); - } - - - public Set getResults() { - return new HashSet(results); - } - - - public void visit(OWLClassExpressionNodeDifference node) { - node.getLeftNode().accept(this); - Set leftResults = results; - node.getRightNode().accept(this); - Set rightResults = results; - results.clear(); - results.addAll(leftResults); - results.remove(node.getRightNode().getClassExpression()); - results.removeAll(rightResults); - } - - - public void visit(OWLClassExpressionNodeUnion node) { - node.getLeftNode().accept(this); - Set leftResults = results; - node.getRightNode().accept(this); - Set rightResults = results; - results.clear(); - results.addAll(leftResults); - results.addAll(rightResults); - } - - - public void visit(OWLClassExpressionNodePossibly node) { - // LEFTDESC minus not(RIGHTDESC) - OWLClassExpression leftDesc = node.getLeftNode().getClassExpression(); - OWLClassExpression rightDesc = node.getRightNode().getClassExpression(); - OWLClassExpression negRightDesc = owlModelManager.getOWLDataFactory().getOWLObjectComplementOf(rightDesc); - - Set leftResults = queryInvoker.getAnswer(reasoner, leftDesc); - Set rightResults = queryInvoker.getAnswer(reasoner, negRightDesc); - results.clear(); - results.addAll(leftResults); - results.removeAll(rightResults); - } - - - public void visit(OWLClassExpressionLeafNode node) { - results.clear(); - results.addAll(queryInvoker.getAnswer(reasoner, node.getClassExpression())); - } -} diff --git a/src/main/java/org/coode/dlquery/ReasonerQueryInvoker.java b/src/main/java/org/coode/dlquery/ReasonerQueryInvoker.java deleted file mode 100644 index cac6156..0000000 --- a/src/main/java/org/coode/dlquery/ReasonerQueryInvoker.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.coode.dlquery; - -import java.util.Set; - -import org.semanticweb.owlapi.model.OWLClassExpression; -import org.semanticweb.owlapi.model.OWLObject; -import org.semanticweb.owlapi.reasoner.OWLReasoner; - - -/** - * Author: Matthew Horridge
- * The University Of Manchester
- * Medical Informatics Group
- * Date: 11-Oct-2006

- * - * matthew.horridge@cs.man.ac.uk
- * www.cs.man.ac.uk/~horridgm

- */ -public interface ReasonerQueryInvoker { - - public Set getAnswer(OWLReasoner reasoner, OWLClassExpression description); -} diff --git a/src/main/java/org/coode/dlquery/ResultsList.java b/src/main/java/org/coode/dlquery/ResultsList.java index b1ca0c3..270e493 100644 --- a/src/main/java/org/coode/dlquery/ResultsList.java +++ b/src/main/java/org/coode/dlquery/ResultsList.java @@ -17,7 +17,6 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import com.google.common.base.Stopwatch; import org.protege.editor.core.log.LogBanner; import org.protege.editor.core.ui.list.MList; import org.protege.editor.core.ui.list.MListButton; @@ -36,7 +35,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Objects.requireNonNull; import static java.util.stream.Collectors.toList; import static org.coode.dlquery.ResultsSection.*; @@ -90,23 +89,23 @@ public ResultsList(OWLEditorKit owlEditorKit) { } public void setSuperClassesResultFilter(Predicate superClassesResultFilter) { - this.superClassesResultFilter = checkNotNull(superClassesResultFilter); + this.superClassesResultFilter = requireNonNull(superClassesResultFilter); } public void setDirectSuperClassesResultFilter(Predicate directSuperClassesResultFilter) { - this.directSuperClassesResultFilter = checkNotNull(directSuperClassesResultFilter); + this.directSuperClassesResultFilter = requireNonNull(directSuperClassesResultFilter); } public void setDirectSubClassesResultFilter(Predicate directSubClassesResultFilter) { - this.directSubClassesResultFilter = checkNotNull(directSubClassesResultFilter); + this.directSubClassesResultFilter = requireNonNull(directSubClassesResultFilter); } public void setSubClassesResultFilter(Predicate subClassesResultFilter) { - this.subClassesResultFilter = checkNotNull(subClassesResultFilter); + this.subClassesResultFilter = requireNonNull(subClassesResultFilter); } public void setInstancesFilter(Predicate instancesResultFilter) { - this.instancesResultFilter = checkNotNull(instancesResultFilter); + this.instancesResultFilter = requireNonNull(instancesResultFilter); } public boolean isResultsSectionVisible(ResultsSection section) { @@ -185,10 +184,10 @@ private void addSectionIfVisible(ResultsSection section, S if(!isResultsSectionVisible(section)) { return; } - Stopwatch stopwatch = Stopwatch.createStarted(); + long start = System.nanoTime(); Collection results = reasoner.get(); - stopwatch.stop(); - logger.info("Computed results for {} in {} ms", section.getDisplayName(), stopwatch.elapsed(TimeUnit.MILLISECONDS)); + long elapsedMillis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); + logger.info("Computed results for {} in {} ms", section.getDisplayName(), elapsedMillis); List resultsList = results.stream() .filter(filter) .filter(nameResultFilter) @@ -275,6 +274,6 @@ public void removeChangeListener(ChangeListener changeListener) { } public void setNameFilter(String nameFilter) { - this.nameFilter = checkNotNull(nameFilter); + this.nameFilter = requireNonNull(nameFilter); } } diff --git a/src/main/java/org/coode/dlquery/ResultsSection.java b/src/main/java/org/coode/dlquery/ResultsSection.java index 3eb7b12..5402e57 100644 --- a/src/main/java/org/coode/dlquery/ResultsSection.java +++ b/src/main/java/org/coode/dlquery/ResultsSection.java @@ -1,6 +1,6 @@ package org.coode.dlquery; -import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.Objects.requireNonNull; /** * Author: Matthew Horridge
@@ -26,7 +26,7 @@ public enum ResultsSection { private final String displayName; private ResultsSection(String displayName) { - this.displayName = checkNotNull(displayName); + this.displayName = requireNonNull(displayName); } public String getDisplayName() { diff --git a/src/main/resources/update.properties b/src/main/resources/update.properties index 0e82625..9a3597e 100644 --- a/src/main/resources/update.properties +++ b/src/main/resources/update.properties @@ -1,8 +1,7 @@ id=org.coode.dlquery version=${project.version} -download=https://github.com/protegeproject/dlquery/releases/download/org.coode.dlquery-${project.version}/org.coode.dlquery-${project.version}.jar +download=https://repo1.maven.org/maven2/edu/stanford/protege/org.coode.dlquery/${project.version}/org.coode.dlquery-${project.version}.jar name=DL Query -readme=https://raw.githubusercontent.com/protegeproject/dlquery/master/src/main/resources/readme.html +readme=https://github.com/protegeproject/dlquery/releases/tag/${project.version} license=http://www.gnu.org/licenses/lgpl.html author=Matthew Horridge -