I am searching for the method/tool/syntax to query annotations in an RDF/OWL ontology.
The query engines I have found search classes, properties, individuals, but I have not found one that will search based on the value for example开发者_StackOverflow中文版 DC:Description
With SPARQL, you should be able to query annotations via the properties you're interested in, for example:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?x ?desc {
?x dc:description ?desc .
}
This method could also be used to retrieve all instances with a particular annotation value, such as:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?x {
?x dc:description "some description string" .
}
Or, you could even try to match based on some REGEX:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?x {
?x dc:description ?desc .
FILTER REGEX(STR(?desc), "^Some regex") .
}
If you are after a programmtic tool and the ontology is OWL you can use the Manchester OWL API:
OWLClass classA = factory.getOWLClass(IRI.create("http://your/url/here#ClassA"));
OWLAnnotationProperty dcProperty = factory.getOWLAnnotationProperty(IRI.create("http://purl.org/dc/elements/1.1/description"));
for (OWLAnnotation annotation : classA.getAnnotations(ontology, dcProperty)) {
OWLLiteral literal = (OWLLiteral) annotation.getValue();
String literalString = literal.getLiteral()
}
That will get you the value of that particular property. "factory" here is an instance of OWLDataFactory.
Hope that helps a little!
精彩评论