-
Notifications
You must be signed in to change notification settings - Fork 0
Description
It seems to me as if the TTL version (or maybe all LD versions) of the LAPPS vocabulary could use some refactoring.
My understanding is that these should represent a schema (based on OWL and/or RDFS). As such, the LAPPS types would be classes (rdfs:class
or owl:class
) and their attributes should be properties (rdfs:Property
, owl:DatatypeProperty
or owl:ObjectProperty
).
Let's take http://vocab.lappsgrid.org/Token
as an example. The current TTL file says:
<http://vocab.lappsgrid.org/Token>
a owl:Class , rdfs:Class , rdfs:Resource ;
rdfs:comment "A string of one or more characters that serves as an indivisible unit for the purposes of morpho-syntactic labeling (part of speech tagging)." ;
rdfs:subClassOf <http://vocab.lappsgrid.org/Region> , <http://vocab.lappsgrid.org/Token> , <http://vocab.lappsgrid.org/Annotation> , <http://vocab.lappsgrid.org/Thing> ;
<http://vocab.lappsgrid.org/Token#pos>
"String or URI" .
<http://vocab.lappsgrid.org/Token#pos>
a owl:DatatypeProperty ;
rdfs:comment "Part-of-speech tag associated with the token." .
The inheritance information is highly redundant. The triple <http://vocab.lappsgrid.org/Token> <http://vocab.lappsgrid.org/Token#pos> "String or URI"
does not express in RDFS or OWL that Token has an attribute called pos which can take a String or URI.
I believe a better representation would be e.g.
<http://vocab.lappsgrid.org/Token>
a owl:Class ;
rdfs:comment "A string of one or more characters that serves as an indivisible unit for the purposes of morpho-syntactic labeling (part of speech tagging)." ;
rdfs:subClassOf <http://vocab.lappsgrid.org/Region> ;
<http://vocab.lappsgrid.org/Token#pos>
a owl:DatatypeProperty ;
rdfs:comment "Part-of-speech tag associated with the token." ;
rdfs:domain <http://vocab.lappsgrid.org/Token> ;
rdfs:range xsd:string .
I removed the (inferred) redundant information from the a
and rdfs:cubClassOf
statements and rendered the value type information as rdfs:range
.
However, there is still a little problem here: it does not express that the range can be a "String or URI" - specifying multiple types as range indicates an intersection of the types (which would be empty in this case), not a disjunction. That is why I only put the "more generic" type xsd:string
here.