Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not use anonymous classes #65

Open
azaroth42 opened this issue Apr 1, 2019 · 7 comments
Open

Do not use anonymous classes #65

azaroth42 opened this issue Apr 1, 2019 · 7 comments
Labels
Category: usage For issues around RDF usage in practice

Comments

@azaroth42
Copy link

azaroth42 commented Apr 1, 2019

From #50 ...

Anonymous classes (e.g. a blank node as the object of rdf:type) are complicated to consume and mix ontological layers. The instance shouldn't manage its own class, in an easier to use and understand profile of RDF.

Update: This should only be considered as applying to instance data, not ontology definition. Or only to ABox data, not TBox. Thus owl:Restriction classes can still be bnodes, as they're at the ABox layer.

@VladimirAlexiev
Copy link

Quite agree but owl:Restrictions are usually used with blank nodes.
Does it follow these are not nice/useful, or can you propose some better way of using them?

@dbooth-boston
Copy link
Collaborator

IMO owl:Restrictions -- at least for newcomer / middle 33% use -- are too confusing to be read in Turtle. If they are expressed in a higher-level form, such as Manchester Syntax, they are much more palatable and understandable. But in the higher-level form, the anonymous class is not visible at all. In other words, owl:Restrictions could still be used without having any visible anonymous classes.

Also, I am not even convinced that owl:Restrictions -- even using Manchester syntax -- are appropriate for newcomer / middle-33% use anyway. I think closed-world domain, range and property declaration are much more appropriate for this target audience, and we have not yet devised good standard ways to declare those, though ShEx and SHACL are a step in that direction.

@dbooth-boston dbooth-boston added the Category: usage For issues around RDF usage in practice label Apr 3, 2019
@azaroth42
Copy link
Author

I'm fine with anonymous classes like owl:Restriction as a bnode. Will update the issue to clarify that this only refers to instance data, or ABox if you prefer that terminology.

@dbooth-boston
Copy link
Collaborator

@azaroth42 , can you clarify with an example perhaps? I would normally consider classes to be in the Tbox, so I'm not sure what usage you are envisioning.

@rivettp
Copy link

rivettp commented Apr 4, 2019

Even with true ABox instance data, blank nodes can be very practically useful for representing structured values (where the value has its own properties) where you don't want the hassle, and potential for accidental collisions, from coining a URI for each value. For example a geographic point (having properties for latitude and longitude).
And it's also a strong signal that you don't intend to maintain this value as a distinct resource that can be sensibly referenced by others.
From a syntactic angle, having the structure nested in place can also be a convenience.

@azaroth42
Copy link
Author

I think it should be part of the EasierRDF profile that the following pattern is not allowed:

{
  "@id": "https://example.org/some/instance",
  "@type": {"rdfs:subClassOf": "schema:Engineer", "rdfs:subClassOf": "schema:SoftwareDeveloper"},
  "rdfs:label": "Some Person"
}

e.g. a class defined in the instance data which is a blank node, that then has ontology level predicates to define itself.

@chiarcos
Copy link

chiarcos commented Mar 4, 2021

From #50 ...

Anonymous classes (e.g. a blank node as the object of rdf:type) are complicated to consume and mix ontological layers. The instance shouldn't manage its own class, in an easier to use and understand profile of RDF.

Update: This should only be considered as applying to instance data, not ontology definition. Or only to ABox data, not TBox. Thus owl:Restriction classes can still be bnodes, as they're at the ABox layer.

I presume that means
"Thus owl:Restriction classes can still be bnodes, as they're at the TBox layer."

We need anonymous classes also for logical operators (union and intersection). And we need to continue the Turtle representation because it defines how to access that froOWL classes in SPARQL. But restricting it as a recommendation of practice may be a reasonable thing to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: usage For issues around RDF usage in practice
Projects
None yet
Development

No branches or pull requests

5 participants