[Nepomuk] RSS Ontology

Christian Mollekopf chrigi_1 at fastmail.fm
Thu Jan 31 17:04:51 UTC 2013


On Wednesday 30 January 2013 18.38:47 Daniel Vrátil wrote:
> On Tuesday 22 of January 2013 16:10:46 Daniel Vrátil wrote:
> > Hi folks,
> > 
> > I'm working on support for Nepomuk search in Akregator2. I have not found
> > any suitable ontology for indexing RSS articles, so I made an attempt to
> > write one myself.
> 
> Hi,
> 

Hey Dan,

> here's another version, with modifications as suggested by Joerg and
> Sebastian.
> 
> I've renamed the ontology to NRSS, because I found out that there's already
> Nepomuk Sharing Ontology  in SDO so the namespaces would conflict.
> 
> I can't use nie:url in nrss:Article, because that's already used by Nepomuk
> Feeder (links to original Akonadi Item), so I have to keep some other
> property - I use nrss:articleUrl as a nfo:Website. 

That is a misconception I think. Nothing can claim a property exlusively. The 
point is that a property has a certain meaning and that's what we stick to, so 
event if there was the need for a new property, you would exactly want to 
convey the meaning that it is also a nie:url and therefore make 
nrss:articleUrl a subproperty of nie:url. I don't think that this is useful 
though, so would just use nie:url.

I can recommend reading this:
http://www.semanticdesktop.org/ontologies/nie/

If you write a new ontology, you generally should try to make it as small as 
possible and use as many existing properties from nie and nfo (and possibly 
other related ones) as possible. And if you specify a new property if it makes 
any sense you should make it a subproperty of something existing.

The reason is, that I might i.e. store my rss articles in Files, or some 
custom database. nfo allows me to represent that and I can link from the feed 
my db object or my file.

If you used now your nrss:articleUrl, I could use your ontology only for rss 
feeds stored somewhere on the web, while my query really wouldn't care where 
they're stored, I just want to find all rss files related to some topic.

> I added
> nrss:enclosureUrl as nfo:WebDataObject, which if I understand correctly is
> better for data sources like streams, videos etc than nfo:Website. Does
> that make sense?
> 

That should probably be nfo:RemoteDataObject.

> Once you say it's OK, I'll try to put the ontology to kdepimlibs and
> generate a vocabulary class so that it can be used globally.
> 
> Cheers,
> Dan
> 
> 

I think this ontology is overspecified and doesn't reuse what's already there, 
or is there a reason for that? I think the primary (and possibly only) 
distinction between an rss feed and a document on my computer should be the 
toplevel type. Quite possible that I'm just searching for a document with some 
information, and I don't really care where it's coming from.

I quoted what I think could be removed, and added some comments for 
replacements. Maybe there's even more to remove ;-)

nrss: {
 
> nrss:Element a rdfs:Class ;
> rdfs:label "Feed Element" ;
> rdfs:comment "Superclass for all elements related to RSS feeds" ;
> rdfs:subClassOf nie:InformationElement .
#what's the additional value of this over nie:informationElement?
 
nrss:Feed a rdfs:Class ;
rdfs:comment "Represents an RSS Feed" ;
rdfs:label "RSS Feed" ;
rdfs:subClassOf nrss:Element .
#accordingly nie:Element here
 
> nrss:Article a rdfs:Class ;
> rdfs:label "RSS Article" ;
> rdfs:comment "Represents a single article within an RSS Feed" ;
> rdfs:subClassOf nrss:Element .
#nfo:TextDocument?
 
> nrss:Enclosure a rdfs:Class ;
> rdfs:label "RSS Enclosure" ;
> rdfs:subClassOf nrss:Element .
>  
> nrss:ImageEnclosure a rdfs:Class ;
> rdfs:label "RSS Image Enclosure" ;
> rdfs:subClassOf nrss:Enclosure .
>  
> nrss:VideoEnclosure a rdfs:Class ;
> rdfs:label "RSS Video Enclosure" ;
> rdfs:subClassOf nrss:Enclosure .
>  
> nrss:AudioEnclosure a rdfs:Class ;
> rdfs:label "RSS Audio Enclosure" ;
> rdfs:subClassOf nrss:Enclosure .
# nfo:attachment or maybe nie:hasPart and nfo:Audio

 
# Properties of nrss:Article
> Remove
> nrss:articleUrl a rdf:Property ;
> nrl:maxCardinality 1 ;
> rdfs:label "Article URL" ;
> rdfs:comment "URL of the article" ;
> rdfs:range nfo:Website ;
> rdfs:domain nrss:Element .
 
# change to nie:publicationDate once available
nrss:publishTime a rdf:Property ;
rdfs:label "Publish Time" ;
rdfs:comment "Date when the article was first published in the feed"
; rdfs:subPropertyOf dc:date ;
rdfs:range xsd:dateTime ;
rdfs:domain nrss:Article .
 
nrss:updateTime a rdf:Property ;
rdfs:label "Update Time" ;
rdfs:comment "Date when the article was last updated in the feed" ;
rdfs:subPropertyOf dc:date ;
rdfs:range xsd:dateTime ;
rdfs:domain nrss:Article .
 
> nrss:enclosure a rdf:Property ;
> rdfs:label "Enclosure" ;
> rdfs:comment "Enclosure related to the article" ;
> rdfs:range nrss:Enclosure ;
> rdfs:domain nrss:Article .
# nfo:Attachment?
 
nrss:isRead a rdf:Property ;
nrl:maxCardinality 1 ;
rdfs:label "Is Read" ;
rdfs:comment "A flag that state whether the item has been read" ;
rdfs:range xsd:boolean ;
rdfs:domain nrss:Article .
 
> # Properties of nrss:Enclosure
>  
> nrss:enclosureUrl a rdf:Property ;
> nrl:maxCardinality 1 ;
> rdfs:label "Enclosure URL" ;
> rdfs:comment "URL of the enclosure object" ;
> rdfs:range nfo:WebDataObject ;
> rdfs:domain nrss:Enclosure .
}
 
<http://www.kde.org/ontologies/nrss_metadata#> {
<http://www.kde.org/ontologies/nrss_metadata#> a nrl:GraphMetadata ;
nrl:coreGraphMetadataFor nrss: .
 
nrss:  a nrl:Ontology ;
nao:hasDefaultNamespace "http://www.kde.org/ontologies/nrss#" ;
nao:hasDefaultNamespaceAbbreviation "nrss" ;
nao:lastModified "2013-01-30T17:30:45.656Z" ;
nao:serializationLanguage "TriG" ;
nao:status "Unstable" ;
nao:updatable "0 " ;
nao:version "2" ;
nao:prefLabel "Nepomuk RSS Ontology" ;
nao:description "The Nepomuk RSS Ontology extends the Nepomuk
Information Element framework into the domain of RSS" .
}

Cheers,
Christian


More information about the Nepomuk mailing list