visualdataweb / owl2vowl Goto Github PK
View Code? Open in Web Editor NEWConverting ontologies for WebVOWL
Home Page: http://vowl.visualdataweb.org
License: MIT License
Converting ontologies for WebVOWL
Home Page: http://vowl.visualdataweb.org
License: MIT License
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 ?
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.
If a favicon.ico
exists in a resources directory, it gets broken in the build process.
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 !
Implement the hasKey axiom and export it correctly to the WebVOWL json
Generic class axioms which are defined not within an class itself are considered as a generic construct.
Currently OWL2VOWL doesn't handle axioms like those.
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.`
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?
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
How can the json data submitted by WebVOWL be converted into Ontology objects in how OWL2VOWL?
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/
--
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)
...
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.
It should be a property originating in the DatatypeMapsDomain
ending in the rdf:langString
datatype.
@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/
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.
The maven version 0.2.1 and the local snapshot give the following error: kein Hauptmanifestattribut, in OWL2VOWL-0.2.2-SNAPSHOT.jar
See issue #106 created by @kartgk in the WebVOWL repo: VisualDataWeb/WebVOWL#106
The "anonymousComplementClassProperty" of OntoViBe currently points to "owl:Thing", while it should be pointing to the complement of "DeprecatedClass" (see http://ontovibe.visualdataweb.org/2.1/ontovibe.ttl ).
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.
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).
Log4Shell: RCE 0-day exploit found in log4j 2, a popular Java logging package
https://www.lunasec.io/docs/blog/log4j-zero-day/
owl2vowl uses version log4j 2.7:
org.apache.logging.log4j log4j-core 2.7There 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?
Currently the maven goal for packaging a JAR file includes all available dependencies. This includes for example:
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.
OWASP dependency checks in CI
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.
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).
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).
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");
I have noticed that while this repository lists v0.3.5
as the most recent, the main page (http://vowl.visualdataweb.org/webvowl.html#linking) lists v0.3.7
as the latest. Where can someone get v0.3.7
through maven support?
The following ontology generates a strange error: http://tagont.googlecode.com/files/tagont.owl Might be due to the import of other ontologies that are no longer available.
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.
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).
Compare installation of NEW OWL2VOWL:
http://visualdataweb.de/webvowl/#iri=http://www.w3.org/TR/owl-guide/wine.rdf
with OLD OWL2VOWL:
http://vowl.visualdataweb.org/webvowl/#iri=http://www.w3.org/TR/owl-guide/wine.rdf
While it is visualized in the first, it is not in the second. Instead, the "loading ontology..." message is shown endlessly.
Implement new functionality based on the desired visualization in WebVOWL.
Further information of concrete json output will come...
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?
When converting an ontology with an owl:complementOf
construct, the complement
tag is missing in the generated JSON.
Originally reported in VisualDataWeb/WebVOWL#45
Options are required for automated process to generate docuemnts for ontology. GUI is not really helpful in this case.
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)```
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.
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.
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
I would recommend to simply take the statistics provided by the OWL API, which should be correct.
--
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
Currently it seems that the json file generated uses system encoding. Unfortunately WebVOWL does not load the file using the system encoding, but rather UTF-8.
OWL2VOWL could at least use utf-8 by default to encode, or propose a commandline option to define the encoding to use.
The OntoViBe property "importedObjectPropertyWithDomain" from the "imported" module (http://ontovibe.visualdataweb.org/2.0/imported/ontovibe_imported.ttl) is currently not converted.
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
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.
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! 😄
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 ) .
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.
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.