Giter VIP home page Giter VIP logo

owl2vowl's People

Contributors

blackdark avatar dependabot[bot] avatar linkvt avatar steffen-l avatar vitalis-wiens 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

owl2vowl's Issues

Preserve ordering in triples loaded from ontologies

We had an issue with the dc:creator triples ordering recently, and figured out that even if we managed to get the order right in the turtle file, this would be scrambled by OWL2VOWL when the JSON file is written.

The problem is that in WebVowl afterwards, this order is used for display. Moreover, only the first creator is displayed in the Metadata panel. But even if this is fixed, I think that many users will want to master the order of attributes such as dc:creator.

Could it be possible to ensure that the order is preserved by OWL2VOWL when the json file is written ?

Ontology upload problems on TomCat deployments

Problem lies in the missing write permission in the desired file location of the server.

Prefered solution:
No local storage of the file upload instead use a InputStream to directly process the byte arrays.

how to exclude logger

when adding the owl2Vowl dependency to my spring boot project, all my log4j logs disappears.

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

so I tried excluding every libraries I found related to logging in my gradle file, even some that are not present in the owl2vowl pom.xml

    compile('org.visualdataweb.vowl.owl2vowl:OWL2VOWL:0.3.1'){
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-log4j2'
        exclude group: 'org.apache.logging.log4j', module: 'log4j-api'
        exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
        exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'
        exclude group: 'org.slf4j', module: 'slf4j-api'
        exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        exclude group: 'org.slf4j', module: 'jul-to-slf4j'
        exclude module: "logback-classic"
        exclude module: "log4j"
    }

but I still cant get my logs back, all I can do is comment owl2vowl dependency to get the project to output log messages.
its seems like a common logging issue... which I don't know how to solve

how to embed the dependency without breaking my logger? is it me doing it wrong or something with owl2vowl?

regards

Anyway, very nice job on this tool !

Build the jar is failing because of test failure

When trying to build the jar file using "mvn package -P standalone-release" and "mvn package -Denv=standalone" it's failing because of test failures. Details:

`initializationError(de.uni_stuttgart.vis.vowl.owl2vowl.ConsoleMainTest) Time elapsed: 0.005 sec <<< ERROR!
org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException

Caused by: java.lang.reflect.InvocationTargetException

Caused by: java.lang.IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org.powermock.core.classloader.MockClassLoader @658255aa cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl

Results :

Tests in error:
initializationError(de.uni_stuttgart.vis.vowl.owl2vowl.ConsoleMainTest): java.lang.reflect.InvocationTargetException

Tests run: 4, Failures: 0, Errors: 1, Skipped: 0

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project OWL2VOWL: There are test failures.`

Edge properties aren't converted properly

I've tried to convert the this .owl file to json both using the jar file and also ont webowl website. It works perfectly on the website. However when I try it with the jar file, it didn't convert %90 of the edges(jsonarray with the key "property"). You can simply do the conversion in both ways and see the difference. Is this a known issue and what can I do about it?

Add tag for version 0.3.5

Version 0.3.5 is declared in the pom.xml file, but the tag is missing.

I think this also hinders the JitPack build to be updated to 0.3.5

Unconnected datatype nodes

There are several unconnected datatypes "flying around" in the NEW* version of OWL2VOWL, which cannot be correct (datatypes are NOT entities with an IRI like classes but always need an accompanying datatype property, i.e., they are ALWAYS linked and never along in VOWL).

For instance, this can be easily seen in FOAF:
http://visualdataweb.de/webvowl/#iri=http://xmlns.com/foaf/0.1/

It was not a problem in the OLD** version of OWL2VOWL:
http://vowl.visualdataweb.org/webvowl/index.html#iri=http://xmlns.com/foaf/0.1/

Other examples showing this problem are GoodRelations (after changing the collapsing level to 0) and OntoViBe:
http://visualdataweb.de/webvowl/#iri=http://purl.org/goodrelations/v1
http://visualdataweb.de/webvowl/#iri=http://ontovibe.visualdataweb.org/

--

  • New version = version 0.2.2-snapshot
    ** Old version = version 0.2.0

ClassCastException when handling InverseOf

See here: VisualDataWeb/WebVOWL#16

Importing this ontology fails: http://purl.obolibrary.org/obo/ro.owl
Stacktrace:

uk.ac.manchester.cs.owl.owlapi.OWLObjectInverseOfImpl cannot be cast to org.semanticweb.owlapi.model.OWLNamedObject
java.lang.ClassCastException: uk.ac.manchester.cs.owl.owlapi.OWLObjectInverseOfImpl cannot be cast to org.semanticweb.owlapi.model.OWLNamedObject
    at de.uni_stuttgart.vis.vowl.owl2vowl.parser.GeneralPropertyParser.retrieveSuperProperties(GeneralPropertyParser.java:186)
    at de.uni_stuttgart.vis.vowl.owl2vowl.parser.ObjectPropertyParser.execute(ObjectPropertyParser.java:158)
    at de.uni_stuttgart.vis.vowl.owl2vowl.parser.GeneralParser.handleObjectProperty(GeneralParser.java:250)
    at de.uni_stuttgart.vis.vowl.owl2vowl.Converter.convert(Converter.java:121)
    ...

Build additional uberised "*-with-dependencies.jar" file

I used jar file available in Maven. After running java -jar ... I have error:

/data # java -jar /usr/local/lib/OWL2VOWL.jar -file /data/Eve.owl 
no main manifest attribute, in /usr/local/lib/OWL2VOWL.jar

I found the reason. I just should re-compile file myself with standalone-release profile. It would be helpful if *_-with-dependencies.jar was built as well.

rdf:langString might not be correctly converted

It should be a property originating in the DatatypeMapsDomain ending in the rdf:langString datatype.

unbenannt

@prefix : <http://ontobench.linkvt.de/ontology/63/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://ontobench.linkvt.de/ontology/63/> .

<http://ontobench.linkvt.de/ontology/63/> rdf:type owl:Ontology .


:rdfLangStringProperty rdf:type owl:DatatypeProperty ;
                       rdfs:domain :DatatypeMapsDomain ;
                       rdfs:range rdf:langString .


:DatatypeMapsDomain rdf:type owl:Class .


###  Generated by the OWL API (version 5.0.1) https://github.com/owlcs/owlapi/

Is it possible to NOT generate the logs

Hi,
I have been using OWL2VOWL to add visualizations to ontology documentations. However, every time I invoke the exporter, I get a folder called "owl2vowl_logs" which I cannot delete from my original program (it keeps something open until the application is done). Would it be a way to avoid generating such folder?

Thanks in advance.

No URI for rdf:type

If two classes are connected by rdf:type, a corrresponding relation is drawn (see the purple edge e.g. in OntoViBe: http://visualdataweb.de/webvowl/#iri=http://ontovibe.visualdataweb.org). This relation has the label "is-a". While this is all fine and as specified, the property has a strange URI (e.g. http://owl2vowl.de/#21 and http://owl2vowl.de/#22 respectively in OntoViBe). Instead, it should not have a URI - or at least the URI should not be linked, since it is a build-in property like e.g. rdfs:subClassOf.

Increase upload size

Since large VOWL graphs are automatically collapsed at startup in the new WebVOWL version (1.0.0), there is no longer a need to limit the file size in OWL2VOWL to <1MB. We should increase the limit to 10 MB (but should still limit it for practical and other reasons - people can increase the limit and rebuild OWL2VOWL themselves if they need more MB).

New Version 0.3.4

There seems to be a newer version around than 0.3.3, as the server version packs 0.3.4. If I compile this I get 0.3.3? How can i get 0.3.4?

Maven - JAR generation includes various unneeded deps

Currently the maven goal for packaging a JAR file includes all available dependencies. This includes for example:

  • spring (springframework, spring boot, etc)
  • tomcat
  • other http related packages

This is related to the start of the project in which i developed only the JAR archive. At this time we didn't have the focus on the WAR archive and server related stuff.

Possible solution:
Include the maven shade plugin to remove unwanted deps for JAR execution with filter rules.

Missing the Id(IRI) of the object’s Property in converted json file

We found some problem while converting an ontology file to json. We noticed that some of the object’ property in json file were missing Id (IRI). Which is not at all exists in json file but that Id(IRI) has been given as reference in to the subproperty, range, inverse, superclass, domain and equivalent Properties.

Capture

Ontolgy upload bug

Depending on the TomCat configuration, the upload of ontologies may not work properly, as the temporal storage of the converted ontologies might not be permitted. We thus need to find an alternative approach, i.e. without temporal storage (which is better anyway for several reasons).

Tests fail with initializationError(de.uni_stuttgart.vis.vowl.owl2vowl.ConsoleMainTest)

The tests fail with initializationError(de.uni_stuttgart.vis.vowl.owl2vowl.ConsoleMainTest):

initializationError(de.uni_stuttgart.vis.vowl.owl2vowl.ConsoleMainTest)  Time elapsed: 0.008 sec  <<< ERROR!
org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException
	at org.objenesis.instantiator.sun.SunReflectionFactoryHelper.newConstructorForSerialization(SunReflectionFactoryHelper.java:55)
	at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.<init>(SunReflectionFactoryInstantiator.java:38)
	at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:58)
	at org.objenesis.ObjenesisBase.getInstantiatorOf(ObjenesisBase.java:91)
	at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:222)
	at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
	at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.registerProxyframework(AbstractTestSuiteChunkerImpl.java:158)
	at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.chunkClass(AbstractTestSuiteChunkerImpl.java:181)
	at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>(AbstractTestSuiteChunkerImpl.java:96)
	at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>(AbstractTestSuiteChunkerImpl.java:89)
	at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:49)
	at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
	at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
	at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.objenesis.instantiator.sun.SunReflectionFactoryHelper.newConstructorForSerialization(SunReflectionFactoryHelper.java:45)
	... 34 more
Caused by: java.lang.IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org/powermock/core/classloader/MockClassLoader cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
	at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:238)
	at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:182)
	at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:70)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
	at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:238)
	at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:182)
	at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:70)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	at java.base/jdk.internal.misc.Unsafe.defineClass0(Native Method)
	at java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1192)
	at java.base/jdk.internal.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
	at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
	at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/jdk.internal.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:393)
	at java.base/jdk.internal.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:112)
	at java.base/jdk.internal.reflect.ReflectionFactory.generateConstructor(ReflectionFactory.java:434)
	at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:404)
	at jdk.unsupported/sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:103)
	... 39 more

Tested using the latest master (f37b569).

Missing JSONLD serialzation ?

Supported serialization formats were enabled in config.properties , e.g.
RDFXMLSerialization=ontology.xml
TurtleSerialization=ontology.ttl
N3Serialization=ontology.nt
JSONLDSerialization=ontology.json

However, following line of hand-crafted serializatios were found in CreateResource.java line 155, am I missing something?
WidocoUtils.writeModel(om, o, new RDFXMLDocumentFormat(), folderOut+File.separator+"ontology.xml");
WidocoUtils.writeModel(om, o, new TurtleDocumentFormat(), folderOut+File.separator+"ontology.ttl");
WidocoUtils.writeModel(om, o, new NTriplesDocumentFormat(), folderOut+File.separator+"ontology.nt");

Add the "Ouput" parameter for the json file.

Can be useful add the "Ouput" parameter for create the json file where and how you want, avoid some operation like the copy and the rename of the file..
Not a essential feature anyway.

Wrong range in OntoVibe

The OntoVibe property "dummyProperty" has the range "DisjointClass". However, it currently points to "owl:Thing". This might be because "dummyProperty" is equivalent to "equivalentObjectProperty", the latter having no range (hence "owl:Thing"). The correct range would be the intersection of the ranges of the properties (not the union). Hence, it is similar to a property with two ranges (in this case, one being owl:Thing).

Which version of the back end is webvowl 0.5.2 using?

Hi there,

This is how I did a test:

1.Upload an ontology file to http://vowl.visualdataweb.org/webvowl/index.html and visualize it, and get the json from the convert.php by inspecing chrome dev tool.

2.Download the latest code of this project and convert the same ontology file to json locally

The json in step 1 and step 2 are very different, e.g. the one in step1 has 30 classes, but he one in step2 has 100+ classes.

I assume that the back end of webvowl 0.5.2 is not the latest version of this project. Can I ask which version of the backend it is using?

NullPointer at DisjointProperty

java.lang.NullPointerException
at de.uni_stuttgart.vis.vowl.owl2vowl.model.edges.properties.DisjointProperty.setDomain(DisjointProperty.java:40)
at de.uni_stuttgart.vis.vowl.owl2vowl.model.edges.properties.DisjointProperty.<init>(DisjointProperty.java:30)
at de.uni_stuttgart.vis.vowl.owl2vowl.parser.ProcessUnit.processAxiomDisjointClasses(ProcessUnit.java:119)
at de.uni_stuttgart.vis.vowl.owl2vowl.parser.ProcessUnit.processAxioms(ProcessUnit.java:106)
at de.uni_stuttgart.vis.vowl.owl2vowl.parser.ProcessUnit.processClasses(ProcessUnit.java:58)
at de.uni_stuttgart.vis.vowl.owl2vowl.Converter.convert(Converter.java:95)
at simon.test.Test1.main(Test1.java:23)```

Missing info in Selection Details

The disjoint classes of the OntoViBe class "LargeDisjointUnionClass" are not shown in the selection details in contrast to the disjoint class of the OntoViBe clas "DisjointClass". This is inconsistent and incorrect.

Use of owl:inverseOf without explicitly stating domain and range attaches all object properties to "thing"

Hello,

Thank you very much for your work on this incredibly useful tool, by far the most usable and helpful thing we've found for visualising ttl files as we discuss and develop our new ontology files here at the UK's Parliamentary Digital Service.

Since your upgrade to WebVOWL 1.0.1 an issue has cropped up that has taken all of our object properties away from their stated domains and ranges.
Your beta (0.5.2) visualised the file like this:
http://vowl.visualdataweb.org/webvowl/#iri=https://raw.githubusercontent.com/ukparliament/Physical-Ontology/master/Proposed-Physical-Ontology-with-certain-subclasses-commented.ttl
But 1.0.1 visualises it like this:
http://visualdataweb.de/webvowl/#iri=https://raw.githubusercontent.com/ukparliament/Physical-Ontology/master/Proposed-Physical-Ontology-with-certain-subclasses-commented.ttl (sorry, was previously displaying from local file rather than github)
I think I've diagnosed the problem though:
We decided to add inverse relationships for all object properties to make sparql queries a little easier for our end users.

eg:

:propertyA
	a owl:ObjectProperty ;
	rdfs:domain :classA ;
	rdfs:range :classB ;
.
:propertyB
	owl:inverseOf :propertyA ;
.

Your beta version understood from the example above that :propertyB would have a domain of :classB and a range of :classA. However, your new version seems to see that :propertyB has no domain and no range, so says that it's domain and range are both "thing". It then seems to realise that :propertyA is the inverse of :propertyB and conclude that its domain and range are both "thing" despite it being explicitly stated that they're :classA and :classB respectively.

I assume that this is an OWL2VOWL issue but it's possible that it happens on the WebVOWL side.

Once again, thank you for this tool and please let me know if there's anything I can do to help.

Wrong statistics

Statistics are wrong in the new* OWL2VOWL version (while they were correct in the old** one):

This can be easily seen with the MUTO ontology:
http://visualdataweb.de/webvowl/#iri=http://purl.org/muto/core
http://vowl.visualdataweb.org/webvowl/index.html#iri=http://purl.org/muto/core

  • Both versions count 6 datatype properties, which is correct.
  • The NEW version counts all classes (also multiplied owl:Thing classes), which is NOT correct (7 classes are correct in case of MUTO, as shown by the OLD version). owl:Thing should NOT be counted as class.
  • The NEW version counts 20 instead of 16 object properties - the latter would be correct (and is shown in the OLD version). The NEW version also counts subclass relations as object properties, which is NOT correct.

I would recommend to simply take the statistics provided by the OWL API, which should be correct.

--

  • new version: 0.2.2-snapshot
    ** old version: 0.2.0

missing class in generated json.

Hi there,

I tried to convert this ontology to vowl json
http://www.omg.org/spec/EDMC-FIBO/FND/AgentsAndPeople/People.rdf

And there is a weird iri in the result:
{
"iri" : "http://www.omg.org/spec/EDMC-FIBO/FND/Relations/Relations/isPartOf",
"inverse" : "167",
"baseIri" : "http://www.omg.org/spec/EDMC-FIBO/FND/Relations/Relations",
...}

The "167"(or another number) is supposed to be an id of a classes in this json string, right?
But I can't find any other 167 in this json.
and this missing class will fail the webvowl (We tried several versions.)

Could you help to fix that? Thanks.

BTW, we use this to generate owl model:
https://mvnrepository.com/artifact/net.sourceforge.owlapi/owlapi-distribution
We tried 5.0.5 and 5.0.4, none of them work.

and the "isPartOf" is defined in
http://www.omg.org/spec/EDMC-FIBO/FND/Relations/Relations
which is an "owl:imports" of the people.rdf.

I guess its inverse class is "hasPart", and it is define in that url (http://www.omg.org/spec/EDMC-FIBO/FND/Relations/Relations)

Cheers,
Tony

Libraries in code

Hi ,
How would I use the libraries to do a conversion of an OWLOntology in code and not use the command line. I looked for ClassImpl.java as I thought it would have an example pointer in the read me file but could not locate it. Any pointers would be appreciated.

Justice

Hello! We found a vulnerable dependency in your project. Are you aware of it?

Hi! We spot a vulnerable dependency in your project, which might threaten your software.
And we found that the vulnerable function of this CVE can be easily accessed from your software.

  • CVE_ID: CVE-2021-29425
  • Vulnerable dependency: commons-io:commons-io
  • Your invocation path to the vulnerable method:
de.uni_stuttgart.vis.vowl.owl2vowl.export.types.FileExporter:write(java.lang.String)
⬇️
org.apache.commons.io.FilenameUtils:getFullPath(java.lang.String)
⬇️
org.apache.commons.io.FilenameUtils:doGetFullPath(java.lang.String,boolean)
⬇️
org.apache.commons.io.FilenameUtils:getPrefixLength(java.lang.String)

Therefore, maybe you need to upgrade this dependency. Hope this can help you! 😄

Multiple Domains or Ranges Should be Represented as Intersection

Hi.

multiple Domains or Ranges are currently represented as unions. However, they should be represented as intersections.

For example, try:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix :     <http://example.org/> .

<http://example.org/> a owl:Ontology .

:exampleProperty rdfs:domain :calss1, :class2 ;
                 rdfs:range  :calss1, :class2 .

:exampleIntersection owl:intersectionOf ( :calss1 :class2 ) .

:exampleIUnion owl:unionOf ( :calss1 :class2 ) .

Add option to ignore external dependencies.

I am trying to convert an ontology with owl2vowl. This ontology has several dependencies, and these dependencies have even more dependencies. I have not yet been able to figure out how to order the dependencies properly.

In ProtegéVOWL dependencies are not loaded when displaying an ontology.

Right now when I try to convert the ontology owl2vowl tries to download the dependencies, but these urls do not exist.

I would like to be able to convert this ontology without all it's dependencies, to just get a visual impression of what is in this single file.

Can't load OWL from my domain

No problem when I load the OWL file as a plain text file. But when I load it from an URL to my domain, I get the following error:

Loading process failed: 
OWLOntologyCreationIOException: java.io.IOException: Server returned HTTP response code: 401 for URL: https://emilesonneveld.be/dropbox_proxy/slimmerWorden/2018-2019-Semester1/OPEN_INFO/exercises_owl/cinema.owl

In the Chrome inspector, this request fails:
http://www.visualdataweb.de/webvowl/convert?iri=https%3A%2F%2Femilesonneveld.be%2Fdropbox_proxy%2FslimmerWorden%2F2018-2019-Semester1%2FOPEN_INFO%2Fexercises_owl%2Fcinema.owl&sessionId=1540216947143
java.lang.NullPointerException

This issue could be related to VisualDataWeb/WebVOWL#95

should consider both prefix and baseiri when checking if a class is external

Vowl marks all classes in SNOMED.owl as external. The reason is that vowl check it like this:

class ImportedChecker{
public void execute() { 
       //......
        vowlData.getEntityMap().values().forEach(abstractEntity -> {
		IRI entityIri = abstractEntity.getIri();
		if ( entityIri.toString().contains("http://owl2vowl.de#") )  {
			return;
		};

		if (ComparisonHelper.hasDifferentNameSpace(entityIri.toString(), loadedOntology, loadPath){
			addImportedAttribute(entityIri);
			}
		});
	}
}

Notice that ComparisonHelper.hasDifferentNameSpace(entityIri.toString(), loadedOntology, loadPath) only compares the class' name space with the base iri of ontology.

But from my understanding, besides base iri of ontology, the prefixes should be considered as well.

Say I have an ontology like this:

<?xml..>
<!DOCTYPE rdf:RDF [
    ...
    <!ENTITY somePrefix "http://bb.com/b.owl#" > //a prefix
    ...]
>
// a base
<rdf:RDF xmlns="http://aa.com/a.owl#"
     xml:base="http://aa.com/a.owl"
>

//a class whose name space is defined in xml:base of this ontoloyg
<owl:Class rdf:about="http://aa.com/a.owl#class_C">
        <rdfs:label xml:lang="en">class c</rdfs:label>
    </owl:Class>
//a class whose name space is defined in the prefix  of this ontoloyg
<owl:Class rdf:about="http://bb.com/b.owl#class_D">
        <rdfs:label xml:lang="en">class d</rdfs:label>
    </owl:Class>

Both class C and class D should be marked as normal class but not external class.
But our current vowl will mark class D as external, which from my understanding is not correct.

A possible solution is like:

public void execute() {
		......
		//read prefixes from ontology
		OWLDocumentFormat format = manager.getOntologyFormat(loadedOntology);
		OWLXMLDocumentFormat owlxmlFormat = new OWLXMLDocumentFormat();

		if (format.isPrefixOWLDocumentFormat()) {
			owlxmlFormat.copyPrefixesFrom(format.asPrefixOWLDocumentFormat());
		}

		//prefixes in ontology is a map of <prefixName, prefixIri>, 
                //here we ignore prefixNames and store all prefixIris into a set
		Set<String> prefixIris = new HashSet<>();
		owlxmlFormat.prefixNames().forEach(prefix -> prefixIris.add(owlxmlFormat.getPrefix(prefix)));

		vowlData.getEntityMap().values().forEach(abstractEntity -> {
			IRI entityIri = abstractEntity.getIri();
			if (entityIri.toString().contains("http://owl2vowl.de#")) {
				return;
			}

			if (ComparisonHelper.hasDifferentNameSpace(entityIri.toString(), loadedOntology, loadPath) //check if entityIri.toString() is baseiri of ontology
					&& !prefixIris.contains(entityIri.getNamespace())) { //check if entityIri's name space is in prefixes of ontology
				addImportedAttribute(entityIri);
			}
		});
	}

Please do point out if anything wrong, thanks.

Cheers,
Tony

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.