I'am a new to ontologies and Protege and I sometimes meet such words as "pun" or "punning". However, I do not have a clue what they mean. Can you clarify it for me?
"Punning" is not something that comes from Protégé but it's a feature of the Web Ontology Language OWL 2 DL, which Protégé is an editor for. "Punning" refers to the possibility of naming terms of different natures with the same IRI. For instance, you can use the same IRI for a class and for an instance, for a property and an instance, or for a class and a property. In OWL 2 DL, the context always makes it clear whether the IRI is used as a class, a property or an instance. See Section 2.4.1 of OWL 2 New Features and Rationale.
Related
Are there any example ontologies where the same word has different meaning in different contexts?
For example, when building an ontology for a large company, it is not uncommon for different departments and systems to have a different definition and understanding of common words like "customer", "account", etc.
Is there a generally accepted way to model this in Protege that preserves the original words in their context, while also introducing a layer of disambiguating words for enterprise use?
This is a problem we encounter often in the biological community. I.e., the concept Eye is very dependent on the context, i.e. human eye vs fish vs spider eye etc. You can see a search for eye on the Ontology Lookup Service (OLS) and the results it return for eye from different ontologies. Disclosure: I am responsible for this tool.
Provide an IRI for your concept. This IRI should be similar to a surrogate key for your concept. I.e., instead of giving your Account concept an IRI like http://MyBusiness/someBusinessContex/Account you give it an IRI like http://MyBusiness/someBusinessContex/Context0000001. For the Eye concept the IRI for a human eye is http://purl.obolibrary.org/obo/NCIT_C12401 and for an insect it is http://purl.obolibrary.org/obo/SIBO_0000086.
I explain in this StackOverflow question the reason for using "surrogate keys".
Assign a context specific label and definition to your concept. You can use rdfs:label for label and rdfs:comment or skos:definition for definition.
You may find that you need alternatives for you concept. I.e. may be you refer to customers also as members. In this case you can use skos:altlabel to provide alternative names for your concept and skos:preflabel to define a preferred label.
So how does this work? For user interfaces you make use of rdfs:label/skos:preflabel and rdfs:comment/skos:definition for display purposes. From a data integration perspective you use the IRI.
A DICOM file (an artificial axial slice) has been generated from both a CT and an MR images. Can the aggregated file contain both CT and MR DICOM tags? E.g. Echo Time (0x18, 0x81) and KVP (0x18,0x60)?
I cannot find any information whether one image modality module is exclusive of the other and want to find out if such an artificial image might run into troubles with other vendors' software. Any help would be greatly appreciated.
The attribute SOP Class UID (0008,0016) determines which "type of object" you have and by this, the so-called Information Object Definition (IOD). The IOD tells you, which attributes are mandatory and which are allowed (and implicitly: which are not allowed) for the type of object.
So, merging attributes about the acquisition processes from two different IODs is not a good idea. What is going to fail widely is the annotation of these objects in a DICOM viewer. Most viewers have a SOP Class- or Modality- dependent configuration that defines how the images are annotated with DICOM header information. SOP Class UID and Modality have to provide exactly one value which cannot be entirely right in your case. So you have to decide whether another application treats the images as "CT only" or "MR only".
So, there is no way of merging IOD tables and still claiming DICOM conformance for the application that generates images of this type.
A lot of systems I know just treat the DICOM header as a "stream of attributes" not looking at correctness and consistency. As long as your pixel data and ordering information (Patient name, ID, ... , Study Instance UID, Series Instance UID) is properly encoded, it might happen that you will not run into severes issues.
However, I would never advise anyone to implement such thing. It is just a question of time when someone will validate your objects against the DICOM standard, find out that they are blatantly wrong and blaming no one else than you for that.
As explained by other, you are required to follow the DICOM standard. Basically you need to implement what is defined in the related IOD of your SOP Class instance.
Again as explained by other you are allowed to use a so-called 'Standard Extended SOP Class'. But be sure to read the definition for such class:
7.3 Rules Governing Types of SOP Classes
Quoting the paragraph:
Standard Extended SOP Classes shall:
be a proper super set of one Standard SOP Class;
not change the semantics of any Standard Attribute of that Standard SOP Class;
not contain any Private Type 1, 1C, 2, or 2C Attributes, nor add additional Standard Type 1, 1C, 2 or 2C Attributes;
not change any Standard Type 3 Attributes to Type 1, 1C, 2, or 2C;
use the same UID as the Standard SOP Class on which it is based.
So in summary no, you certainly cannot create an MR instance with a left over kVp (0018,0060) attribute, it cannot possibly mean anything for a MR modality in which case you are changing the semantics of a public attribute.
I am using OWLAPI for a project, and I need to compare two ontologies for differences between them. This would ignore blank nodes so that, for instance, I can determine whether the same OWL restrictions are in both ontologies. Not only do I need to know whether there are differences, but I need to find out what those differences are. does such functionality exist in the OWLAPI, oz is there a relatively simple way to do this?
The equality between anonymous class expressions is not based on the blank node ids - anonymous class expressions only have blank nodes in the textual output, in memory the ids are ignored. So checking if an axiom exists in an ontology will by default match expressions correctly for your diff.
This is not true for individuals - anonymous individuals will not be found to be the same across ontologies, and this is by specs. An anonymous individual in one ontology cannot be found in another, because the anonymous individual ids are scoped to the containing ontology.
Note: the unit tests for OWLAPI have to carry out a very similar task, to verify that an ontology can be parsed, written and parsed again without change (i.e., roundtripped between input syntax and output syntax), so there is code that you can look at to take inspiration. See TestBase.java - equal() method for more details. This includes code to deal with different ids for anonymous individuals.
i have given scene in webGL of a pizza for example. Now i want to make the content in the scene semantic visible for maschines with a custom owl and rdf for example.
When i make a owl ontologie with protege can i just use this ontology like here
https://support.google.com/webmasters/answer/146898 and instead of linking to
http://rdf.data-vocabulary.org/# i link to my own ontology and use my properties, tags etc. ?
WebGL is an API. Any data is outside the scope of WebGL. There is nothing to markup or add any ontology to.
Maybe you're looking for something like X3DOM?
I want to create a web application based on semantic web. The knowledge base is an ontology. My problem is that my application have to supports two languages (English and Romanian). In this moment the only solution that I have is to create two different ontologies (with the same values only translated) but I think is possible to create one that supports this two languages.
So I want to found the way to do these things in Protege.
Can you help me with any ideas?
Thanks (sorry for my bad English)
It depends what you mean by a bilingual ontology. If you want to have an ontology in which the concepts can be presented to both an English reader and a Romanian reader, but there's only one base set of concepts, then it's fairly easy. The identity of the concept is expressed as a URI, for example:
<http://example.com/ontology/animals/Dog> a owl:Class .
There's only one concept denoting dogs, but you add labels and comments that will allow the class to be presented to users in either language:
<http://example.com/ontology/animals/Doc>
a owl:Class ;
rdfs:label "dog"#en ;
rdfs:label "câine"#ro ;
rdfs:comment "Denotes the class of all dogs"#en ;
rdfs:comment "Denotă clasa tuturor câinilor"#ro .
Apologies for the Romanian - it was from Google Translate. I hope it makes sense! I don't use Protege, but you should be able to add labels and comments in multiple languages - it's a basic facility in RDF.
If, on the other hand, you want to have one ontology that contains concepts drawn from both languages, that can be harder. I don't know Romanian (see above!), so I don't know if this is the case or not, but some languages conceptualise the world in quite different ways, so defining a single ontology that merges concepts from both world-views can be difficult. It's also the case that, while RDF and OWL use UTF-8 as their base encoding, you may find some tools that aren't comfortable processing URI's that contain characters outside of US ASCII. That shouldn't be the case in theory, but you might want to be careful just in case.