Skip to content

Commit

Permalink
Merge pull request #17 from emmo-repo/cif-data-v4
Browse files Browse the repository at this point in the history
Latest working CIF ontology based on the work done in #16.

It implements a software tool to convert CIF -> OWL (TTL).
As well as the latest use of the tool to generate the CIF Core
dictionary as an OWL (TTL) ontology.

It also encompasses the latest changes to the CIF top ontology.
  • Loading branch information
CasperWA authored Apr 9, 2021
2 parents 93d8c37 + abd217f commit ee942d3
Show file tree
Hide file tree
Showing 9 changed files with 1,296 additions and 98 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci_emmocheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ jobs:
- name: Check EMMO
run: |
emmocheck --verbose crystallography.ttl
emmocheck --verbose --skip test_class_label cif_top.ttl
#emmocheck --verbose crystallography.ttl
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
*~
old

ddl.dic
cif_core.dic
templ_attr.cif
templ_enum.cif

cif_core.ttl
9 changes: 7 additions & 2 deletions catalog-v001.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<catalog prefer="public" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group id="Folder Repository, directory=, recursive=true, Auto-Update=false, version=2" prefer="public" xml:base="">
<uri name="http://emmo.info/crystallography/0.0.1/crystallography" uri="./crystallography.ttl"/>
<uri name="http://emmo.info/emmo-inferred/1.0.0-beta" uri="https://emmo-repo.github.io/versions/1.0.0-beta/emmo-inferred.ttl"/>
<uri name="http://emmo.info/domain-crystallography/cif_top" uri="cif_top.ttl"/>
<uri name="http://emmo.info/domain-crystallography/0.0.1/cif_top" uri="cif_top.ttl"/>
<uri name="http://emmo.info/domain-crystallography/0.0.1/cif_core" uri="cif_core.ttl"/>
<uri name="http://emmo.info/domain-crystallography/0.0.1/cif_example" uri="cif_example.ttl"/>
<uri name="http://emmo.info/domain-crystallography/0.0.1/crystallography" uri="crystallography.ttl"/>
<uri name="https://raw.githubusercontent.com/emmo-repo/emmo-repo.github.io/master/versions/1.0.0-beta/emmo-inferred-chemistry/1.0.0-beta"
uri="https://raw.githubusercontent.com/emmo-repo/emmo-repo.github.io/master/versions/1.0.0-beta/emmo-inferred-chemistry2.ttl"/>
</group>
</catalog>
245 changes: 245 additions & 0 deletions cif.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
@prefix : <http://emmo.info/emmo/cif#> .
@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#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@base <http://emmo.info/emmo/cif> .

<http://emmo.info/emmo/cif> rdf:type owl:Ontology ;
owl:versionIRI <http://emmo.info/emmo/cif/0.0.1> ;
<http://purl.org/dc/terms/abstract> "Part of the crystallography domain ontology implementing CIF 2.0 core dictionary as a formal language."@en ;
<http://purl.org/dc/terms/license> "https://creativecommons.org/licenses/by/4.0/legalcode" .

#################################################################
# Annotation properties
#################################################################

### http://emmo.info/emmo/cif#_name
:_name rdf:type owl:AnnotationProperty ;
rdfs:comment "Name associated with a data item."@en ;
rdfs:subPropertyOf skos:prefLabel ;
rdfs:range xsd:string ;
rdfs:domain <http://emmo.info/emmo/_type> .


### http://emmo.info/emmo/cif#_unit
:_unit rdf:type owl:AnnotationProperty ;
rdfs:comment "Unit accociated to a data item."@en ;
rdfs:range xsd:string ;
rdfs:domain <http://emmo.info/emmo/_type> .


### http://emmo.info/emmo/cif#example
:example rdf:type owl:AnnotationProperty ;
rdfs:comment "Illustrative example of how the entity is used."@en ;
rdfs:subPropertyOf rdfs:comment .


### http://purl.org/dc/terms/abstract
<http://purl.org/dc/terms/abstract> rdf:type owl:AnnotationProperty .


### http://purl.org/dc/terms/license
<http://purl.org/dc/terms/license> rdf:type owl:AnnotationProperty .


### http://www.w3.org/2004/02/skos/core#altLabel
skos:altLabel rdf:type owl:AnnotationProperty ;
rdfs:subPropertyOf rdfs:label .


### http://www.w3.org/2004/02/skos/core#prefLabel
skos:prefLabel rdf:type owl:AnnotationProperty ;
rdfs:subPropertyOf rdfs:label .


#################################################################
# Object Properties
#################################################################

### http://emmo.info/emmo/cif#hasSpatialDirectPart
:hasSpatialDirectPart rdf:type owl:ObjectProperty ;
rdfs:subPropertyOf :hasSpatialPart ;
rdf:type owl:InverseFunctionalProperty ,
owl:AsymmetricProperty ,
owl:IrreflexiveProperty ;
rdfs:comment "A non-transitive spatial part."@en ,
"Direct parthood was first introduced in the European Materials & Modelling Ontology (EMMO). It allows to introduce a hierarchy of well-defined levels of granularity."@en .


### http://emmo.info/emmo/cif#hasSpatialPart
:hasSpatialPart rdf:type owl:ObjectProperty ,
owl:InverseFunctionalProperty ,
owl:AsymmetricProperty ,
owl:TransitiveProperty ,
owl:IrreflexiveProperty ;
rdfs:comment "A part of a whole."@en ,
"In a 4D mereology, 'hasSpatialPart' is a relation that isolates a proper part that extends itself in time within the overall lifetime of the whole, without covering the full spatial extension of the 4D whole (i.e. is not a temporal part)."@en .


#################################################################
# Data properties
#################################################################

### http://emmo.info/emmo/cif#hasFloatData
:hasFloatData rdf:type owl:DatatypeProperty ;
rdfs:subPropertyOf owl:topDataProperty ;
rdfs:domain :_numb ;
rdfs:range xsd:double .


### http://emmo.info/emmo/cif#hasSymbolData
:hasSymbolData rdf:type owl:DatatypeProperty ;
rdfs:subPropertyOf owl:topDataProperty ;
rdfs:domain :_char ;
rdfs:range xsd:string .


### http://emmo.info/emmo/cif#hasUncertaintyData
:hasUncertaintyData rdf:type owl:DatatypeProperty ;
rdfs:subPropertyOf :hasFloatData ;
rdfs:comment "Optional uncertainty associated to a CIF numb data type."@en .


#################################################################
# Classes
#################################################################

### http://emmo.info/emmo/cif#CATEGORY
:CATEGORY rdf:type owl:Class ;
rdfs:subClassOf :DDL_CONCEPT ;
rdfs:comment "A classification of tables and its parts."@en ;
skos:prefLabel "CATEGORY"@en .


### http://emmo.info/emmo/cif#CIF
:CIF rdf:type owl:Class ;
rdfs:comment "the class of all data represented using the CIF dictionaries."@en ;
skos:prefLabel "CIF"@en .


### http://emmo.info/emmo/cif#CIF_DATA
:CIF_DATA rdf:type owl:Class ;
rdfs:subClassOf :CIF ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasSpatialDirectPart ;
owl:someValuesFrom :CIF_DATA_BLOCK
] ;
rdfs:comment "A class representing the content of a CIF file."@en ;
skos:prefLabel "CIF_DATA"@en .


### http://emmo.info/emmo/cif#CIF_DATA_BLOCK
:CIF_DATA_BLOCK rdf:type owl:Class ;
rdfs:subClassOf :CIF ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasSpatialDirectPart ;
owl:someValuesFrom :TABLE
] ;
rdfs:comment "A class representing a data block in a CIF file."@en ;
skos:prefLabel "CIF_DATA_BLOCK"@en .


### http://emmo.info/emmo/cif#COLUMN
:COLUMN rdf:type owl:Class ;
rdfs:subClassOf :DATA_ITEMS ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasSpatialDirectPart ;
owl:someValuesFrom :_type
] .


### http://emmo.info/emmo/cif#DATA_ITEMS
:DATA_ITEMS rdf:type owl:Class ;
rdfs:subClassOf :DDL_CONCEPT ;
rdfs:comment "A row, column or function in a table."@en ;
skos:prefLabel "DATA_ITEMS"@en .


### http://emmo.info/emmo/cif#DDL_CONCEPT
:DDL_CONCEPT rdf:type owl:Class ;
rdfs:subClassOf :CIF ;
rdfs:comment "The class of concepts defined in the dictionary definition language."@en ;
skos:prefLabel "DDL_CONCEPT"@en .


### http://emmo.info/emmo/cif#FUNCTION
:FUNCTION rdf:type owl:Class ;
rdfs:subClassOf :DATA_ITEMS .


### http://emmo.info/emmo/cif#ROW
:ROW rdf:type owl:Class ;
rdfs:subClassOf :DATA_ITEMS ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasSpatialDirectPart ;
owl:someValuesFrom :_type
] ;
rdfs:comment "Represents a single row in a table with data items as direct parts."@en .


### http://emmo.info/emmo/cif#TABLE
:TABLE rdf:type owl:Class ;
rdfs:subClassOf :DDL_CONCEPT ,
[ rdf:type owl:Restriction ;
owl:onProperty :hasSpatialDirectPart ;
owl:someValuesFrom :ROW
] ;
:example """Syntactically a table instance in a CIF file may be written as
loop_
_space_group_symop_id
_space_group_symop_operation_xyz
1 x,y,z
2 -x,-y,-z
3 -x,1/2+y,1/2-z
4 x,1/2-y,1/2+z
but the actual TABLE instance is just the data rows:
1 x,y,z
2 -x,-y,-z
3 -x,1/2+y,1/2-z
4 x,1/2-y,1/2+z"""@en ;
rdfs:comment "Represent a table with rows as spatial direct parts."@en ,
"The syntax of individual tables starts with the 'loop_' keyword followed by the name of the data items and then the actual data."@en ;
skos:prefLabel "TABLE"@en .


### http://emmo.info/emmo/cif#_char
:_char rdf:type owl:Class ;
rdfs:subClassOf :_type ;
skos:prefLabel "A symbolic data type whos individuals are strings."@en ,
"char"@en .


### http://emmo.info/emmo/cif#_null
:_null rdf:type owl:Class ;
rdfs:subClassOf :_type ;
skos:prefLabel "null"@en .


### http://emmo.info/emmo/cif#_numb
:_numb rdf:type owl:Class ;
rdfs:subClassOf :_type ;
rdfs:comment "A floating point data type with an optional associated uncertainty."@en ;
skos:prefLabel "numb"@en .


### http://emmo.info/emmo/cif#_type
:_type rdf:type owl:Class ;
rdfs:subClassOf :DDL_CONCEPT ;
rdfs:comment "Data items correspond to a type. Its individuals are the actual data strings or numbers."@en ;
skos:prefLabel "DATA_ITEM"@en .


### http://emmo.info/emmo/cif#enumeration
:enumeration rdf:type owl:Class ;
rdfs:subClassOf :_char ;
rdfs:comment "A subclass of `char` whos individuals is one of a limited set of pre-defined strings."@en ;
skos:prefLabel "enumeration"@en .


### Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi
Loading

0 comments on commit ee942d3

Please sign in to comment.