📄 daml_oilprofile.java
字号:
public Property MAX_CARDINALITY() { return m_maxCardinality; }
public Property CARDINALITY() { return m_cardinality; }
public Property INVERSE_OF() { return m_inverseOf; }
public Property IMPORTS() { return m_imports; }
public Property PRIOR_VERSION() { return m_priorVersion; }
public Property BACKWARD_COMPATIBLE_WITH() { return m_backwardsCompatibleWith; }
public Property INCOMPATIBLE_WITH() { return m_incompatibleWith; }
public Property SUB_CLASS_OF() { return m_subClassOf; }
public Property SUB_PROPERTY_OF() { return m_subPropertyOf; }
public Property DOMAIN() { return m_domain; }
public Property RANGE() { return m_range; }
public Property FIRST() { return m_first; }
public Property REST() { return m_rest; }
public Property MIN_CARDINALITY_Q() { return m_minCardinalityQ; }
public Property MAX_CARDINALITY_Q() { return m_maxCardinalityQ; }
public Property CARDINALITY_Q() { return m_cardinalityQ; }
public Property HAS_CLASS_Q() { return m_hasClassQ; }
// Annotations
public Property VERSION_INFO() { return m_versionInfo; }
public Property LABEL() { return RDFS.label; }
public Property COMMENT() { return RDFS.comment; }
public Property SEE_ALSO() { return RDFS.seeAlso; }
public Property IS_DEFINED_BY() { return RDFS.isDefinedBy; }
protected Resource[][] aliasTable() {
return new Resource[][] {
{DAML_OIL.subClassOf, RDFS.subClassOf},
{DAML_OIL.Literal, RDFS.Literal},
{DAML_OIL.Property, RDF.Property},
{DAML_OIL.type, RDF.type},
{DAML_OIL.value, RDF.value},
{DAML_OIL.subPropertyOf, RDFS.subPropertyOf},
{DAML_OIL.domain, RDFS.domain},
{DAML_OIL.range, RDFS.range},
{DAML_OIL.label, RDFS.label},
{DAML_OIL.comment, RDFS.comment},
{DAML_OIL.seeAlso, RDFS.seeAlso},
{DAML_OIL.isDefinedBy, RDFS.isDefinedBy},
};
}
/** There are no first-class axioms in DAML */
public Iterator getAxiomTypes() {
return Arrays.asList(
new Resource[] {
}
).iterator();
}
/** The annotation properties of DAML (currently none) */
public Iterator getAnnotationProperties() {
return Arrays.asList(
new Resource[] {
}
).iterator();
}
public Iterator getClassDescriptionTypes() {
return Arrays.asList(
new Resource[] {
DAML_OIL.Class,
DAML_OIL.Restriction
}
).iterator();
}
/**
* <p>
* Answer true if the given graph supports a view of this node as the given
* language element, according to the semantic constraints of the profile.
* If strict checking on the ontology model is turned off, this check is
* skipped.
* </p>
*
* @param n A node to test
* @param g The enhanced graph containing <code>n</code>, which is assumed to
* be an {@link OntModel}.
* @param type A class indicating the facet that we are testing against.
* @return True if strict checking is off, or if <code>n</code> can be
* viewed according to the facet resource <code>res</code>
*/
public boolean isSupported( Node n, EnhGraph g, Class type ) {
if (g instanceof OntModel) {
OntModel m = (OntModel) g;
if (type == null) {
// if the facet resource is null, the facet is not in this profile so
// we automatically return false;
return false;
}
else if (!m.strictMode()) {
// checking turned off
return true;
}
else {
// lookup the profile check for this resource
SupportsCheck check = (SupportsCheck) s_supportsChecks.get( type );
return (check == null) || check.doCheck( n, g );
}
}
else {
return false;
}
}
/**
* <p>
* Answer a descriptive string for this profile, for use in debugging and other output.
* </p>
* @return "DAML+OIL"
*/
public String getLabel() {
return "DAML+OIL";
}
// Internal implementation methods
//////////////////////////////////
//==============================================================================
// Inner class definitions
//==============================================================================
/** Helper class for doing syntactic/semantic checks on a node */
protected static class SupportsCheck
{
public boolean doCheck( Node n, EnhGraph g ) {
return true;
}
}
// Table of check data
//////////////////////
private static Object[][] s_supportsCheckTable = new Object[][] {
// Resource (key), check method
{ OntClass.class, new SupportsCheck() {
public boolean doCheck( Node n, EnhGraph g ) {
return g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.Class.asNode() ) ||
g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.Restriction.asNode() ) ||
g.asGraph().contains( n, RDF.type.asNode(), RDFS.Class.asNode() ) ||
// common cases we should support
n.equals( DAML_OIL.Thing.asNode() ) ||
n.equals( DAML_OIL.Nothing.asNode() ) ||
g.asGraph().contains( Node.ANY, RDFS.domain.asNode(), n ) ||
g.asGraph().contains( Node.ANY, RDFS.range.asNode(), n )
;
}
}
},
{ DatatypeProperty.class, new SupportsCheck() {
public boolean doCheck( Node n, EnhGraph g ) {
return g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.DatatypeProperty.asNode() );
}
}
},
{ ObjectProperty.class, new SupportsCheck() {
public boolean doCheck( Node n, EnhGraph g ) {
return g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.ObjectProperty.asNode() ) ||
g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.TransitiveProperty.asNode() ) ||
g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.UnambiguousProperty.asNode() );
}
}
},
{ FunctionalProperty.class, new SupportsCheck() {
public boolean doCheck( Node n, EnhGraph g ) {
// DAML's alias for functional property is uniqueProperty
return g.asGraph().contains( n, RDF.type.asNode(), DAML_OIL.UniqueProperty.asNode() );
}
}
},
{ InverseFunctionalProperty.class, new SupportsCheck() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -