Select Git revision
Rewrites.jrag
Rewrites.jrag 5.81 KiB
/* -*-Java-*- */
/*
* Copyright (C) 2006 Anders Nilsson <anders.nilsson@cs.lth.se>
*
* This file is part of OntologyCompiler.
*/
aspect MiscUtilities {
boolean Element.isTopLevel() {
if ( getParent() != null ) {
return getParent().getParent() instanceof RdfDeclaration;
} else {
return false;
}
}
syn lazy String Attribute.trim() {
String s = getValue().getSTRING_LITERAL();
if (s.indexOf('"') == 0) {
s = s.substring(1,s.length()-1).trim();
}
if (s.indexOf('#') > -1) {
s = s.substring(s.indexOf('#')+1,s.length()).trim();
}
return s.trim();
}
eq RdfResource.trim() {
String s = getValue().getSTRING_LITERAL();
if (s.indexOf('"') == 0) {
s = s.substring(1,s.length()-1).trim();
}
if (s.indexOf('#') > -1) {
s = s.substring(s.indexOf('#')+1,s.length()).trim();
}
if (s.equals("string")) {
s = "String";
}
return s.trim();
}
boolean ComplexElement.hasRdfId() {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfId) {
return true;
}
}
return false;
}
boolean ComplexElement.hasRdfAbout() {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfAbout) {
return true;
}
}
return false;
}
boolean ComplexElement.hasRdfResource() {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfResource) {
return true;
}
}
return false;
}
syn lazy String Element.getId() {
return new String("Element has no ID");
}
eq ComplexElement.getId() {
if (hasRdfId()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfId) {
return getAttribute(i).trim();
}
}
} else if (hasRdfAbout()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfAbout) {
return getAttribute(i).trim();
}
}
} else if (hasRdfResource()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfResource) {
return getAttribute(i).trim();
}
}
}
// Fall through. Could not find Id, so let's return something
// well known
return "_Unknown_";
}
eq OwlValuesFrom.getId() {
if (hasRdfAbout()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfAbout) {
return getAttribute(i).trim();
}
}
} else if (hasRdfResource()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfResource) {
return getAttribute(i).trim();
}
}
} else {
for (int i=0; i<getNumElement(); i++) {
ComplexElement e = (ComplexElement) getElement(i);
if (e instanceof OClass) {
return e.getId();
}
}
}
// Fall through. Could not find Id, so let's return something
// well known
return "_Unknown_";
}
eq OwlProperty.getId() {
if (hasRdfId()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfId) {
return getAttribute(i).trim();
}
}
} else if (hasRdfAbout()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfAbout) {
return getAttribute(i).trim();
}
}
} else if (hasRdfResource()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfResource) {
return getAttribute(i).trim();
}
}
} else {
for (int i=0; i<getNumElement(); i++) {
ComplexElement e = (ComplexElement) getElement(i);
if (e instanceof OwlProperty) {
return e.getId();
}
}
}
// Fall through. Could not find Id, so let's return something
// well known
return "_Unknown_";
}
syn lazy String Element.type() = null;
eq RdfsRange.type() {
if (hasRdfResource()) {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfResource) {
return getAttribute(i).trim();
}
}
}
for (int i=0; i<getNumElement(); i++) {
String s = getElement(i).type();
if (s != null) {
return s;
}
}
// Fall through. Could not find Id, so let's return something
// well known
return "_Unknown_";
}
eq OwlDataRange.type() {
for (int i=0; i<getNumElement(); i++) {
String s = getElement(i).type();
if (s != null) {
return s;
}
}
return null;
}
eq OwlOneOf.type() {
for (int i=0; i<getNumElement(); i++) {
String s = getElement(i).type();
if (s != null) {
return s;
}
}
return null;
}
eq RdfFirst.type() {
for (int i=0; i<getNumAttribute(); i++) {
if (getAttribute(i) instanceof RdfDatatype) {
return getAttribute(i).trim();
}
}
return null;
}
ComplexElement ComplexElement.getTopElement() {
ASTNode e = this;
while (e != null && !(e instanceof RdfDeclaration)) {
e = e.getParent();
}
return (ComplexElement) e;
}
}
aspect RewriteClasses {
rewrite OwlClass {
when (isTopLevel())
to OwlClassDecl {
return new OwlClassDecl(new List(), getElementList(), getId());
}
when (!isTopLevel())
to OwlClassUse {
return new OwlClassUse(new List(), getElementList(), getId());
}
}
rewrite RdfsSubClassOf {
when (getNumAttribute()>0 && getAttribute(0) instanceof RdfResource)
to RdfsSubClassOf {
Value value = getAttribute(0).getValue();
OwlClass oc = new OwlClass(new List().add(new RdfAbout(value)),
new List());
return new RdfsSubClassOf(new List(),
new List().add(oc));
}
}
rewrite RdfsDomain {
when (getNumAttribute()>0 && getAttribute(0) instanceof RdfResource)
to RdfsDomain {
Value value = getAttribute(0).getValue();
OwlClass oc = new OwlClass(new List().add(new RdfAbout(value)),
new List());
return new RdfsDomain(new List(),
new List().add(oc));
}
}
rewrite OwlClassDecl {
when (getId().contains("-"))
to OwlClassDecl {
setId(getId().replaceAll("-","_"));
return this;
}
}
}