- From: David Booth <david@dbooth.org>
- Date: Tue, 05 May 2015 14:25:16 -0400
- To: public-owl-wg@w3.org
- CC: Eric Prud'hommeaux <eric@w3.org>, Anthony Mallia <amallia@edmondsci.com>
We are working on an RDF representation and ontology for FHIR (a new
healthcare data standard)
http://wiki.hl7.org/index.php?title=FHIR
and in some cases the most natural RDF to generate would involve blank
nodes for some nodes instead of URIs. However, we are noticing that
this is causing (at least some) OWL reasoners to fail to classify those
nodes as we would like. The problem goes away if we use a URI instead
of a blank node.
Is this an inherent feature of OWL reasoners or a limitation of specific
tools?
For example, in the turtle below, a DLQuery "hasSSN some xsd:string"
returns 1 instance: frankson. In contrast, a SPARQL query
prefix : <http://BlankNodeTest/>
SELECT ?subject ?object
WHERE { ?subject :hasSSN ?object }"
returns the desired 2 solutions. Notice the two children of :frank in
the following example Turtle:
[[
@prefix : <http://BlankNodeTest/> .
@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#> .
@base <http://BlankNodeTest> .
<http://BlankNodeTest> a owl:Ontology .
:hasChild a owl:AsymmetricProperty , owl:ObjectProperty .
:hasHairColor a owl:ObjectProperty ;
rdfs:range :HairColor .
# :hasSSN a owl:ObjectProperty .
:hasSSN a owl:DatatypeProperty .
:value a owl:DatatypeProperty .
:code a owl:Class .
:HairColor a owl:Class ; rdfs:subClassOf :code .
:BrownHaired a owl:Class ;
owl:equivalentClass [
a owl:Class ;
owl:intersectionOf (
:HairColor
[ owl:onProperty :value ; owl:hasValue "brown" ]
)
] ;
rdfs:subClassOf :HairColor .
:brown1 a :HairColor , owl:NamedIndividual ;
:value "brown" .
:Person a owl:Class .
:frank a :Person , owl:NamedIndividual ;
:hasChild
[
a :Person ;
:hasSSN "123-45-6789" ;
:hasHairColor [
a :HairColor ;
:value "brown"
]
], :frankson .
:frankson
a :Person ;
:hasSSN "123-45-6790" ;
:hasHairColor [
a :HairColor ;
:value "brown"
]
.
]]
Thanks,
David Booth
Received on Tuesday, 5 May 2015 18:25:48 UTC