Closed lewismc closed 4 years ago
In particular, the message "...Illegal redeclarations of entities: reuse of entity" relates to http://sweetontology.net/relaSci/rangeOf (as an example) being used as both an ObjectProperty and DataTypeProperty. A note on punning in OWL 2 DL... which ...still imposes certain restrictions: it requires that a name cannot be used for both a class and a datatype and that a name can only be used for one kind of property. We therefore need to discuss how to resolve the punning issues stated above. This occurs in several places.
Some similar thread on the Protege mailing list - http://protege-project.136.n4.nabble.com/Errors-loading-FOAF-into-Protege-td4670537.html
I'm seeing the same problem. In the ttl file relaPhysical.ttl where one of these properties (moreVisibleThan) is defined, there is
### http://sweetontology.net/relaPhysical/moreVisibleThan
prela:moreVisibleThan rdf:type owl:ObjectProperty ;
But in sweet\src\stateVisibility.ttl there is:
### http://sweetontology.net/relaPhysical/moreVisibleThan
prela:moreVisibleThan rdf:type owl:AnnotationProperty .
I'm guessing there are a lot of these inconsistent duplicate declarations. Is there some SPARQL query that could be constructed to ferret them out?
SELECT *
WHERE {
?subject a owl:AnnotationProperty .
?subject a owl:ObjectProperty .
}
-->
[subject]
crela:hasSubstance
mrela:approximates
mrela:basedOn
mrela:coordinate_1
mrela:coordinate_2
mrela:coordinate_3
mrela:hasOperand
owlt:hasBeginning
owlt:hasEnd
prela:fasterThan
prela:hasAstronomicalBody
prela:hasEnergyFlux
prela:hasSpeed
prela:moreVisibleThan
prela:slowerThan
prela:strongerThan
prela:warmerThan
rela:hasRole
screla:greaterRoleThan
screla:hasBaseUnit
screla:hasImpact
screla:hasPrefix
screla:hasUnit
screla:kills
screla:moreActiveThan
screla:moreExtensiveThan
screla:spawn
srela:fartherThan
srela:greaterVerticalExtentThan
srela:hasWavelength
srela:largerScaleThan
srela:largerThan
srela:oppositeTo
srela:orthogonalTo
srela:perpendicularTo
trela:hasEndTime
trela:hasFrequency
trela:hasNHTime
trela:hasPeriod
trela:hasSHTime
trela:hasStartTime
trela:moreFrequentThan
trela:olderThan
trela:temporalPartOf
Thanks, @dr-shorthair. Before going through and cleaning up those inconsistent definitions, do we keep the annotation property or the object property. I think we probably want to keep the object properties, but might need to be evaluated on a case by case basis. Suggestions?
Duplicates are not a problem, inconsistencies are, which Protege is picking up.
owl:AnnotationProperty
and owl:ObjectProperty
are disjoint, so one of these is wrong.
It's likely that you want to turn all of these into OPs, unless it is used in a triple ?c ?p ?v, where ?p is the property, and ?c is a owl:Class.
On Sun, Jul 21, 2019 at 12:36 AM Stephen Richard notifications@github.com wrote:
Thanks, @dr-shorthair https://github.com/dr-shorthair. Before going through and cleaning up those duplicate definitions, question: do we keep the annotation property or the object property. I think we probably want to keep the object properties, but might need to be evaluated on a case by case basis. Suggestions?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ESIPFed/sweet/issues/124?email_source=notifications&email_token=AAAMMONJRJPZC3JVLPGVFE3QAOHO3A5CNFSM4IECQ7A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2NXGUY#issuecomment-513504083, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAMMOOYPNZVUOGOBDINVX3QAOHO3ANCNFSM4IECQ7AQ .
Funny, I just assumed you were saying turn them all into Annotation Properties, Chris. A lot are clearly strings (e.g., time values, and other values), but a few at least sometimes would want objects ('fartherThan' some class of object, 'hasSubstance' some class of substance), and some would beg for both (e.g., all the unit relations hasBaseUnit, hasPrefix, hasUnit would all ideally be objects, but of course lots of people think of the prefix as the characters and would expect to enter it that way. A bit tricky, some of that.
Also:
SELECT *
WHERE {
?subject a owl:ObjectProperty .
?subject a owl:DatatypeProperty .
}
-->
[subject]
mrela:hasDimension
screla:hasLowerQuantity
screla:hasQuantity
screla:hasUpperQuantity
screla:rangeOf
and
SELECT *
WHERE {
?subject a owl:AnnotationProperty .
?subject a owl:DatatypeProperty .
}
-->
[subject]
mrela:hasError
mrela:hasIntegerValue
mrela:hasLowerBound
mrela:hasScalingNumber
mrela:hasShiftingNumber
mrela:hasUpperBound
mrela:toThePower
prela:hasCharge
screla:hasNumericValue
screla:hasSymbol
screla:hasTrophicLevel
trela:dayOfYear
Sorry, meant to say logical properties: DP if value is literal, OP if value is object. Investigate if both. Only AP if it's used for metadata
On Mon, Jul 22, 2019 at 8:16 AM John Graybeal notifications@github.com wrote:
Funny, I just assumed you were saying turn them all into Annotation Properties, Chris. A lot are clearly strings (e.g., time values, and other values), but a few at least sometimes would want objects ('fartherThan' some class of object, 'hasSubstance' some class of substance), and some would beg for both (e.g., all the unit relations hasBaseUnit, hasPrefix, hasUnit would all ideally be objects, but of course lots of people think of the prefix as the characters and would expect to enter it that way. A bit tricky, some of that.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ESIPFed/sweet/issues/124?email_source=notifications&email_token=AAAMMOPPQP5ZEXLWVUBD4FDQAVGEVA5CNFSM4IECQ7A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2O4F7I#issuecomment-513655549, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAMMOKCOHCTS2T3G6R3353QAVGEVANCNFSM4IECQ7AQ .
I wrote:
owl:AnnotationProperty and owl:ObjectProperty are disjoint, so one of these is wrong.
Actually I'm not so sure about this, as I can't find it defined in any of the OWL recs that I can grok (which is only a small subset of them :-( ) @cmungall can you confirm the basis of the problem? Maybe it isn't stated explicitly, its just that DPs and OPs have disjoint ranges (resources vs. literals). Not sure how that affects APs though ...
https://www.w3.org/TR/owl2-new-features/#F12:_Punning a name can only be used for one kind of property
So strictly that is an OWL-DL feature? Can you select which OWL model Protege uses, or is it only DL? (Curiosity only.)
DL.
But I think we are OK here. Just remove all the AP declarations, I assume they were added as a mistake.
What about the OP/DP clashes I reported here?https://github.com/ESIPFed/sweet/issues/124#issuecomment-513659095
Ah yes. These all seem to be used in quantified restrictions where the filler is a class, so OP for those.
Will show my working in sparql later...
mrela:hasDimension rdfs:range xsd:integer . # DP
screla:hasLowerQuantity rdfs:range quan:Quantity . # OP
screla:hasQuantity rdfs:range quan:Quantity . # OP
screla:hasUpperQuantity rdfs:range quan:Quantity . # OP
screla:rangeOf rdfs:range quan:Quantity . # OP
I think labels and symbols are annotations, not data ... screla:hasSymbol
etc.
(Except perhaps for UCUM labels, which have a formal syntax behind them?)
There are some advantages to using a logical property - e.g. a domain constraint is already stated for hasSymbol. We might want to make these inverseFunctional too? If the quantities are already individuals, not classes, then there is not much of a use case for APs. This is in contrast to OBO style modeling where the quantities would be classes, and symbols apply at the class level necessitating AP....
Can anyone confirm if this is still an issue?
I can confirm this is still an issue.
same with me
Fixed in #169
When I load sweetAll.ttl from local SWEET master branch I get the following errors in the Protege log
This indicates that there is a large degree of duplication across several ontology files. I've got no clue how or when this happened but I think it needs cleaned up. I'm going to to do that right now.